2
SET @@session.storage_engine = 'MyISAM';
4
#------------------------------------------------------------------------
5
# 0. Setting of auxiliary variables + Creation of an auxiliary tables
6
# needed in many testcases
7
#------------------------------------------------------------------------
8
SELECT @max_row DIV 2 INTO @max_row_div2;
9
SELECT @max_row DIV 3 INTO @max_row_div3;
10
SELECT @max_row DIV 4 INTO @max_row_div4;
11
SET @max_int_4 = 2147483647;
12
DROP TABLE IF EXISTS t0_template;
13
CREATE TABLE t0_template (
18
f_charbig VARCHAR(1000) ,
21
# Logging of <max_row> INSERTs into t0_template suppressed
22
DROP TABLE IF EXISTS t0_definition;
23
CREATE TABLE t0_definition (
25
create_command VARBINARY(5000),
26
file_list VARBINARY(10000),
29
DROP TABLE IF EXISTS t0_aux;
30
CREATE TABLE t0_aux ( f_int1 INTEGER,
34
f_charbig VARCHAR(1000) )
37
SET @@session.sql_mode= '';
38
# End of basic preparations needed for all tests
39
#-----------------------------------------------
41
#========================================================================
42
# 1 Increase the size of the column used in the partitioning
43
# function and/or PRIMARY KEY and/or UNIQUE INDEX
44
#========================================================================
45
#------------------------------------------------------------------------
46
# 1.1 ALTER column f_int2 not used in partitioning function
47
#------------------------------------------------------------------------
48
# 1.1.1 no PRIMARY KEY or UNIQUE INDEX exists
49
DROP TABLE IF EXISTS t1;
55
f_charbig VARCHAR(1000)
58
PARTITION BY HASH(f_int1) PARTITIONS 2;
59
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
60
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
61
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
62
ALTER TABLE t1 MODIFY f_int2 BIGINT;
63
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
64
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
65
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
66
# Start usability test (inc/partition_check.inc)
70
t1 CREATE TABLE `t1` (
71
`f_int1` int(11) DEFAULT NULL,
72
`f_int2` bigint(20) DEFAULT NULL,
73
`f_char1` char(20) DEFAULT NULL,
74
`f_char2` char(20) DEFAULT NULL,
75
`f_charbig` varchar(1000) DEFAULT NULL
76
) ENGINE=MyISAM DEFAULT CHARSET=latin1
77
/*!50100 PARTITION BY HASH (f_int1)
88
# check prerequisites-1 success: 1
89
# check COUNT(*) success: 1
90
# check MIN/MAX(f_int1) success: 1
91
# check MIN/MAX(f_int2) success: 1
92
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
93
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
94
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
95
WHERE f_int1 IN (2,3);
96
# check prerequisites-3 success: 1
97
DELETE FROM t1 WHERE f_charbig = 'delete me';
98
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
99
# check read via f_int1 success: 1
100
# check read via f_int2 success: 1
102
# check multiple-1 success: 1
103
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
105
# check multiple-2 success: 1
106
INSERT INTO t1 SELECT * FROM t0_template
107
WHERE MOD(f_int1,3) = 0;
109
# check multiple-3 success: 1
110
UPDATE t1 SET f_int1 = f_int1 + @max_row
111
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
112
AND @max_row_div2 + @max_row_div4;
114
# check multiple-4 success: 1
116
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
117
AND @max_row_div2 + @max_row_div4 + @max_row;
119
# check multiple-5 success: 1
120
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
122
SET f_int1 = @cur_value , f_int2 = @cur_value,
123
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
124
f_charbig = '#SINGLE#';
126
# check single-1 success: 1
127
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
129
SET f_int1 = @cur_value , f_int2 = @cur_value,
130
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
131
f_charbig = '#SINGLE#';
133
# check single-2 success: 1
134
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
135
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
136
UPDATE t1 SET f_int1 = @cur_value2
137
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
139
# check single-3 success: 1
141
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
142
UPDATE t1 SET f_int1 = @cur_value1
143
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
145
# check single-4 success: 1
146
SELECT MAX(f_int1) INTO @cur_value FROM t1;
147
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
149
# check single-5 success: 1
150
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
152
# check single-6 success: 1
153
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
155
# check single-7 success: 1
156
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
157
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
158
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
159
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
160
f_charbig = '#NULL#';
162
SET f_int1 = NULL , f_int2 = -@max_row,
163
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
164
f_charbig = '#NULL#';
165
# check null success: 1
167
# check null-1 success: 1
168
UPDATE t1 SET f_int1 = -@max_row
169
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
170
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
172
# check null-2 success: 1
173
UPDATE t1 SET f_int1 = NULL
174
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
175
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
177
# check null-3 success: 1
179
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
180
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
182
# check null-4 success: 1
184
WHERE f_int1 = 0 AND f_int2 = 0
185
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
186
AND f_charbig = '#NULL#';
188
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
189
SELECT f_int1, f_int1, '', '', 'was inserted'
190
FROM t0_template source_tab
191
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
193
# check transactions-1 success: 1
196
# check transactions-2 success: 1
199
# check transactions-3 success: 1
200
DELETE FROM t1 WHERE f_charbig = 'was inserted';
204
# check transactions-4 success: 1
205
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
206
SELECT f_int1, f_int1, '', '', 'was inserted'
207
FROM t0_template source_tab
208
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
210
# check transactions-5 success: 1
213
Warning 1196 Some non-transactional changed tables couldn't be rolled back
215
# check transactions-6 success: 1
216
# INFO: Storage engine used for t1 seems to be not transactional.
219
# check transactions-7 success: 1
220
DELETE FROM t1 WHERE f_charbig = 'was inserted';
222
SET @@session.sql_mode = 'traditional';
223
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
224
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
225
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
226
'', '', 'was inserted' FROM t0_template
227
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
228
ERROR 22012: Division by 0
231
# check transactions-8 success: 1
232
# INFO: Storage engine used for t1 seems to be unable to revert
233
# changes made by the failing statement.
234
SET @@session.sql_mode = '';
236
DELETE FROM t1 WHERE f_charbig = 'was inserted';
238
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
240
# check special-1 success: 1
241
UPDATE t1 SET f_charbig = '';
243
# check special-2 success: 1
244
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
245
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
246
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
247
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
248
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
249
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
250
'just inserted' FROM t0_template
251
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
252
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
254
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
255
f_charbig = 'updated by trigger'
256
WHERE f_int1 = new.f_int1;
258
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
259
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
260
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
262
# check trigger-1 success: 1
264
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
265
f_int2 = CAST(f_char1 AS SIGNED INT),
266
f_charbig = 'just inserted'
267
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
269
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
270
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
271
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
272
'just inserted' FROM t0_template
273
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
274
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
276
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
277
f_charbig = 'updated by trigger'
278
WHERE f_int1 = new.f_int1;
280
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
281
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
282
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
284
# check trigger-2 success: 1
286
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
287
f_int2 = CAST(f_char1 AS SIGNED INT),
288
f_charbig = 'just inserted'
289
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
291
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
292
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
293
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
294
'just inserted' FROM t0_template
295
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
296
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
298
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
299
f_charbig = 'updated by trigger'
300
WHERE f_int1 = new.f_int1;
302
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
303
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
305
# check trigger-3 success: 1
307
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
308
f_int2 = CAST(f_char1 AS SIGNED INT),
309
f_charbig = 'just inserted'
310
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
312
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
313
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
314
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
315
'just inserted' FROM t0_template
316
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
317
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
319
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
320
f_charbig = 'updated by trigger'
321
WHERE f_int1 = - old.f_int1;
323
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
324
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
326
# check trigger-4 success: 1
328
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
329
f_int2 = CAST(f_char1 AS SIGNED INT),
330
f_charbig = 'just inserted'
331
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
333
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
334
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
335
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
336
'just inserted' FROM t0_template
337
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
338
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
340
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
341
f_charbig = 'updated by trigger'
342
WHERE f_int1 = new.f_int1;
344
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
345
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
347
# check trigger-5 success: 1
349
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
350
f_int2 = CAST(f_char1 AS SIGNED INT),
351
f_charbig = 'just inserted'
352
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
354
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
355
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
356
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
357
'just inserted' FROM t0_template
358
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
359
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
361
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
362
f_charbig = 'updated by trigger'
363
WHERE f_int1 = - old.f_int1;
365
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
366
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
368
# check trigger-6 success: 1
370
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
371
f_int2 = CAST(f_char1 AS SIGNED INT),
372
f_charbig = 'just inserted'
373
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
375
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
376
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
377
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
378
'just inserted' FROM t0_template
379
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
380
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
382
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
383
f_charbig = 'updated by trigger'
384
WHERE f_int1 = - old.f_int1;
387
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
389
# check trigger-7 success: 1
391
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
392
f_int2 = CAST(f_char1 AS SIGNED INT),
393
f_charbig = 'just inserted'
394
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
396
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
397
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
398
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
399
'just inserted' FROM t0_template
400
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
401
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
403
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
404
f_charbig = 'updated by trigger'
405
WHERE f_int1 = - old.f_int1;
408
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
410
# check trigger-8 success: 1
412
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
413
f_int2 = CAST(f_char1 AS SIGNED INT),
414
f_charbig = 'just inserted'
415
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
417
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
419
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
420
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
422
SET new.f_int1 = old.f_int1 + @max_row,
423
new.f_int2 = old.f_int2 - @max_row,
424
new.f_charbig = '####updated per update trigger####';
427
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
428
f_charbig = '####updated per update statement itself####';
430
# check trigger-9 success: 1
432
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
433
f_int2 = CAST(f_char1 AS SIGNED INT),
434
f_charbig = CONCAT('===',f_char1,'===');
435
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
437
SET new.f_int1 = new.f_int1 + @max_row,
438
new.f_int2 = new.f_int2 - @max_row,
439
new.f_charbig = '####updated per update trigger####';
442
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
443
f_charbig = '####updated per update statement itself####';
445
# check trigger-10 success: 1
447
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
448
f_int2 = CAST(f_char1 AS SIGNED INT),
449
f_charbig = CONCAT('===',f_char1,'===');
450
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
452
SET new.f_int1 = @my_max1 + @counter,
453
new.f_int2 = @my_min2 - @counter,
454
new.f_charbig = '####updated per insert trigger####';
455
SET @counter = @counter + 1;
458
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
459
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
460
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
461
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
462
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
466
# check trigger-11 success: 1
468
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
469
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
470
AND f_charbig = '####updated per insert trigger####';
471
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
473
SET new.f_int1 = @my_max1 + @counter,
474
new.f_int2 = @my_min2 - @counter,
475
new.f_charbig = '####updated per insert trigger####';
476
SET @counter = @counter + 1;
479
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
480
INSERT INTO t1 (f_char1, f_char2, f_charbig)
481
SELECT CAST(f_int1 AS CHAR),
482
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
483
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
487
# check trigger-12 success: 1
489
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
490
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
491
AND f_charbig = '####updated per insert trigger####';
493
Table Op Msg_type Msg_text
494
test.t1 analyze status OK
495
CHECK TABLE t1 EXTENDED;
496
Table Op Msg_type Msg_text
497
test.t1 check status OK
498
CHECKSUM TABLE t1 EXTENDED;
502
Table Op Msg_type Msg_text
503
test.t1 optimize status OK
504
# check layout success: 1
505
REPAIR TABLE t1 EXTENDED;
506
Table Op Msg_type Msg_text
507
test.t1 repair status OK
508
# check layout success: 1
511
# check TRUNCATE success: 1
512
# check layout success: 1
513
# End usability test (inc/partition_check.inc)
520
f_charbig VARCHAR(1000)
523
PARTITION BY KEY(f_int1) PARTITIONS 5;
524
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
525
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
526
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
527
ALTER TABLE t1 MODIFY f_int2 BIGINT;
528
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
529
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
530
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
531
# Start usability test (inc/partition_check.inc)
533
SHOW CREATE TABLE t1;
535
t1 CREATE TABLE `t1` (
536
`f_int1` int(11) DEFAULT NULL,
537
`f_int2` bigint(20) DEFAULT NULL,
538
`f_char1` char(20) DEFAULT NULL,
539
`f_char2` char(20) DEFAULT NULL,
540
`f_charbig` varchar(1000) DEFAULT NULL
541
) ENGINE=MyISAM DEFAULT CHARSET=latin1
542
/*!50100 PARTITION BY KEY (f_int1)
559
# check prerequisites-1 success: 1
560
# check COUNT(*) success: 1
561
# check MIN/MAX(f_int1) success: 1
562
# check MIN/MAX(f_int2) success: 1
563
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
564
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
565
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
566
WHERE f_int1 IN (2,3);
567
# check prerequisites-3 success: 1
568
DELETE FROM t1 WHERE f_charbig = 'delete me';
569
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
570
# check read via f_int1 success: 1
571
# check read via f_int2 success: 1
573
# check multiple-1 success: 1
574
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
576
# check multiple-2 success: 1
577
INSERT INTO t1 SELECT * FROM t0_template
578
WHERE MOD(f_int1,3) = 0;
580
# check multiple-3 success: 1
581
UPDATE t1 SET f_int1 = f_int1 + @max_row
582
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
583
AND @max_row_div2 + @max_row_div4;
585
# check multiple-4 success: 1
587
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
588
AND @max_row_div2 + @max_row_div4 + @max_row;
590
# check multiple-5 success: 1
591
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
593
SET f_int1 = @cur_value , f_int2 = @cur_value,
594
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
595
f_charbig = '#SINGLE#';
597
# check single-1 success: 1
598
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
600
SET f_int1 = @cur_value , f_int2 = @cur_value,
601
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
602
f_charbig = '#SINGLE#';
604
# check single-2 success: 1
605
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
606
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
607
UPDATE t1 SET f_int1 = @cur_value2
608
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
610
# check single-3 success: 1
612
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
613
UPDATE t1 SET f_int1 = @cur_value1
614
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
616
# check single-4 success: 1
617
SELECT MAX(f_int1) INTO @cur_value FROM t1;
618
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
620
# check single-5 success: 1
621
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
623
# check single-6 success: 1
624
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
626
# check single-7 success: 1
627
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
628
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
629
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
630
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
631
f_charbig = '#NULL#';
633
SET f_int1 = NULL , f_int2 = -@max_row,
634
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
635
f_charbig = '#NULL#';
636
# check null success: 1
638
# check null-1 success: 1
639
UPDATE t1 SET f_int1 = -@max_row
640
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
641
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
643
# check null-2 success: 1
644
UPDATE t1 SET f_int1 = NULL
645
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
646
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
648
# check null-3 success: 1
650
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
651
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
653
# check null-4 success: 1
655
WHERE f_int1 = 0 AND f_int2 = 0
656
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
657
AND f_charbig = '#NULL#';
659
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
660
SELECT f_int1, f_int1, '', '', 'was inserted'
661
FROM t0_template source_tab
662
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
664
# check transactions-1 success: 1
667
# check transactions-2 success: 1
670
# check transactions-3 success: 1
671
DELETE FROM t1 WHERE f_charbig = 'was inserted';
675
# check transactions-4 success: 1
676
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
677
SELECT f_int1, f_int1, '', '', 'was inserted'
678
FROM t0_template source_tab
679
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
681
# check transactions-5 success: 1
684
Warning 1196 Some non-transactional changed tables couldn't be rolled back
686
# check transactions-6 success: 1
687
# INFO: Storage engine used for t1 seems to be not transactional.
690
# check transactions-7 success: 1
691
DELETE FROM t1 WHERE f_charbig = 'was inserted';
693
SET @@session.sql_mode = 'traditional';
694
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
695
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
696
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
697
'', '', 'was inserted' FROM t0_template
698
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
699
ERROR 22012: Division by 0
702
# check transactions-8 success: 1
703
# INFO: Storage engine used for t1 seems to be unable to revert
704
# changes made by the failing statement.
705
SET @@session.sql_mode = '';
707
DELETE FROM t1 WHERE f_charbig = 'was inserted';
709
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
711
# check special-1 success: 1
712
UPDATE t1 SET f_charbig = '';
714
# check special-2 success: 1
715
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
716
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
717
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
718
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
719
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
720
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
721
'just inserted' FROM t0_template
722
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
723
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
725
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
726
f_charbig = 'updated by trigger'
727
WHERE f_int1 = new.f_int1;
729
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
730
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
731
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
733
# check trigger-1 success: 1
735
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
736
f_int2 = CAST(f_char1 AS SIGNED INT),
737
f_charbig = 'just inserted'
738
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
740
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
741
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
742
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
743
'just inserted' FROM t0_template
744
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
745
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
747
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
748
f_charbig = 'updated by trigger'
749
WHERE f_int1 = new.f_int1;
751
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
752
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
753
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
755
# check trigger-2 success: 1
757
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
758
f_int2 = CAST(f_char1 AS SIGNED INT),
759
f_charbig = 'just inserted'
760
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
762
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
763
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
764
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
765
'just inserted' FROM t0_template
766
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
767
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
769
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
770
f_charbig = 'updated by trigger'
771
WHERE f_int1 = new.f_int1;
773
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
774
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
776
# check trigger-3 success: 1
778
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
779
f_int2 = CAST(f_char1 AS SIGNED INT),
780
f_charbig = 'just inserted'
781
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
783
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
784
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
785
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
786
'just inserted' FROM t0_template
787
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
788
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
790
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
791
f_charbig = 'updated by trigger'
792
WHERE f_int1 = - old.f_int1;
794
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
795
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
797
# check trigger-4 success: 1
799
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
800
f_int2 = CAST(f_char1 AS SIGNED INT),
801
f_charbig = 'just inserted'
802
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
804
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
805
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
806
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
807
'just inserted' FROM t0_template
808
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
809
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
811
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
812
f_charbig = 'updated by trigger'
813
WHERE f_int1 = new.f_int1;
815
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
816
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
818
# check trigger-5 success: 1
820
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
821
f_int2 = CAST(f_char1 AS SIGNED INT),
822
f_charbig = 'just inserted'
823
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
825
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
826
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
827
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
828
'just inserted' FROM t0_template
829
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
830
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
832
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
833
f_charbig = 'updated by trigger'
834
WHERE f_int1 = - old.f_int1;
836
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
837
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
839
# check trigger-6 success: 1
841
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
842
f_int2 = CAST(f_char1 AS SIGNED INT),
843
f_charbig = 'just inserted'
844
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
846
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
847
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
848
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
849
'just inserted' FROM t0_template
850
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
851
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
853
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
854
f_charbig = 'updated by trigger'
855
WHERE f_int1 = - old.f_int1;
858
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
860
# check trigger-7 success: 1
862
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
863
f_int2 = CAST(f_char1 AS SIGNED INT),
864
f_charbig = 'just inserted'
865
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
867
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
868
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
869
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
870
'just inserted' FROM t0_template
871
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
872
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
874
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
875
f_charbig = 'updated by trigger'
876
WHERE f_int1 = - old.f_int1;
879
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
881
# check trigger-8 success: 1
883
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
884
f_int2 = CAST(f_char1 AS SIGNED INT),
885
f_charbig = 'just inserted'
886
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
888
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
890
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
891
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
893
SET new.f_int1 = old.f_int1 + @max_row,
894
new.f_int2 = old.f_int2 - @max_row,
895
new.f_charbig = '####updated per update trigger####';
898
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
899
f_charbig = '####updated per update statement itself####';
901
# check trigger-9 success: 1
903
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
904
f_int2 = CAST(f_char1 AS SIGNED INT),
905
f_charbig = CONCAT('===',f_char1,'===');
906
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
908
SET new.f_int1 = new.f_int1 + @max_row,
909
new.f_int2 = new.f_int2 - @max_row,
910
new.f_charbig = '####updated per update trigger####';
913
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
914
f_charbig = '####updated per update statement itself####';
916
# check trigger-10 success: 1
918
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
919
f_int2 = CAST(f_char1 AS SIGNED INT),
920
f_charbig = CONCAT('===',f_char1,'===');
921
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
923
SET new.f_int1 = @my_max1 + @counter,
924
new.f_int2 = @my_min2 - @counter,
925
new.f_charbig = '####updated per insert trigger####';
926
SET @counter = @counter + 1;
929
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
930
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
931
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
932
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
933
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
937
# check trigger-11 success: 1
939
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
940
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
941
AND f_charbig = '####updated per insert trigger####';
942
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
944
SET new.f_int1 = @my_max1 + @counter,
945
new.f_int2 = @my_min2 - @counter,
946
new.f_charbig = '####updated per insert trigger####';
947
SET @counter = @counter + 1;
950
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
951
INSERT INTO t1 (f_char1, f_char2, f_charbig)
952
SELECT CAST(f_int1 AS CHAR),
953
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
954
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
958
# check trigger-12 success: 1
960
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
961
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
962
AND f_charbig = '####updated per insert trigger####';
964
Table Op Msg_type Msg_text
965
test.t1 analyze status OK
966
CHECK TABLE t1 EXTENDED;
967
Table Op Msg_type Msg_text
968
test.t1 check status OK
969
CHECKSUM TABLE t1 EXTENDED;
973
Table Op Msg_type Msg_text
974
test.t1 optimize status OK
975
# check layout success: 1
976
REPAIR TABLE t1 EXTENDED;
977
Table Op Msg_type Msg_text
978
test.t1 repair status OK
979
# check layout success: 1
982
# check TRUNCATE success: 1
983
# check layout success: 1
984
# End usability test (inc/partition_check.inc)
991
f_charbig VARCHAR(1000)
994
PARTITION BY LIST(MOD(f_int1,4))
995
(PARTITION part_3 VALUES IN (-3),
996
PARTITION part_2 VALUES IN (-2),
997
PARTITION part_1 VALUES IN (-1),
998
PARTITION part_N VALUES IN (NULL),
999
PARTITION part0 VALUES IN (0),
1000
PARTITION part1 VALUES IN (1),
1001
PARTITION part2 VALUES IN (2),
1002
PARTITION part3 VALUES IN (3));
1003
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
1004
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
1005
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
1006
ALTER TABLE t1 MODIFY f_int2 BIGINT;
1007
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
1008
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
1009
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
1010
# Start usability test (inc/partition_check.inc)
1012
SHOW CREATE TABLE t1;
1014
t1 CREATE TABLE `t1` (
1015
`f_int1` int(11) DEFAULT NULL,
1016
`f_int2` bigint(20) DEFAULT NULL,
1017
`f_char1` char(20) DEFAULT NULL,
1018
`f_char2` char(20) DEFAULT NULL,
1019
`f_charbig` varchar(1000) DEFAULT NULL
1020
) ENGINE=MyISAM DEFAULT CHARSET=latin1
1021
/*!50100 PARTITION BY LIST (MOD(f_int1,4))
1022
(PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM,
1023
PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM,
1024
PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM,
1025
PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM,
1026
PARTITION part0 VALUES IN (0) ENGINE = MyISAM,
1027
PARTITION part1 VALUES IN (1) ENGINE = MyISAM,
1028
PARTITION part2 VALUES IN (2) ENGINE = MyISAM,
1029
PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */
1051
# check prerequisites-1 success: 1
1052
# check COUNT(*) success: 1
1053
# check MIN/MAX(f_int1) success: 1
1054
# check MIN/MAX(f_int2) success: 1
1055
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1056
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
1057
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
1058
WHERE f_int1 IN (2,3);
1059
# check prerequisites-3 success: 1
1060
DELETE FROM t1 WHERE f_charbig = 'delete me';
1061
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
1062
# check read via f_int1 success: 1
1063
# check read via f_int2 success: 1
1065
# check multiple-1 success: 1
1066
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
1068
# check multiple-2 success: 1
1069
INSERT INTO t1 SELECT * FROM t0_template
1070
WHERE MOD(f_int1,3) = 0;
1072
# check multiple-3 success: 1
1073
UPDATE t1 SET f_int1 = f_int1 + @max_row
1074
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
1075
AND @max_row_div2 + @max_row_div4;
1077
# check multiple-4 success: 1
1079
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
1080
AND @max_row_div2 + @max_row_div4 + @max_row;
1082
# check multiple-5 success: 1
1083
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
1085
SET f_int1 = @cur_value , f_int2 = @cur_value,
1086
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
1087
f_charbig = '#SINGLE#';
1089
# check single-1 success: 1
1090
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
1092
SET f_int1 = @cur_value , f_int2 = @cur_value,
1093
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
1094
f_charbig = '#SINGLE#';
1096
# check single-2 success: 1
1097
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
1098
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
1099
UPDATE t1 SET f_int1 = @cur_value2
1100
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
1102
# check single-3 success: 1
1103
SET @cur_value1= -1;
1104
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
1105
UPDATE t1 SET f_int1 = @cur_value1
1106
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
1108
# check single-4 success: 1
1109
SELECT MAX(f_int1) INTO @cur_value FROM t1;
1110
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
1112
# check single-5 success: 1
1113
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
1115
# check single-6 success: 1
1116
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
1118
# check single-7 success: 1
1119
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
1120
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
1121
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
1122
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
1123
f_charbig = '#NULL#';
1125
SET f_int1 = NULL , f_int2 = -@max_row,
1126
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
1127
f_charbig = '#NULL#';
1128
# check null success: 1
1130
# check null-1 success: 1
1131
UPDATE t1 SET f_int1 = -@max_row
1132
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
1133
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
1135
# check null-2 success: 1
1136
UPDATE t1 SET f_int1 = NULL
1137
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
1138
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
1140
# check null-3 success: 1
1142
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
1143
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
1145
# check null-4 success: 1
1147
WHERE f_int1 = 0 AND f_int2 = 0
1148
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
1149
AND f_charbig = '#NULL#';
1151
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1152
SELECT f_int1, f_int1, '', '', 'was inserted'
1153
FROM t0_template source_tab
1154
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
1156
# check transactions-1 success: 1
1159
# check transactions-2 success: 1
1162
# check transactions-3 success: 1
1163
DELETE FROM t1 WHERE f_charbig = 'was inserted';
1167
# check transactions-4 success: 1
1168
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1169
SELECT f_int1, f_int1, '', '', 'was inserted'
1170
FROM t0_template source_tab
1171
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
1173
# check transactions-5 success: 1
1176
Warning 1196 Some non-transactional changed tables couldn't be rolled back
1178
# check transactions-6 success: 1
1179
# INFO: Storage engine used for t1 seems to be not transactional.
1182
# check transactions-7 success: 1
1183
DELETE FROM t1 WHERE f_charbig = 'was inserted';
1185
SET @@session.sql_mode = 'traditional';
1186
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
1187
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1188
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
1189
'', '', 'was inserted' FROM t0_template
1190
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
1191
ERROR 22012: Division by 0
1194
# check transactions-8 success: 1
1195
# INFO: Storage engine used for t1 seems to be unable to revert
1196
# changes made by the failing statement.
1197
SET @@session.sql_mode = '';
1199
DELETE FROM t1 WHERE f_charbig = 'was inserted';
1201
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
1203
# check special-1 success: 1
1204
UPDATE t1 SET f_charbig = '';
1206
# check special-2 success: 1
1207
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
1208
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
1209
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
1210
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1211
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1212
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1213
'just inserted' FROM t0_template
1214
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1215
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
1217
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1218
f_charbig = 'updated by trigger'
1219
WHERE f_int1 = new.f_int1;
1221
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1222
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
1223
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1225
# check trigger-1 success: 1
1227
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1228
f_int2 = CAST(f_char1 AS SIGNED INT),
1229
f_charbig = 'just inserted'
1230
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1232
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1233
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1234
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1235
'just inserted' FROM t0_template
1236
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1237
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
1239
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1240
f_charbig = 'updated by trigger'
1241
WHERE f_int1 = new.f_int1;
1243
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1244
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
1245
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1247
# check trigger-2 success: 1
1249
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1250
f_int2 = CAST(f_char1 AS SIGNED INT),
1251
f_charbig = 'just inserted'
1252
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1254
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1255
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1256
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1257
'just inserted' FROM t0_template
1258
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1259
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
1261
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1262
f_charbig = 'updated by trigger'
1263
WHERE f_int1 = new.f_int1;
1265
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
1266
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1268
# check trigger-3 success: 1
1270
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1271
f_int2 = CAST(f_char1 AS SIGNED INT),
1272
f_charbig = 'just inserted'
1273
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1275
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1276
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1277
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1278
'just inserted' FROM t0_template
1279
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1280
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
1282
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1283
f_charbig = 'updated by trigger'
1284
WHERE f_int1 = - old.f_int1;
1286
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
1287
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1289
# check trigger-4 success: 1
1291
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1292
f_int2 = CAST(f_char1 AS SIGNED INT),
1293
f_charbig = 'just inserted'
1294
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1296
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1297
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1298
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1299
'just inserted' FROM t0_template
1300
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1301
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
1303
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1304
f_charbig = 'updated by trigger'
1305
WHERE f_int1 = new.f_int1;
1307
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
1308
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1310
# check trigger-5 success: 1
1312
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1313
f_int2 = CAST(f_char1 AS SIGNED INT),
1314
f_charbig = 'just inserted'
1315
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1317
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1318
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1319
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1320
'just inserted' FROM t0_template
1321
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1322
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
1324
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1325
f_charbig = 'updated by trigger'
1326
WHERE f_int1 = - old.f_int1;
1328
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
1329
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1331
# check trigger-6 success: 1
1333
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1334
f_int2 = CAST(f_char1 AS SIGNED INT),
1335
f_charbig = 'just inserted'
1336
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1338
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1339
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1340
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1341
'just inserted' FROM t0_template
1342
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1343
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
1345
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1346
f_charbig = 'updated by trigger'
1347
WHERE f_int1 = - old.f_int1;
1350
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1352
# check trigger-7 success: 1
1354
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1355
f_int2 = CAST(f_char1 AS SIGNED INT),
1356
f_charbig = 'just inserted'
1357
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1359
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1360
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1361
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1362
'just inserted' FROM t0_template
1363
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1364
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
1366
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1367
f_charbig = 'updated by trigger'
1368
WHERE f_int1 = - old.f_int1;
1371
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1373
# check trigger-8 success: 1
1375
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1376
f_int2 = CAST(f_char1 AS SIGNED INT),
1377
f_charbig = 'just inserted'
1378
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1380
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1382
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1383
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
1385
SET new.f_int1 = old.f_int1 + @max_row,
1386
new.f_int2 = old.f_int2 - @max_row,
1387
new.f_charbig = '####updated per update trigger####';
1390
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
1391
f_charbig = '####updated per update statement itself####';
1393
# check trigger-9 success: 1
1395
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1396
f_int2 = CAST(f_char1 AS SIGNED INT),
1397
f_charbig = CONCAT('===',f_char1,'===');
1398
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
1400
SET new.f_int1 = new.f_int1 + @max_row,
1401
new.f_int2 = new.f_int2 - @max_row,
1402
new.f_charbig = '####updated per update trigger####';
1405
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
1406
f_charbig = '####updated per update statement itself####';
1408
# check trigger-10 success: 1
1410
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1411
f_int2 = CAST(f_char1 AS SIGNED INT),
1412
f_charbig = CONCAT('===',f_char1,'===');
1413
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
1415
SET new.f_int1 = @my_max1 + @counter,
1416
new.f_int2 = @my_min2 - @counter,
1417
new.f_charbig = '####updated per insert trigger####';
1418
SET @counter = @counter + 1;
1421
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
1422
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1423
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
1424
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
1425
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
1429
# check trigger-11 success: 1
1431
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
1432
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
1433
AND f_charbig = '####updated per insert trigger####';
1434
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
1436
SET new.f_int1 = @my_max1 + @counter,
1437
new.f_int2 = @my_min2 - @counter,
1438
new.f_charbig = '####updated per insert trigger####';
1439
SET @counter = @counter + 1;
1442
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
1443
INSERT INTO t1 (f_char1, f_char2, f_charbig)
1444
SELECT CAST(f_int1 AS CHAR),
1445
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
1446
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
1450
# check trigger-12 success: 1
1452
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
1453
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
1454
AND f_charbig = '####updated per insert trigger####';
1456
Table Op Msg_type Msg_text
1457
test.t1 analyze status OK
1458
CHECK TABLE t1 EXTENDED;
1459
Table Op Msg_type Msg_text
1460
test.t1 check status OK
1461
CHECKSUM TABLE t1 EXTENDED;
1463
test.t1 <some_value>
1465
Table Op Msg_type Msg_text
1466
test.t1 optimize status OK
1467
# check layout success: 1
1468
REPAIR TABLE t1 EXTENDED;
1469
Table Op Msg_type Msg_text
1470
test.t1 repair status OK
1471
# check layout success: 1
1474
# check TRUNCATE success: 1
1475
# check layout success: 1
1476
# End usability test (inc/partition_check.inc)
1483
f_charbig VARCHAR(1000)
1486
PARTITION BY RANGE(f_int1)
1487
(PARTITION parta VALUES LESS THAN (0),
1488
PARTITION partb VALUES LESS THAN (5),
1489
PARTITION partc VALUES LESS THAN (10),
1490
PARTITION partd VALUES LESS THAN (10 + 5),
1491
PARTITION parte VALUES LESS THAN (20),
1492
PARTITION partf VALUES LESS THAN (2147483646));
1493
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
1494
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
1495
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
1496
ALTER TABLE t1 MODIFY f_int2 BIGINT;
1497
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
1498
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
1499
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
1500
# Start usability test (inc/partition_check.inc)
1502
SHOW CREATE TABLE t1;
1504
t1 CREATE TABLE `t1` (
1505
`f_int1` int(11) DEFAULT NULL,
1506
`f_int2` bigint(20) DEFAULT NULL,
1507
`f_char1` char(20) DEFAULT NULL,
1508
`f_char2` char(20) DEFAULT NULL,
1509
`f_charbig` varchar(1000) DEFAULT NULL
1510
) ENGINE=MyISAM DEFAULT CHARSET=latin1
1511
/*!50100 PARTITION BY RANGE (f_int1)
1512
(PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM,
1513
PARTITION partb VALUES LESS THAN (5) ENGINE = MyISAM,
1514
PARTITION partc VALUES LESS THAN (10) ENGINE = MyISAM,
1515
PARTITION partd VALUES LESS THAN (15) ENGINE = MyISAM,
1516
PARTITION parte VALUES LESS THAN (20) ENGINE = MyISAM,
1517
PARTITION partf VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
1535
# check prerequisites-1 success: 1
1536
# check COUNT(*) success: 1
1537
# check MIN/MAX(f_int1) success: 1
1538
# check MIN/MAX(f_int2) success: 1
1539
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1540
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
1541
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
1542
WHERE f_int1 IN (2,3);
1543
# check prerequisites-3 success: 1
1544
DELETE FROM t1 WHERE f_charbig = 'delete me';
1545
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
1546
# check read via f_int1 success: 1
1547
# check read via f_int2 success: 1
1549
# check multiple-1 success: 1
1550
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
1552
# check multiple-2 success: 1
1553
INSERT INTO t1 SELECT * FROM t0_template
1554
WHERE MOD(f_int1,3) = 0;
1556
# check multiple-3 success: 1
1557
UPDATE t1 SET f_int1 = f_int1 + @max_row
1558
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
1559
AND @max_row_div2 + @max_row_div4;
1561
# check multiple-4 success: 1
1563
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
1564
AND @max_row_div2 + @max_row_div4 + @max_row;
1566
# check multiple-5 success: 1
1567
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
1569
SET f_int1 = @cur_value , f_int2 = @cur_value,
1570
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
1571
f_charbig = '#SINGLE#';
1573
# check single-1 success: 1
1574
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
1576
SET f_int1 = @cur_value , f_int2 = @cur_value,
1577
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
1578
f_charbig = '#SINGLE#';
1580
# check single-2 success: 1
1581
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
1582
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
1583
UPDATE t1 SET f_int1 = @cur_value2
1584
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
1586
# check single-3 success: 1
1587
SET @cur_value1= -1;
1588
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
1589
UPDATE t1 SET f_int1 = @cur_value1
1590
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
1592
# check single-4 success: 1
1593
SELECT MAX(f_int1) INTO @cur_value FROM t1;
1594
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
1596
# check single-5 success: 1
1597
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
1599
# check single-6 success: 1
1600
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
1601
ERROR HY000: Table has no partition for value 2147483647
1602
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
1603
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
1604
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
1605
f_charbig = '#NULL#';
1607
SET f_int1 = NULL , f_int2 = -@max_row,
1608
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
1609
f_charbig = '#NULL#';
1610
# check null success: 1
1612
# check null-1 success: 1
1613
UPDATE t1 SET f_int1 = -@max_row
1614
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
1615
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
1617
# check null-2 success: 1
1618
UPDATE t1 SET f_int1 = NULL
1619
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
1620
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
1622
# check null-3 success: 1
1624
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
1625
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
1627
# check null-4 success: 1
1629
WHERE f_int1 = 0 AND f_int2 = 0
1630
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
1631
AND f_charbig = '#NULL#';
1633
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1634
SELECT f_int1, f_int1, '', '', 'was inserted'
1635
FROM t0_template source_tab
1636
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
1638
# check transactions-1 success: 1
1641
# check transactions-2 success: 1
1644
# check transactions-3 success: 1
1645
DELETE FROM t1 WHERE f_charbig = 'was inserted';
1649
# check transactions-4 success: 1
1650
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1651
SELECT f_int1, f_int1, '', '', 'was inserted'
1652
FROM t0_template source_tab
1653
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
1655
# check transactions-5 success: 1
1658
Warning 1196 Some non-transactional changed tables couldn't be rolled back
1660
# check transactions-6 success: 1
1661
# INFO: Storage engine used for t1 seems to be not transactional.
1664
# check transactions-7 success: 1
1665
DELETE FROM t1 WHERE f_charbig = 'was inserted';
1667
SET @@session.sql_mode = 'traditional';
1668
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
1669
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1670
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
1671
'', '', 'was inserted' FROM t0_template
1672
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
1673
ERROR 22012: Division by 0
1676
# check transactions-8 success: 1
1677
# INFO: Storage engine used for t1 seems to be unable to revert
1678
# changes made by the failing statement.
1679
SET @@session.sql_mode = '';
1681
DELETE FROM t1 WHERE f_charbig = 'was inserted';
1683
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
1685
# check special-1 success: 1
1686
UPDATE t1 SET f_charbig = '';
1688
# check special-2 success: 1
1689
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
1690
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
1691
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
1692
WHERE 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 INSERT ON t0_aux FOR EACH ROW
1699
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1700
f_charbig = 'updated by trigger'
1701
WHERE f_int1 = new.f_int1;
1703
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1704
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
1705
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1707
# check trigger-1 success: 1
1709
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1710
f_int2 = CAST(f_char1 AS SIGNED INT),
1711
f_charbig = 'just inserted'
1712
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1714
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1715
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1716
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1717
'just inserted' FROM t0_template
1718
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1719
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
1721
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1722
f_charbig = 'updated by trigger'
1723
WHERE f_int1 = new.f_int1;
1725
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1726
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
1727
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1729
# check trigger-2 success: 1
1731
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1732
f_int2 = CAST(f_char1 AS SIGNED INT),
1733
f_charbig = 'just inserted'
1734
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1736
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1737
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1738
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1739
'just inserted' FROM t0_template
1740
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1741
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
1743
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1744
f_charbig = 'updated by trigger'
1745
WHERE f_int1 = new.f_int1;
1747
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
1748
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1750
# check trigger-3 success: 1
1752
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1753
f_int2 = CAST(f_char1 AS SIGNED INT),
1754
f_charbig = 'just inserted'
1755
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1757
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1758
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1759
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1760
'just inserted' FROM t0_template
1761
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1762
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
1764
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1765
f_charbig = 'updated by trigger'
1766
WHERE f_int1 = - old.f_int1;
1768
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
1769
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1771
# check trigger-4 success: 1
1773
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1774
f_int2 = CAST(f_char1 AS SIGNED INT),
1775
f_charbig = 'just inserted'
1776
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1778
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1779
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1780
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1781
'just inserted' FROM t0_template
1782
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1783
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
1785
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1786
f_charbig = 'updated by trigger'
1787
WHERE f_int1 = new.f_int1;
1789
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
1790
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1792
# check trigger-5 success: 1
1794
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1795
f_int2 = CAST(f_char1 AS SIGNED INT),
1796
f_charbig = 'just inserted'
1797
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1799
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1800
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1801
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1802
'just inserted' FROM t0_template
1803
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1804
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
1806
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1807
f_charbig = 'updated by trigger'
1808
WHERE f_int1 = - old.f_int1;
1810
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
1811
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1813
# check trigger-6 success: 1
1815
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1816
f_int2 = CAST(f_char1 AS SIGNED INT),
1817
f_charbig = 'just inserted'
1818
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1820
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1821
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1822
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1823
'just inserted' FROM t0_template
1824
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1825
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
1827
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1828
f_charbig = 'updated by trigger'
1829
WHERE f_int1 = - old.f_int1;
1832
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1834
# check trigger-7 success: 1
1836
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1837
f_int2 = CAST(f_char1 AS SIGNED INT),
1838
f_charbig = 'just inserted'
1839
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1841
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1842
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1843
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1844
'just inserted' FROM t0_template
1845
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1846
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
1848
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1849
f_charbig = 'updated by trigger'
1850
WHERE f_int1 = - old.f_int1;
1853
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1855
# check trigger-8 success: 1
1857
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1858
f_int2 = CAST(f_char1 AS SIGNED INT),
1859
f_charbig = 'just inserted'
1860
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1862
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1864
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1865
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
1867
SET new.f_int1 = old.f_int1 + @max_row,
1868
new.f_int2 = old.f_int2 - @max_row,
1869
new.f_charbig = '####updated per update trigger####';
1872
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
1873
f_charbig = '####updated per update statement itself####';
1875
# check trigger-9 success: 1
1877
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1878
f_int2 = CAST(f_char1 AS SIGNED INT),
1879
f_charbig = CONCAT('===',f_char1,'===');
1880
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
1882
SET new.f_int1 = new.f_int1 + @max_row,
1883
new.f_int2 = new.f_int2 - @max_row,
1884
new.f_charbig = '####updated per update trigger####';
1887
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
1888
f_charbig = '####updated per update statement itself####';
1890
# check trigger-10 success: 1
1892
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1893
f_int2 = CAST(f_char1 AS SIGNED INT),
1894
f_charbig = CONCAT('===',f_char1,'===');
1895
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
1897
SET new.f_int1 = @my_max1 + @counter,
1898
new.f_int2 = @my_min2 - @counter,
1899
new.f_charbig = '####updated per insert trigger####';
1900
SET @counter = @counter + 1;
1903
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
1904
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1905
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
1906
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
1907
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
1911
# check trigger-11 success: 1
1913
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
1914
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
1915
AND f_charbig = '####updated per insert trigger####';
1916
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
1918
SET new.f_int1 = @my_max1 + @counter,
1919
new.f_int2 = @my_min2 - @counter,
1920
new.f_charbig = '####updated per insert trigger####';
1921
SET @counter = @counter + 1;
1924
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
1925
INSERT INTO t1 (f_char1, f_char2, f_charbig)
1926
SELECT CAST(f_int1 AS CHAR),
1927
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
1928
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
1932
# check trigger-12 success: 1
1934
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
1935
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
1936
AND f_charbig = '####updated per insert trigger####';
1938
Table Op Msg_type Msg_text
1939
test.t1 analyze status OK
1940
CHECK TABLE t1 EXTENDED;
1941
Table Op Msg_type Msg_text
1942
test.t1 check status OK
1943
CHECKSUM TABLE t1 EXTENDED;
1945
test.t1 <some_value>
1947
Table Op Msg_type Msg_text
1948
test.t1 optimize status OK
1949
# check layout success: 1
1950
REPAIR TABLE t1 EXTENDED;
1951
Table Op Msg_type Msg_text
1952
test.t1 repair status OK
1953
# check layout success: 1
1956
# check TRUNCATE success: 1
1957
# check layout success: 1
1958
# End usability test (inc/partition_check.inc)
1965
f_charbig VARCHAR(1000)
1968
PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
1969
(PARTITION parta VALUES LESS THAN (0),
1970
PARTITION partb VALUES LESS THAN (5),
1971
PARTITION partc VALUES LESS THAN (10),
1972
PARTITION partd VALUES LESS THAN (2147483646));
1973
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
1974
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
1975
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
1976
ALTER TABLE t1 MODIFY f_int2 BIGINT;
1977
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
1978
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
1979
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
1980
# Start usability test (inc/partition_check.inc)
1982
SHOW CREATE TABLE t1;
1984
t1 CREATE TABLE `t1` (
1985
`f_int1` int(11) DEFAULT NULL,
1986
`f_int2` bigint(20) DEFAULT NULL,
1987
`f_char1` char(20) DEFAULT NULL,
1988
`f_char2` char(20) DEFAULT NULL,
1989
`f_charbig` varchar(1000) DEFAULT NULL
1990
) ENGINE=MyISAM DEFAULT CHARSET=latin1
1991
/*!50100 PARTITION BY RANGE (f_int1 DIV 2)
1992
SUBPARTITION BY HASH (f_int1)
1994
(PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM,
1995
PARTITION partb VALUES LESS THAN (5) ENGINE = MyISAM,
1996
PARTITION partc VALUES LESS THAN (10) ENGINE = MyISAM,
1997
PARTITION partd VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
2000
t1#P#parta#SP#partasp0.MYD
2001
t1#P#parta#SP#partasp0.MYI
2002
t1#P#parta#SP#partasp1.MYD
2003
t1#P#parta#SP#partasp1.MYI
2004
t1#P#partb#SP#partbsp0.MYD
2005
t1#P#partb#SP#partbsp0.MYI
2006
t1#P#partb#SP#partbsp1.MYD
2007
t1#P#partb#SP#partbsp1.MYI
2008
t1#P#partc#SP#partcsp0.MYD
2009
t1#P#partc#SP#partcsp0.MYI
2010
t1#P#partc#SP#partcsp1.MYD
2011
t1#P#partc#SP#partcsp1.MYI
2012
t1#P#partd#SP#partdsp0.MYD
2013
t1#P#partd#SP#partdsp0.MYI
2014
t1#P#partd#SP#partdsp1.MYD
2015
t1#P#partd#SP#partdsp1.MYI
2019
# check prerequisites-1 success: 1
2020
# check COUNT(*) success: 1
2021
# check MIN/MAX(f_int1) success: 1
2022
# check MIN/MAX(f_int2) success: 1
2023
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2024
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
2025
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
2026
WHERE f_int1 IN (2,3);
2027
# check prerequisites-3 success: 1
2028
DELETE FROM t1 WHERE f_charbig = 'delete me';
2029
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
2030
# check read via f_int1 success: 1
2031
# check read via f_int2 success: 1
2033
# check multiple-1 success: 1
2034
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
2036
# check multiple-2 success: 1
2037
INSERT INTO t1 SELECT * FROM t0_template
2038
WHERE MOD(f_int1,3) = 0;
2040
# check multiple-3 success: 1
2041
UPDATE t1 SET f_int1 = f_int1 + @max_row
2042
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
2043
AND @max_row_div2 + @max_row_div4;
2045
# check multiple-4 success: 1
2047
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
2048
AND @max_row_div2 + @max_row_div4 + @max_row;
2050
# check multiple-5 success: 1
2051
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
2053
SET f_int1 = @cur_value , f_int2 = @cur_value,
2054
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
2055
f_charbig = '#SINGLE#';
2057
# check single-1 success: 1
2058
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
2060
SET f_int1 = @cur_value , f_int2 = @cur_value,
2061
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
2062
f_charbig = '#SINGLE#';
2064
# check single-2 success: 1
2065
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
2066
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
2067
UPDATE t1 SET f_int1 = @cur_value2
2068
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
2070
# check single-3 success: 1
2071
SET @cur_value1= -1;
2072
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
2073
UPDATE t1 SET f_int1 = @cur_value1
2074
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
2076
# check single-4 success: 1
2077
SELECT MAX(f_int1) INTO @cur_value FROM t1;
2078
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
2080
# check single-5 success: 1
2081
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
2083
# check single-6 success: 1
2084
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
2086
# check single-7 success: 1
2087
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
2088
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
2089
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
2090
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
2091
f_charbig = '#NULL#';
2093
SET f_int1 = NULL , f_int2 = -@max_row,
2094
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
2095
f_charbig = '#NULL#';
2096
# check null success: 1
2098
# check null-1 success: 1
2099
UPDATE t1 SET f_int1 = -@max_row
2100
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
2101
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
2103
# check null-2 success: 1
2104
UPDATE t1 SET f_int1 = NULL
2105
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
2106
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
2108
# check null-3 success: 1
2110
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
2111
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
2113
# check null-4 success: 1
2115
WHERE f_int1 = 0 AND f_int2 = 0
2116
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
2117
AND f_charbig = '#NULL#';
2119
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2120
SELECT f_int1, f_int1, '', '', 'was inserted'
2121
FROM t0_template source_tab
2122
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
2124
# check transactions-1 success: 1
2127
# check transactions-2 success: 1
2130
# check transactions-3 success: 1
2131
DELETE FROM t1 WHERE f_charbig = 'was inserted';
2135
# check transactions-4 success: 1
2136
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2137
SELECT f_int1, f_int1, '', '', 'was inserted'
2138
FROM t0_template source_tab
2139
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
2141
# check transactions-5 success: 1
2144
Warning 1196 Some non-transactional changed tables couldn't be rolled back
2146
# check transactions-6 success: 1
2147
# INFO: Storage engine used for t1 seems to be not transactional.
2150
# check transactions-7 success: 1
2151
DELETE FROM t1 WHERE f_charbig = 'was inserted';
2153
SET @@session.sql_mode = 'traditional';
2154
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
2155
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2156
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
2157
'', '', 'was inserted' FROM t0_template
2158
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
2159
ERROR 22012: Division by 0
2162
# check transactions-8 success: 1
2163
# INFO: Storage engine used for t1 seems to be unable to revert
2164
# changes made by the failing statement.
2165
SET @@session.sql_mode = '';
2167
DELETE FROM t1 WHERE f_charbig = 'was inserted';
2169
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
2171
# check special-1 success: 1
2172
UPDATE t1 SET f_charbig = '';
2174
# check special-2 success: 1
2175
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
2176
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
2177
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
2178
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2179
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2180
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2181
'just inserted' FROM t0_template
2182
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2183
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
2185
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2186
f_charbig = 'updated by trigger'
2187
WHERE f_int1 = new.f_int1;
2189
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2190
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
2191
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2193
# check trigger-1 success: 1
2195
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2196
f_int2 = CAST(f_char1 AS SIGNED INT),
2197
f_charbig = 'just inserted'
2198
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2200
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2201
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2202
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2203
'just inserted' FROM t0_template
2204
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2205
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
2207
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2208
f_charbig = 'updated by trigger'
2209
WHERE f_int1 = new.f_int1;
2211
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2212
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
2213
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2215
# check trigger-2 success: 1
2217
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2218
f_int2 = CAST(f_char1 AS SIGNED INT),
2219
f_charbig = 'just inserted'
2220
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2222
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2223
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2224
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2225
'just inserted' FROM t0_template
2226
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2227
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
2229
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2230
f_charbig = 'updated by trigger'
2231
WHERE f_int1 = new.f_int1;
2233
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
2234
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2236
# check trigger-3 success: 1
2238
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2239
f_int2 = CAST(f_char1 AS SIGNED INT),
2240
f_charbig = 'just inserted'
2241
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2243
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2244
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2245
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2246
'just inserted' FROM t0_template
2247
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2248
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
2250
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2251
f_charbig = 'updated by trigger'
2252
WHERE f_int1 = - old.f_int1;
2254
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
2255
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2257
# check trigger-4 success: 1
2259
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2260
f_int2 = CAST(f_char1 AS SIGNED INT),
2261
f_charbig = 'just inserted'
2262
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2264
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2265
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2266
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2267
'just inserted' FROM t0_template
2268
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2269
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
2271
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2272
f_charbig = 'updated by trigger'
2273
WHERE f_int1 = new.f_int1;
2275
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
2276
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2278
# check trigger-5 success: 1
2280
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2281
f_int2 = CAST(f_char1 AS SIGNED INT),
2282
f_charbig = 'just inserted'
2283
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2285
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2286
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2287
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2288
'just inserted' FROM t0_template
2289
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2290
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
2292
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2293
f_charbig = 'updated by trigger'
2294
WHERE f_int1 = - old.f_int1;
2296
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
2297
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2299
# check trigger-6 success: 1
2301
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2302
f_int2 = CAST(f_char1 AS SIGNED INT),
2303
f_charbig = 'just inserted'
2304
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2306
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2307
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2308
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2309
'just inserted' FROM t0_template
2310
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2311
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
2313
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2314
f_charbig = 'updated by trigger'
2315
WHERE f_int1 = - old.f_int1;
2318
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2320
# check trigger-7 success: 1
2322
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2323
f_int2 = CAST(f_char1 AS SIGNED INT),
2324
f_charbig = 'just inserted'
2325
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2327
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2328
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2329
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2330
'just inserted' FROM t0_template
2331
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2332
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
2334
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2335
f_charbig = 'updated by trigger'
2336
WHERE f_int1 = - old.f_int1;
2339
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2341
# check trigger-8 success: 1
2343
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2344
f_int2 = CAST(f_char1 AS SIGNED INT),
2345
f_charbig = 'just inserted'
2346
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2348
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2350
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2351
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
2353
SET new.f_int1 = old.f_int1 + @max_row,
2354
new.f_int2 = old.f_int2 - @max_row,
2355
new.f_charbig = '####updated per update trigger####';
2358
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
2359
f_charbig = '####updated per update statement itself####';
2361
# check trigger-9 success: 1
2363
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2364
f_int2 = CAST(f_char1 AS SIGNED INT),
2365
f_charbig = CONCAT('===',f_char1,'===');
2366
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
2368
SET new.f_int1 = new.f_int1 + @max_row,
2369
new.f_int2 = new.f_int2 - @max_row,
2370
new.f_charbig = '####updated per update trigger####';
2373
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
2374
f_charbig = '####updated per update statement itself####';
2376
# check trigger-10 success: 1
2378
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2379
f_int2 = CAST(f_char1 AS SIGNED INT),
2380
f_charbig = CONCAT('===',f_char1,'===');
2381
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
2383
SET new.f_int1 = @my_max1 + @counter,
2384
new.f_int2 = @my_min2 - @counter,
2385
new.f_charbig = '####updated per insert trigger####';
2386
SET @counter = @counter + 1;
2389
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
2390
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2391
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
2392
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
2393
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
2397
# check trigger-11 success: 1
2399
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
2400
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
2401
AND f_charbig = '####updated per insert trigger####';
2402
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
2404
SET new.f_int1 = @my_max1 + @counter,
2405
new.f_int2 = @my_min2 - @counter,
2406
new.f_charbig = '####updated per insert trigger####';
2407
SET @counter = @counter + 1;
2410
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
2411
INSERT INTO t1 (f_char1, f_char2, f_charbig)
2412
SELECT CAST(f_int1 AS CHAR),
2413
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
2414
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
2418
# check trigger-12 success: 1
2420
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
2421
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
2422
AND f_charbig = '####updated per insert trigger####';
2424
Table Op Msg_type Msg_text
2425
test.t1 analyze status OK
2426
CHECK TABLE t1 EXTENDED;
2427
Table Op Msg_type Msg_text
2428
test.t1 check status OK
2429
CHECKSUM TABLE t1 EXTENDED;
2431
test.t1 <some_value>
2433
Table Op Msg_type Msg_text
2434
test.t1 optimize status OK
2435
# check layout success: 1
2436
REPAIR TABLE t1 EXTENDED;
2437
Table Op Msg_type Msg_text
2438
test.t1 repair status OK
2439
# check layout success: 1
2442
# check TRUNCATE success: 1
2443
# check layout success: 1
2444
# End usability test (inc/partition_check.inc)
2451
f_charbig VARCHAR(1000)
2454
PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
2455
(PARTITION part1 VALUES LESS THAN (0)
2456
(SUBPARTITION subpart11, SUBPARTITION subpart12),
2457
PARTITION part2 VALUES LESS THAN (5)
2458
(SUBPARTITION subpart21, SUBPARTITION subpart22),
2459
PARTITION part3 VALUES LESS THAN (10)
2460
(SUBPARTITION subpart31, SUBPARTITION subpart32),
2461
PARTITION part4 VALUES LESS THAN (2147483646)
2462
(SUBPARTITION subpart41, SUBPARTITION subpart42));
2463
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
2464
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
2465
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
2466
ALTER TABLE t1 MODIFY f_int2 BIGINT;
2467
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
2468
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
2469
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
2470
# Start usability test (inc/partition_check.inc)
2472
SHOW CREATE TABLE t1;
2474
t1 CREATE TABLE `t1` (
2475
`f_int1` int(11) DEFAULT NULL,
2476
`f_int2` bigint(20) DEFAULT NULL,
2477
`f_char1` char(20) DEFAULT NULL,
2478
`f_char2` char(20) DEFAULT NULL,
2479
`f_charbig` varchar(1000) DEFAULT NULL
2480
) ENGINE=MyISAM DEFAULT CHARSET=latin1
2481
/*!50100 PARTITION BY RANGE (f_int1)
2482
SUBPARTITION BY KEY (f_int1)
2483
(PARTITION part1 VALUES LESS THAN (0)
2484
(SUBPARTITION subpart11 ENGINE = MyISAM,
2485
SUBPARTITION subpart12 ENGINE = MyISAM),
2486
PARTITION part2 VALUES LESS THAN (5)
2487
(SUBPARTITION subpart21 ENGINE = MyISAM,
2488
SUBPARTITION subpart22 ENGINE = MyISAM),
2489
PARTITION part3 VALUES LESS THAN (10)
2490
(SUBPARTITION subpart31 ENGINE = MyISAM,
2491
SUBPARTITION subpart32 ENGINE = MyISAM),
2492
PARTITION part4 VALUES LESS THAN (2147483646)
2493
(SUBPARTITION subpart41 ENGINE = MyISAM,
2494
SUBPARTITION subpart42 ENGINE = MyISAM)) */
2497
t1#P#part1#SP#subpart11.MYD
2498
t1#P#part1#SP#subpart11.MYI
2499
t1#P#part1#SP#subpart12.MYD
2500
t1#P#part1#SP#subpart12.MYI
2501
t1#P#part2#SP#subpart21.MYD
2502
t1#P#part2#SP#subpart21.MYI
2503
t1#P#part2#SP#subpart22.MYD
2504
t1#P#part2#SP#subpart22.MYI
2505
t1#P#part3#SP#subpart31.MYD
2506
t1#P#part3#SP#subpart31.MYI
2507
t1#P#part3#SP#subpart32.MYD
2508
t1#P#part3#SP#subpart32.MYI
2509
t1#P#part4#SP#subpart41.MYD
2510
t1#P#part4#SP#subpart41.MYI
2511
t1#P#part4#SP#subpart42.MYD
2512
t1#P#part4#SP#subpart42.MYI
2516
# check prerequisites-1 success: 1
2517
# check COUNT(*) success: 1
2518
# check MIN/MAX(f_int1) success: 1
2519
# check MIN/MAX(f_int2) success: 1
2520
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2521
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
2522
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
2523
WHERE f_int1 IN (2,3);
2524
# check prerequisites-3 success: 1
2525
DELETE FROM t1 WHERE f_charbig = 'delete me';
2526
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
2527
# check read via f_int1 success: 1
2528
# check read via f_int2 success: 1
2530
# check multiple-1 success: 1
2531
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
2533
# check multiple-2 success: 1
2534
INSERT INTO t1 SELECT * FROM t0_template
2535
WHERE MOD(f_int1,3) = 0;
2537
# check multiple-3 success: 1
2538
UPDATE t1 SET f_int1 = f_int1 + @max_row
2539
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
2540
AND @max_row_div2 + @max_row_div4;
2542
# check multiple-4 success: 1
2544
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
2545
AND @max_row_div2 + @max_row_div4 + @max_row;
2547
# check multiple-5 success: 1
2548
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
2550
SET f_int1 = @cur_value , f_int2 = @cur_value,
2551
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
2552
f_charbig = '#SINGLE#';
2554
# check single-1 success: 1
2555
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
2557
SET f_int1 = @cur_value , f_int2 = @cur_value,
2558
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
2559
f_charbig = '#SINGLE#';
2561
# check single-2 success: 1
2562
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
2563
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
2564
UPDATE t1 SET f_int1 = @cur_value2
2565
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
2567
# check single-3 success: 1
2568
SET @cur_value1= -1;
2569
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
2570
UPDATE t1 SET f_int1 = @cur_value1
2571
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
2573
# check single-4 success: 1
2574
SELECT MAX(f_int1) INTO @cur_value FROM t1;
2575
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
2577
# check single-5 success: 1
2578
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
2580
# check single-6 success: 1
2581
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
2582
ERROR HY000: Table has no partition for value 2147483647
2583
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
2584
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
2585
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
2586
f_charbig = '#NULL#';
2588
SET f_int1 = NULL , f_int2 = -@max_row,
2589
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
2590
f_charbig = '#NULL#';
2591
# check null success: 1
2593
# check null-1 success: 1
2594
UPDATE t1 SET f_int1 = -@max_row
2595
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
2596
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
2598
# check null-2 success: 1
2599
UPDATE t1 SET f_int1 = NULL
2600
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
2601
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
2603
# check null-3 success: 1
2605
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
2606
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
2608
# check null-4 success: 1
2610
WHERE f_int1 = 0 AND f_int2 = 0
2611
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
2612
AND f_charbig = '#NULL#';
2614
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2615
SELECT f_int1, f_int1, '', '', 'was inserted'
2616
FROM t0_template source_tab
2617
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
2619
# check transactions-1 success: 1
2622
# check transactions-2 success: 1
2625
# check transactions-3 success: 1
2626
DELETE FROM t1 WHERE f_charbig = 'was inserted';
2630
# check transactions-4 success: 1
2631
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2632
SELECT f_int1, f_int1, '', '', 'was inserted'
2633
FROM t0_template source_tab
2634
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
2636
# check transactions-5 success: 1
2639
Warning 1196 Some non-transactional changed tables couldn't be rolled back
2641
# check transactions-6 success: 1
2642
# INFO: Storage engine used for t1 seems to be not transactional.
2645
# check transactions-7 success: 1
2646
DELETE FROM t1 WHERE f_charbig = 'was inserted';
2648
SET @@session.sql_mode = 'traditional';
2649
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
2650
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2651
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
2652
'', '', 'was inserted' FROM t0_template
2653
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
2654
ERROR 22012: Division by 0
2657
# check transactions-8 success: 1
2658
# INFO: Storage engine used for t1 seems to be unable to revert
2659
# changes made by the failing statement.
2660
SET @@session.sql_mode = '';
2662
DELETE FROM t1 WHERE f_charbig = 'was inserted';
2664
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
2666
# check special-1 success: 1
2667
UPDATE t1 SET f_charbig = '';
2669
# check special-2 success: 1
2670
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
2671
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
2672
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
2673
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2674
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2675
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2676
'just inserted' FROM t0_template
2677
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2678
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
2680
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2681
f_charbig = 'updated by trigger'
2682
WHERE f_int1 = new.f_int1;
2684
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2685
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
2686
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2688
# check trigger-1 success: 1
2690
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2691
f_int2 = CAST(f_char1 AS SIGNED INT),
2692
f_charbig = 'just inserted'
2693
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2695
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2696
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2697
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2698
'just inserted' FROM t0_template
2699
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2700
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
2702
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2703
f_charbig = 'updated by trigger'
2704
WHERE f_int1 = new.f_int1;
2706
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2707
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
2708
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2710
# check trigger-2 success: 1
2712
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2713
f_int2 = CAST(f_char1 AS SIGNED INT),
2714
f_charbig = 'just inserted'
2715
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2717
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2718
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2719
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2720
'just inserted' FROM t0_template
2721
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2722
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
2724
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2725
f_charbig = 'updated by trigger'
2726
WHERE f_int1 = new.f_int1;
2728
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
2729
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2731
# check trigger-3 success: 1
2733
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2734
f_int2 = CAST(f_char1 AS SIGNED INT),
2735
f_charbig = 'just inserted'
2736
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2738
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2739
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2740
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2741
'just inserted' FROM t0_template
2742
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2743
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
2745
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2746
f_charbig = 'updated by trigger'
2747
WHERE f_int1 = - old.f_int1;
2749
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
2750
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2752
# check trigger-4 success: 1
2754
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2755
f_int2 = CAST(f_char1 AS SIGNED INT),
2756
f_charbig = 'just inserted'
2757
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2759
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2760
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2761
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2762
'just inserted' FROM t0_template
2763
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2764
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
2766
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2767
f_charbig = 'updated by trigger'
2768
WHERE f_int1 = new.f_int1;
2770
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
2771
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2773
# check trigger-5 success: 1
2775
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2776
f_int2 = CAST(f_char1 AS SIGNED INT),
2777
f_charbig = 'just inserted'
2778
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2780
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2781
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2782
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2783
'just inserted' FROM t0_template
2784
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2785
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
2787
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2788
f_charbig = 'updated by trigger'
2789
WHERE f_int1 = - old.f_int1;
2791
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
2792
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2794
# check trigger-6 success: 1
2796
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2797
f_int2 = CAST(f_char1 AS SIGNED INT),
2798
f_charbig = 'just inserted'
2799
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2801
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2802
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2803
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2804
'just inserted' FROM t0_template
2805
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2806
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
2808
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2809
f_charbig = 'updated by trigger'
2810
WHERE f_int1 = - old.f_int1;
2813
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2815
# check trigger-7 success: 1
2817
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2818
f_int2 = CAST(f_char1 AS SIGNED INT),
2819
f_charbig = 'just inserted'
2820
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2822
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2823
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2824
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2825
'just inserted' FROM t0_template
2826
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2827
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
2829
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2830
f_charbig = 'updated by trigger'
2831
WHERE f_int1 = - old.f_int1;
2834
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2836
# check trigger-8 success: 1
2838
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2839
f_int2 = CAST(f_char1 AS SIGNED INT),
2840
f_charbig = 'just inserted'
2841
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2843
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2845
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2846
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
2848
SET new.f_int1 = old.f_int1 + @max_row,
2849
new.f_int2 = old.f_int2 - @max_row,
2850
new.f_charbig = '####updated per update trigger####';
2853
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
2854
f_charbig = '####updated per update statement itself####';
2856
# check trigger-9 success: 1
2858
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2859
f_int2 = CAST(f_char1 AS SIGNED INT),
2860
f_charbig = CONCAT('===',f_char1,'===');
2861
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
2863
SET new.f_int1 = new.f_int1 + @max_row,
2864
new.f_int2 = new.f_int2 - @max_row,
2865
new.f_charbig = '####updated per update trigger####';
2868
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
2869
f_charbig = '####updated per update statement itself####';
2871
# check trigger-10 success: 1
2873
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2874
f_int2 = CAST(f_char1 AS SIGNED INT),
2875
f_charbig = CONCAT('===',f_char1,'===');
2876
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
2878
SET new.f_int1 = @my_max1 + @counter,
2879
new.f_int2 = @my_min2 - @counter,
2880
new.f_charbig = '####updated per insert trigger####';
2881
SET @counter = @counter + 1;
2884
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
2885
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2886
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
2887
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
2888
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
2892
# check trigger-11 success: 1
2894
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
2895
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
2896
AND f_charbig = '####updated per insert trigger####';
2897
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
2899
SET new.f_int1 = @my_max1 + @counter,
2900
new.f_int2 = @my_min2 - @counter,
2901
new.f_charbig = '####updated per insert trigger####';
2902
SET @counter = @counter + 1;
2905
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
2906
INSERT INTO t1 (f_char1, f_char2, f_charbig)
2907
SELECT CAST(f_int1 AS CHAR),
2908
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
2909
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
2913
# check trigger-12 success: 1
2915
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
2916
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
2917
AND f_charbig = '####updated per insert trigger####';
2919
Table Op Msg_type Msg_text
2920
test.t1 analyze status OK
2921
CHECK TABLE t1 EXTENDED;
2922
Table Op Msg_type Msg_text
2923
test.t1 check status OK
2924
CHECKSUM TABLE t1 EXTENDED;
2926
test.t1 <some_value>
2928
Table Op Msg_type Msg_text
2929
test.t1 optimize status OK
2930
# check layout success: 1
2931
REPAIR TABLE t1 EXTENDED;
2932
Table Op Msg_type Msg_text
2933
test.t1 repair status OK
2934
# check layout success: 1
2937
# check TRUNCATE success: 1
2938
# check layout success: 1
2939
# End usability test (inc/partition_check.inc)
2946
f_charbig VARCHAR(1000)
2949
PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
2950
(PARTITION part1 VALUES IN (0)
2951
(SUBPARTITION sp11, SUBPARTITION sp12),
2952
PARTITION part2 VALUES IN (1)
2953
(SUBPARTITION sp21, SUBPARTITION sp22),
2954
PARTITION part3 VALUES IN (2)
2955
(SUBPARTITION sp31, SUBPARTITION sp32),
2956
PARTITION part4 VALUES IN (NULL)
2957
(SUBPARTITION sp41, SUBPARTITION sp42));
2958
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
2959
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
2960
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
2961
ALTER TABLE t1 MODIFY f_int2 BIGINT;
2962
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
2963
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
2964
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
2965
# Start usability test (inc/partition_check.inc)
2967
SHOW CREATE TABLE t1;
2969
t1 CREATE TABLE `t1` (
2970
`f_int1` int(11) DEFAULT NULL,
2971
`f_int2` bigint(20) DEFAULT NULL,
2972
`f_char1` char(20) DEFAULT NULL,
2973
`f_char2` char(20) DEFAULT NULL,
2974
`f_charbig` varchar(1000) DEFAULT NULL
2975
) ENGINE=MyISAM DEFAULT CHARSET=latin1
2976
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
2977
SUBPARTITION BY HASH (f_int1 + 1)
2978
(PARTITION part1 VALUES IN (0)
2979
(SUBPARTITION sp11 ENGINE = MyISAM,
2980
SUBPARTITION sp12 ENGINE = MyISAM),
2981
PARTITION part2 VALUES IN (1)
2982
(SUBPARTITION sp21 ENGINE = MyISAM,
2983
SUBPARTITION sp22 ENGINE = MyISAM),
2984
PARTITION part3 VALUES IN (2)
2985
(SUBPARTITION sp31 ENGINE = MyISAM,
2986
SUBPARTITION sp32 ENGINE = MyISAM),
2987
PARTITION part4 VALUES IN (NULL)
2988
(SUBPARTITION sp41 ENGINE = MyISAM,
2989
SUBPARTITION sp42 ENGINE = MyISAM)) */
2992
t1#P#part1#SP#sp11.MYD
2993
t1#P#part1#SP#sp11.MYI
2994
t1#P#part1#SP#sp12.MYD
2995
t1#P#part1#SP#sp12.MYI
2996
t1#P#part2#SP#sp21.MYD
2997
t1#P#part2#SP#sp21.MYI
2998
t1#P#part2#SP#sp22.MYD
2999
t1#P#part2#SP#sp22.MYI
3000
t1#P#part3#SP#sp31.MYD
3001
t1#P#part3#SP#sp31.MYI
3002
t1#P#part3#SP#sp32.MYD
3003
t1#P#part3#SP#sp32.MYI
3004
t1#P#part4#SP#sp41.MYD
3005
t1#P#part4#SP#sp41.MYI
3006
t1#P#part4#SP#sp42.MYD
3007
t1#P#part4#SP#sp42.MYI
3011
# check prerequisites-1 success: 1
3012
# check COUNT(*) success: 1
3013
# check MIN/MAX(f_int1) success: 1
3014
# check MIN/MAX(f_int2) success: 1
3015
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3016
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
3017
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
3018
WHERE f_int1 IN (2,3);
3019
# check prerequisites-3 success: 1
3020
DELETE FROM t1 WHERE f_charbig = 'delete me';
3021
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
3022
# check read via f_int1 success: 1
3023
# check read via f_int2 success: 1
3025
# check multiple-1 success: 1
3026
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
3028
# check multiple-2 success: 1
3029
INSERT INTO t1 SELECT * FROM t0_template
3030
WHERE MOD(f_int1,3) = 0;
3032
# check multiple-3 success: 1
3033
UPDATE t1 SET f_int1 = f_int1 + @max_row
3034
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
3035
AND @max_row_div2 + @max_row_div4;
3037
# check multiple-4 success: 1
3039
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
3040
AND @max_row_div2 + @max_row_div4 + @max_row;
3042
# check multiple-5 success: 1
3043
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
3045
SET f_int1 = @cur_value , f_int2 = @cur_value,
3046
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
3047
f_charbig = '#SINGLE#';
3049
# check single-1 success: 1
3050
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
3052
SET f_int1 = @cur_value , f_int2 = @cur_value,
3053
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
3054
f_charbig = '#SINGLE#';
3056
# check single-2 success: 1
3057
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
3058
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
3059
UPDATE t1 SET f_int1 = @cur_value2
3060
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
3062
# check single-3 success: 1
3063
SET @cur_value1= -1;
3064
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
3065
UPDATE t1 SET f_int1 = @cur_value1
3066
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
3068
# check single-4 success: 1
3069
SELECT MAX(f_int1) INTO @cur_value FROM t1;
3070
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
3072
# check single-5 success: 1
3073
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
3075
# check single-6 success: 1
3076
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
3078
# check single-7 success: 1
3079
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
3080
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
3081
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
3082
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
3083
f_charbig = '#NULL#';
3085
SET f_int1 = NULL , f_int2 = -@max_row,
3086
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
3087
f_charbig = '#NULL#';
3088
# check null success: 1
3090
# check null-1 success: 1
3091
UPDATE t1 SET f_int1 = -@max_row
3092
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
3093
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
3095
# check null-2 success: 1
3096
UPDATE t1 SET f_int1 = NULL
3097
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
3098
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
3100
# check null-3 success: 1
3102
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
3103
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
3105
# check null-4 success: 1
3107
WHERE f_int1 = 0 AND f_int2 = 0
3108
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
3109
AND f_charbig = '#NULL#';
3111
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3112
SELECT f_int1, f_int1, '', '', 'was inserted'
3113
FROM t0_template source_tab
3114
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
3116
# check transactions-1 success: 1
3119
# check transactions-2 success: 1
3122
# check transactions-3 success: 1
3123
DELETE FROM t1 WHERE f_charbig = 'was inserted';
3127
# check transactions-4 success: 1
3128
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3129
SELECT f_int1, f_int1, '', '', 'was inserted'
3130
FROM t0_template source_tab
3131
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
3133
# check transactions-5 success: 1
3136
Warning 1196 Some non-transactional changed tables couldn't be rolled back
3138
# check transactions-6 success: 1
3139
# INFO: Storage engine used for t1 seems to be not transactional.
3142
# check transactions-7 success: 1
3143
DELETE FROM t1 WHERE f_charbig = 'was inserted';
3145
SET @@session.sql_mode = 'traditional';
3146
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
3147
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3148
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
3149
'', '', 'was inserted' FROM t0_template
3150
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
3151
ERROR 22012: Division by 0
3154
# check transactions-8 success: 1
3155
# INFO: Storage engine used for t1 seems to be unable to revert
3156
# changes made by the failing statement.
3157
SET @@session.sql_mode = '';
3159
DELETE FROM t1 WHERE f_charbig = 'was inserted';
3161
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
3163
# check special-1 success: 1
3164
UPDATE t1 SET f_charbig = '';
3166
# check special-2 success: 1
3167
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
3168
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
3169
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
3170
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3171
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3172
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3173
'just inserted' FROM t0_template
3174
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3175
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
3177
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3178
f_charbig = 'updated by trigger'
3179
WHERE f_int1 = new.f_int1;
3181
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3182
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
3183
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3185
# check trigger-1 success: 1
3187
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3188
f_int2 = CAST(f_char1 AS SIGNED INT),
3189
f_charbig = 'just inserted'
3190
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3192
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3193
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3194
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3195
'just inserted' FROM t0_template
3196
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3197
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
3199
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3200
f_charbig = 'updated by trigger'
3201
WHERE f_int1 = new.f_int1;
3203
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3204
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
3205
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3207
# check trigger-2 success: 1
3209
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3210
f_int2 = CAST(f_char1 AS SIGNED INT),
3211
f_charbig = 'just inserted'
3212
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3214
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3215
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3216
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3217
'just inserted' FROM t0_template
3218
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3219
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
3221
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3222
f_charbig = 'updated by trigger'
3223
WHERE f_int1 = new.f_int1;
3225
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3226
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3228
# check trigger-3 success: 1
3230
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3231
f_int2 = CAST(f_char1 AS SIGNED INT),
3232
f_charbig = 'just inserted'
3233
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3235
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3236
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3237
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3238
'just inserted' FROM t0_template
3239
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3240
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
3242
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3243
f_charbig = 'updated by trigger'
3244
WHERE f_int1 = - old.f_int1;
3246
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3247
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3249
# check trigger-4 success: 1
3251
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3252
f_int2 = CAST(f_char1 AS SIGNED INT),
3253
f_charbig = 'just inserted'
3254
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3256
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3257
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3258
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3259
'just inserted' FROM t0_template
3260
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3261
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
3263
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3264
f_charbig = 'updated by trigger'
3265
WHERE f_int1 = new.f_int1;
3267
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3268
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3270
# check trigger-5 success: 1
3272
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3273
f_int2 = CAST(f_char1 AS SIGNED INT),
3274
f_charbig = 'just inserted'
3275
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3277
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3278
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3279
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3280
'just inserted' FROM t0_template
3281
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3282
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
3284
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3285
f_charbig = 'updated by trigger'
3286
WHERE f_int1 = - old.f_int1;
3288
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3289
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3291
# check trigger-6 success: 1
3293
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3294
f_int2 = CAST(f_char1 AS SIGNED INT),
3295
f_charbig = 'just inserted'
3296
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3298
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3299
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3300
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3301
'just inserted' FROM t0_template
3302
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3303
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
3305
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3306
f_charbig = 'updated by trigger'
3307
WHERE f_int1 = - old.f_int1;
3310
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3312
# check trigger-7 success: 1
3314
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3315
f_int2 = CAST(f_char1 AS SIGNED INT),
3316
f_charbig = 'just inserted'
3317
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3319
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3320
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3321
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3322
'just inserted' FROM t0_template
3323
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3324
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
3326
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3327
f_charbig = 'updated by trigger'
3328
WHERE f_int1 = - old.f_int1;
3331
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3333
# check trigger-8 success: 1
3335
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3336
f_int2 = CAST(f_char1 AS SIGNED INT),
3337
f_charbig = 'just inserted'
3338
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3340
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3342
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3343
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
3345
SET new.f_int1 = old.f_int1 + @max_row,
3346
new.f_int2 = old.f_int2 - @max_row,
3347
new.f_charbig = '####updated per update trigger####';
3350
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
3351
f_charbig = '####updated per update statement itself####';
3353
# check trigger-9 success: 1
3355
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3356
f_int2 = CAST(f_char1 AS SIGNED INT),
3357
f_charbig = CONCAT('===',f_char1,'===');
3358
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
3360
SET new.f_int1 = new.f_int1 + @max_row,
3361
new.f_int2 = new.f_int2 - @max_row,
3362
new.f_charbig = '####updated per update trigger####';
3365
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
3366
f_charbig = '####updated per update statement itself####';
3368
# check trigger-10 success: 1
3370
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3371
f_int2 = CAST(f_char1 AS SIGNED INT),
3372
f_charbig = CONCAT('===',f_char1,'===');
3373
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
3375
SET new.f_int1 = @my_max1 + @counter,
3376
new.f_int2 = @my_min2 - @counter,
3377
new.f_charbig = '####updated per insert trigger####';
3378
SET @counter = @counter + 1;
3381
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
3382
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3383
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
3384
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
3385
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
3389
# check trigger-11 success: 1
3391
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
3392
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
3393
AND f_charbig = '####updated per insert trigger####';
3394
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
3396
SET new.f_int1 = @my_max1 + @counter,
3397
new.f_int2 = @my_min2 - @counter,
3398
new.f_charbig = '####updated per insert trigger####';
3399
SET @counter = @counter + 1;
3402
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
3403
INSERT INTO t1 (f_char1, f_char2, f_charbig)
3404
SELECT CAST(f_int1 AS CHAR),
3405
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
3406
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
3410
# check trigger-12 success: 1
3412
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
3413
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
3414
AND f_charbig = '####updated per insert trigger####';
3416
Table Op Msg_type Msg_text
3417
test.t1 analyze status OK
3418
CHECK TABLE t1 EXTENDED;
3419
Table Op Msg_type Msg_text
3420
test.t1 check status OK
3421
CHECKSUM TABLE t1 EXTENDED;
3423
test.t1 <some_value>
3425
Table Op Msg_type Msg_text
3426
test.t1 optimize status OK
3427
# check layout success: 1
3428
REPAIR TABLE t1 EXTENDED;
3429
Table Op Msg_type Msg_text
3430
test.t1 repair status OK
3431
# check layout success: 1
3434
# check TRUNCATE success: 1
3435
# check layout success: 1
3436
# End usability test (inc/partition_check.inc)
3443
f_charbig VARCHAR(1000)
3446
PARTITION BY LIST(ABS(MOD(f_int1,2)))
3447
SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
3448
(PARTITION part1 VALUES IN (0),
3449
PARTITION part2 VALUES IN (1),
3450
PARTITION part3 VALUES IN (NULL));
3451
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
3452
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
3453
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
3454
ALTER TABLE t1 MODIFY f_int2 BIGINT;
3455
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
3456
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
3457
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
3458
# Start usability test (inc/partition_check.inc)
3460
SHOW CREATE TABLE t1;
3462
t1 CREATE TABLE `t1` (
3463
`f_int1` int(11) DEFAULT NULL,
3464
`f_int2` bigint(20) DEFAULT NULL,
3465
`f_char1` char(20) DEFAULT NULL,
3466
`f_char2` char(20) DEFAULT NULL,
3467
`f_charbig` varchar(1000) DEFAULT NULL
3468
) ENGINE=MyISAM DEFAULT CHARSET=latin1
3469
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
3470
SUBPARTITION BY KEY (f_int1)
3472
(PARTITION part1 VALUES IN (0) ENGINE = MyISAM,
3473
PARTITION part2 VALUES IN (1) ENGINE = MyISAM,
3474
PARTITION part3 VALUES IN (NULL) ENGINE = MyISAM) */
3477
t1#P#part1#SP#part1sp0.MYD
3478
t1#P#part1#SP#part1sp0.MYI
3479
t1#P#part1#SP#part1sp1.MYD
3480
t1#P#part1#SP#part1sp1.MYI
3481
t1#P#part1#SP#part1sp2.MYD
3482
t1#P#part1#SP#part1sp2.MYI
3483
t1#P#part2#SP#part2sp0.MYD
3484
t1#P#part2#SP#part2sp0.MYI
3485
t1#P#part2#SP#part2sp1.MYD
3486
t1#P#part2#SP#part2sp1.MYI
3487
t1#P#part2#SP#part2sp2.MYD
3488
t1#P#part2#SP#part2sp2.MYI
3489
t1#P#part3#SP#part3sp0.MYD
3490
t1#P#part3#SP#part3sp0.MYI
3491
t1#P#part3#SP#part3sp1.MYD
3492
t1#P#part3#SP#part3sp1.MYI
3493
t1#P#part3#SP#part3sp2.MYD
3494
t1#P#part3#SP#part3sp2.MYI
3498
# check prerequisites-1 success: 1
3499
# check COUNT(*) success: 1
3500
# check MIN/MAX(f_int1) success: 1
3501
# check MIN/MAX(f_int2) success: 1
3502
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3503
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
3504
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
3505
WHERE f_int1 IN (2,3);
3506
# check prerequisites-3 success: 1
3507
DELETE FROM t1 WHERE f_charbig = 'delete me';
3508
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
3509
# check read via f_int1 success: 1
3510
# check read via f_int2 success: 1
3512
# check multiple-1 success: 1
3513
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
3515
# check multiple-2 success: 1
3516
INSERT INTO t1 SELECT * FROM t0_template
3517
WHERE MOD(f_int1,3) = 0;
3519
# check multiple-3 success: 1
3520
UPDATE t1 SET f_int1 = f_int1 + @max_row
3521
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
3522
AND @max_row_div2 + @max_row_div4;
3524
# check multiple-4 success: 1
3526
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
3527
AND @max_row_div2 + @max_row_div4 + @max_row;
3529
# check multiple-5 success: 1
3530
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
3532
SET f_int1 = @cur_value , f_int2 = @cur_value,
3533
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
3534
f_charbig = '#SINGLE#';
3536
# check single-1 success: 1
3537
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
3539
SET f_int1 = @cur_value , f_int2 = @cur_value,
3540
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
3541
f_charbig = '#SINGLE#';
3543
# check single-2 success: 1
3544
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
3545
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
3546
UPDATE t1 SET f_int1 = @cur_value2
3547
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
3549
# check single-3 success: 1
3550
SET @cur_value1= -1;
3551
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
3552
UPDATE t1 SET f_int1 = @cur_value1
3553
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
3555
# check single-4 success: 1
3556
SELECT MAX(f_int1) INTO @cur_value FROM t1;
3557
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
3559
# check single-5 success: 1
3560
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
3562
# check single-6 success: 1
3563
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
3565
# check single-7 success: 1
3566
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
3567
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
3568
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
3569
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
3570
f_charbig = '#NULL#';
3572
SET f_int1 = NULL , f_int2 = -@max_row,
3573
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
3574
f_charbig = '#NULL#';
3575
# check null success: 1
3577
# check null-1 success: 1
3578
UPDATE t1 SET f_int1 = -@max_row
3579
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
3580
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
3582
# check null-2 success: 1
3583
UPDATE t1 SET f_int1 = NULL
3584
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
3585
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
3587
# check null-3 success: 1
3589
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
3590
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
3592
# check null-4 success: 1
3594
WHERE f_int1 = 0 AND f_int2 = 0
3595
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
3596
AND f_charbig = '#NULL#';
3598
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3599
SELECT f_int1, f_int1, '', '', 'was inserted'
3600
FROM t0_template source_tab
3601
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
3603
# check transactions-1 success: 1
3606
# check transactions-2 success: 1
3609
# check transactions-3 success: 1
3610
DELETE FROM t1 WHERE f_charbig = 'was inserted';
3614
# check transactions-4 success: 1
3615
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3616
SELECT f_int1, f_int1, '', '', 'was inserted'
3617
FROM t0_template source_tab
3618
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
3620
# check transactions-5 success: 1
3623
Warning 1196 Some non-transactional changed tables couldn't be rolled back
3625
# check transactions-6 success: 1
3626
# INFO: Storage engine used for t1 seems to be not transactional.
3629
# check transactions-7 success: 1
3630
DELETE FROM t1 WHERE f_charbig = 'was inserted';
3632
SET @@session.sql_mode = 'traditional';
3633
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
3634
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3635
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
3636
'', '', 'was inserted' FROM t0_template
3637
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
3638
ERROR 22012: Division by 0
3641
# check transactions-8 success: 1
3642
# INFO: Storage engine used for t1 seems to be unable to revert
3643
# changes made by the failing statement.
3644
SET @@session.sql_mode = '';
3646
DELETE FROM t1 WHERE f_charbig = 'was inserted';
3648
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
3650
# check special-1 success: 1
3651
UPDATE t1 SET f_charbig = '';
3653
# check special-2 success: 1
3654
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
3655
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
3656
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
3657
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3658
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3659
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3660
'just inserted' FROM t0_template
3661
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3662
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
3664
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3665
f_charbig = 'updated by trigger'
3666
WHERE f_int1 = new.f_int1;
3668
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3669
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
3670
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3672
# check trigger-1 success: 1
3674
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3675
f_int2 = CAST(f_char1 AS SIGNED INT),
3676
f_charbig = 'just inserted'
3677
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3679
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3680
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3681
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3682
'just inserted' FROM t0_template
3683
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3684
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
3686
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3687
f_charbig = 'updated by trigger'
3688
WHERE f_int1 = new.f_int1;
3690
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3691
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
3692
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3694
# check trigger-2 success: 1
3696
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3697
f_int2 = CAST(f_char1 AS SIGNED INT),
3698
f_charbig = 'just inserted'
3699
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3701
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3702
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3703
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3704
'just inserted' FROM t0_template
3705
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3706
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
3708
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3709
f_charbig = 'updated by trigger'
3710
WHERE f_int1 = new.f_int1;
3712
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3713
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3715
# check trigger-3 success: 1
3717
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3718
f_int2 = CAST(f_char1 AS SIGNED INT),
3719
f_charbig = 'just inserted'
3720
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3722
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3723
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3724
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3725
'just inserted' FROM t0_template
3726
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3727
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
3729
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3730
f_charbig = 'updated by trigger'
3731
WHERE f_int1 = - old.f_int1;
3733
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3734
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3736
# check trigger-4 success: 1
3738
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3739
f_int2 = CAST(f_char1 AS SIGNED INT),
3740
f_charbig = 'just inserted'
3741
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3743
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3744
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3745
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3746
'just inserted' FROM t0_template
3747
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3748
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
3750
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3751
f_charbig = 'updated by trigger'
3752
WHERE f_int1 = new.f_int1;
3754
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3755
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3757
# check trigger-5 success: 1
3759
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3760
f_int2 = CAST(f_char1 AS SIGNED INT),
3761
f_charbig = 'just inserted'
3762
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3764
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3765
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3766
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3767
'just inserted' FROM t0_template
3768
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3769
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
3771
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3772
f_charbig = 'updated by trigger'
3773
WHERE f_int1 = - old.f_int1;
3775
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3776
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3778
# check trigger-6 success: 1
3780
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3781
f_int2 = CAST(f_char1 AS SIGNED INT),
3782
f_charbig = 'just inserted'
3783
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3785
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3786
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3787
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3788
'just inserted' FROM t0_template
3789
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3790
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
3792
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3793
f_charbig = 'updated by trigger'
3794
WHERE f_int1 = - old.f_int1;
3797
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3799
# check trigger-7 success: 1
3801
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3802
f_int2 = CAST(f_char1 AS SIGNED INT),
3803
f_charbig = 'just inserted'
3804
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3806
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3807
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3808
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3809
'just inserted' FROM t0_template
3810
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3811
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
3813
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3814
f_charbig = 'updated by trigger'
3815
WHERE f_int1 = - old.f_int1;
3818
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3820
# check trigger-8 success: 1
3822
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3823
f_int2 = CAST(f_char1 AS SIGNED INT),
3824
f_charbig = 'just inserted'
3825
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3827
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3829
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3830
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
3832
SET new.f_int1 = old.f_int1 + @max_row,
3833
new.f_int2 = old.f_int2 - @max_row,
3834
new.f_charbig = '####updated per update trigger####';
3837
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
3838
f_charbig = '####updated per update statement itself####';
3840
# check trigger-9 success: 1
3842
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3843
f_int2 = CAST(f_char1 AS SIGNED INT),
3844
f_charbig = CONCAT('===',f_char1,'===');
3845
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
3847
SET new.f_int1 = new.f_int1 + @max_row,
3848
new.f_int2 = new.f_int2 - @max_row,
3849
new.f_charbig = '####updated per update trigger####';
3852
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
3853
f_charbig = '####updated per update statement itself####';
3855
# check trigger-10 success: 1
3857
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3858
f_int2 = CAST(f_char1 AS SIGNED INT),
3859
f_charbig = CONCAT('===',f_char1,'===');
3860
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
3862
SET new.f_int1 = @my_max1 + @counter,
3863
new.f_int2 = @my_min2 - @counter,
3864
new.f_charbig = '####updated per insert trigger####';
3865
SET @counter = @counter + 1;
3868
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
3869
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3870
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
3871
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
3872
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
3876
# check trigger-11 success: 1
3878
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
3879
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
3880
AND f_charbig = '####updated per insert trigger####';
3881
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
3883
SET new.f_int1 = @my_max1 + @counter,
3884
new.f_int2 = @my_min2 - @counter,
3885
new.f_charbig = '####updated per insert trigger####';
3886
SET @counter = @counter + 1;
3889
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
3890
INSERT INTO t1 (f_char1, f_char2, f_charbig)
3891
SELECT CAST(f_int1 AS CHAR),
3892
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
3893
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
3897
# check trigger-12 success: 1
3899
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
3900
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
3901
AND f_charbig = '####updated per insert trigger####';
3903
Table Op Msg_type Msg_text
3904
test.t1 analyze status OK
3905
CHECK TABLE t1 EXTENDED;
3906
Table Op Msg_type Msg_text
3907
test.t1 check status OK
3908
CHECKSUM TABLE t1 EXTENDED;
3910
test.t1 <some_value>
3912
Table Op Msg_type Msg_text
3913
test.t1 optimize status OK
3914
# check layout success: 1
3915
REPAIR TABLE t1 EXTENDED;
3916
Table Op Msg_type Msg_text
3917
test.t1 repair status OK
3918
# check layout success: 1
3921
# check TRUNCATE success: 1
3922
# check layout success: 1
3923
# End usability test (inc/partition_check.inc)
3925
# 1.1.3 UNIQUE INDEX exists
3926
DROP TABLE IF EXISTS t1;
3932
f_charbig VARCHAR(1000)
3933
, UNIQUE INDEX uidx1 (f_int1,f_int2)
3935
PARTITION BY HASH(f_int1) PARTITIONS 2;
3936
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
3937
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
3938
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
3939
ALTER TABLE t1 MODIFY f_int2 BIGINT;
3940
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
3941
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
3942
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
3943
# Start usability test (inc/partition_check.inc)
3945
SHOW CREATE TABLE t1;
3947
t1 CREATE TABLE `t1` (
3948
`f_int1` int(11) DEFAULT NULL,
3949
`f_int2` bigint(20) DEFAULT NULL,
3950
`f_char1` char(20) DEFAULT NULL,
3951
`f_char2` char(20) DEFAULT NULL,
3952
`f_charbig` varchar(1000) DEFAULT NULL,
3953
UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
3954
) ENGINE=MyISAM DEFAULT CHARSET=latin1
3955
/*!50100 PARTITION BY HASH (f_int1)
3966
# check prerequisites-1 success: 1
3967
# check COUNT(*) success: 1
3968
# check MIN/MAX(f_int1) success: 1
3969
# check MIN/MAX(f_int2) success: 1
3970
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3971
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
3972
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
3973
WHERE f_int1 IN (2,3);
3974
ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
3975
# check prerequisites-3 success: 1
3976
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
3977
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3978
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
3979
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
3980
WHERE f_int1 IN (2,3);
3981
DELETE FROM t1 WHERE f_charbig = 'delete me';
3982
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3983
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
3984
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
3985
WHERE f_int1 IN (2,3);
3986
DELETE FROM t1 WHERE f_charbig = 'delete me';
3987
# check read via f_int1 success: 1
3988
# check read via f_int2 success: 1
3990
# check multiple-1 success: 1
3991
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
3993
# check multiple-2 success: 1
3994
INSERT INTO t1 SELECT * FROM t0_template
3995
WHERE MOD(f_int1,3) = 0;
3997
# check multiple-3 success: 1
3998
UPDATE t1 SET f_int1 = f_int1 + @max_row
3999
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
4000
AND @max_row_div2 + @max_row_div4;
4002
# check multiple-4 success: 1
4004
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
4005
AND @max_row_div2 + @max_row_div4 + @max_row;
4007
# check multiple-5 success: 1
4008
SELECT COUNT(*) INTO @try_count FROM t0_template
4009
WHERE MOD(f_int1,3) = 0
4010
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
4011
SELECT COUNT(*) INTO @clash_count
4012
FROM t1 INNER JOIN t0_template USING(f_int1)
4013
WHERE MOD(f_int1,3) = 0
4014
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
4015
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
4017
SET f_int1 = @cur_value , f_int2 = @cur_value,
4018
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
4019
f_charbig = '#SINGLE#';
4021
# check single-1 success: 1
4022
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
4024
SET f_int1 = @cur_value , f_int2 = @cur_value,
4025
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
4026
f_charbig = '#SINGLE#';
4028
# check single-2 success: 1
4029
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
4030
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
4031
UPDATE t1 SET f_int1 = @cur_value2
4032
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
4034
# check single-3 success: 1
4035
SET @cur_value1= -1;
4036
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
4037
UPDATE t1 SET f_int1 = @cur_value1
4038
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
4040
# check single-4 success: 1
4041
SELECT MAX(f_int1) INTO @cur_value FROM t1;
4042
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
4044
# check single-5 success: 1
4045
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
4047
# check single-6 success: 1
4048
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
4050
# check single-7 success: 1
4051
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
4052
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
4053
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
4054
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
4055
f_charbig = '#NULL#';
4057
SET f_int1 = NULL , f_int2 = -@max_row,
4058
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
4059
f_charbig = '#NULL#';
4060
# check null success: 1
4062
# check null-1 success: 1
4063
UPDATE t1 SET f_int1 = -@max_row
4064
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
4065
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
4067
# check null-2 success: 1
4068
UPDATE t1 SET f_int1 = NULL
4069
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
4070
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
4072
# check null-3 success: 1
4074
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
4075
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
4077
# check null-4 success: 1
4079
WHERE f_int1 = 0 AND f_int2 = 0
4080
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
4081
AND f_charbig = '#NULL#';
4082
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4083
SELECT f_int1, f_int1, '', '', 'was inserted'
4084
FROM t0_template source_tab
4085
WHERE MOD(f_int1,3) = 0
4086
AND f_int1 BETWEEN @max_row_div2 AND @max_row
4088
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
4089
f_int2 = 2 * @max_row + source_tab.f_int1,
4090
f_charbig = 'was updated';
4092
# check unique-1-a success: 1
4094
# check unique-1-b success: 1
4095
DELETE FROM t1 WHERE f_charbig = 'was inserted';
4096
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4097
f_int2 = CAST(f_char1 AS SIGNED INT),
4098
f_charbig = CONCAT('===',f_char1,'===')
4099
WHERE f_charbig = 'was updated';
4100
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4101
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
4102
FROM t0_template source_tab
4103
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
4105
# check replace success: 1
4107
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
4109
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
4110
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
4111
UPDATE t1 SET f_int2 = f_int1,
4112
f_char1 = CAST(f_int1 AS CHAR),
4113
f_char2 = CAST(f_int1 AS CHAR),
4114
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
4115
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
4117
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4118
SELECT f_int1, f_int1, '', '', 'was inserted'
4119
FROM t0_template source_tab
4120
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
4122
# check transactions-1 success: 1
4125
# check transactions-2 success: 1
4128
# check transactions-3 success: 1
4129
DELETE FROM t1 WHERE f_charbig = 'was inserted';
4133
# check transactions-4 success: 1
4134
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4135
SELECT f_int1, f_int1, '', '', 'was inserted'
4136
FROM t0_template source_tab
4137
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
4139
# check transactions-5 success: 1
4142
Warning 1196 Some non-transactional changed tables couldn't be rolled back
4144
# check transactions-6 success: 1
4145
# INFO: Storage engine used for t1 seems to be not transactional.
4148
# check transactions-7 success: 1
4149
DELETE FROM t1 WHERE f_charbig = 'was inserted';
4151
SET @@session.sql_mode = 'traditional';
4152
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
4153
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4154
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
4155
'', '', 'was inserted' FROM t0_template
4156
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
4157
ERROR 22012: Division by 0
4160
# check transactions-8 success: 1
4161
# INFO: Storage engine used for t1 seems to be unable to revert
4162
# changes made by the failing statement.
4163
SET @@session.sql_mode = '';
4165
DELETE FROM t1 WHERE f_charbig = 'was inserted';
4167
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
4169
# check special-1 success: 1
4170
UPDATE t1 SET f_charbig = '';
4172
# check special-2 success: 1
4173
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
4174
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
4175
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
4176
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4177
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4178
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4179
'just inserted' FROM t0_template
4180
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4181
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
4183
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4184
f_charbig = 'updated by trigger'
4185
WHERE f_int1 = new.f_int1;
4187
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4188
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
4189
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4191
# check trigger-1 success: 1
4193
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4194
f_int2 = CAST(f_char1 AS SIGNED INT),
4195
f_charbig = 'just inserted'
4196
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4198
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4199
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4200
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4201
'just inserted' FROM t0_template
4202
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4203
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
4205
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4206
f_charbig = 'updated by trigger'
4207
WHERE f_int1 = new.f_int1;
4209
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4210
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
4211
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4213
# check trigger-2 success: 1
4215
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4216
f_int2 = CAST(f_char1 AS SIGNED INT),
4217
f_charbig = 'just inserted'
4218
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4220
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4221
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4222
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4223
'just inserted' FROM t0_template
4224
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4225
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
4227
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4228
f_charbig = 'updated by trigger'
4229
WHERE f_int1 = new.f_int1;
4231
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
4232
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4234
# check trigger-3 success: 1
4236
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4237
f_int2 = CAST(f_char1 AS SIGNED INT),
4238
f_charbig = 'just inserted'
4239
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4241
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4242
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4243
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4244
'just inserted' FROM t0_template
4245
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4246
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
4248
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4249
f_charbig = 'updated by trigger'
4250
WHERE f_int1 = - old.f_int1;
4252
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
4253
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4255
# check trigger-4 success: 1
4257
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4258
f_int2 = CAST(f_char1 AS SIGNED INT),
4259
f_charbig = 'just inserted'
4260
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4262
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4263
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4264
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4265
'just inserted' FROM t0_template
4266
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4267
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
4269
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4270
f_charbig = 'updated by trigger'
4271
WHERE f_int1 = new.f_int1;
4273
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
4274
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4276
# check trigger-5 success: 1
4278
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4279
f_int2 = CAST(f_char1 AS SIGNED INT),
4280
f_charbig = 'just inserted'
4281
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4283
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4284
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4285
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4286
'just inserted' FROM t0_template
4287
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4288
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
4290
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4291
f_charbig = 'updated by trigger'
4292
WHERE f_int1 = - old.f_int1;
4294
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
4295
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4297
# check trigger-6 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 DELETE 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 = - old.f_int1;
4316
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4318
# check trigger-7 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 AFTER DELETE 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;
4337
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4339
# check trigger-8 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;
4348
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4349
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
4351
SET new.f_int1 = old.f_int1 + @max_row,
4352
new.f_int2 = old.f_int2 - @max_row,
4353
new.f_charbig = '####updated per update trigger####';
4356
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
4357
f_charbig = '####updated per update statement itself####';
4359
# check trigger-9 success: 1
4361
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4362
f_int2 = CAST(f_char1 AS SIGNED INT),
4363
f_charbig = CONCAT('===',f_char1,'===');
4364
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
4366
SET new.f_int1 = new.f_int1 + @max_row,
4367
new.f_int2 = new.f_int2 - @max_row,
4368
new.f_charbig = '####updated per update trigger####';
4371
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
4372
f_charbig = '####updated per update statement itself####';
4374
# check trigger-10 success: 1
4376
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4377
f_int2 = CAST(f_char1 AS SIGNED INT),
4378
f_charbig = CONCAT('===',f_char1,'===');
4379
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
4381
SET new.f_int1 = @my_max1 + @counter,
4382
new.f_int2 = @my_min2 - @counter,
4383
new.f_charbig = '####updated per insert trigger####';
4384
SET @counter = @counter + 1;
4387
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
4388
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4389
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
4390
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
4391
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
4395
# check trigger-11 success: 1
4397
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
4398
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
4399
AND f_charbig = '####updated per insert trigger####';
4400
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
4402
SET new.f_int1 = @my_max1 + @counter,
4403
new.f_int2 = @my_min2 - @counter,
4404
new.f_charbig = '####updated per insert trigger####';
4405
SET @counter = @counter + 1;
4408
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
4409
INSERT INTO t1 (f_char1, f_char2, f_charbig)
4410
SELECT CAST(f_int1 AS CHAR),
4411
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
4412
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
4416
# check trigger-12 success: 1
4418
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
4419
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
4420
AND f_charbig = '####updated per insert trigger####';
4422
Table Op Msg_type Msg_text
4423
test.t1 analyze status OK
4424
CHECK TABLE t1 EXTENDED;
4425
Table Op Msg_type Msg_text
4426
test.t1 check status OK
4427
CHECKSUM TABLE t1 EXTENDED;
4429
test.t1 <some_value>
4431
Table Op Msg_type Msg_text
4432
test.t1 optimize status OK
4433
# check layout success: 1
4434
REPAIR TABLE t1 EXTENDED;
4435
Table Op Msg_type Msg_text
4436
test.t1 repair status OK
4437
# check layout success: 1
4440
# check TRUNCATE success: 1
4441
# check layout success: 1
4442
# End usability test (inc/partition_check.inc)
4449
f_charbig VARCHAR(1000)
4450
, UNIQUE INDEX uidx1 (f_int1,f_int2)
4452
PARTITION BY KEY(f_int1) PARTITIONS 5;
4453
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
4454
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
4455
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
4456
ALTER TABLE t1 MODIFY f_int2 BIGINT;
4457
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
4458
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
4459
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
4460
# Start usability test (inc/partition_check.inc)
4462
SHOW CREATE TABLE t1;
4464
t1 CREATE TABLE `t1` (
4465
`f_int1` int(11) DEFAULT NULL,
4466
`f_int2` bigint(20) DEFAULT NULL,
4467
`f_char1` char(20) DEFAULT NULL,
4468
`f_char2` char(20) DEFAULT NULL,
4469
`f_charbig` varchar(1000) DEFAULT NULL,
4470
UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
4471
) ENGINE=MyISAM DEFAULT CHARSET=latin1
4472
/*!50100 PARTITION BY KEY (f_int1)
4489
# check prerequisites-1 success: 1
4490
# check COUNT(*) success: 1
4491
# check MIN/MAX(f_int1) success: 1
4492
# check MIN/MAX(f_int2) success: 1
4493
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4494
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
4495
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
4496
WHERE f_int1 IN (2,3);
4497
ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
4498
# check prerequisites-3 success: 1
4499
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
4500
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4501
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
4502
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
4503
WHERE f_int1 IN (2,3);
4504
DELETE FROM t1 WHERE f_charbig = 'delete me';
4505
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4506
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
4507
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
4508
WHERE f_int1 IN (2,3);
4509
DELETE FROM t1 WHERE f_charbig = 'delete me';
4510
# check read via f_int1 success: 1
4511
# check read via f_int2 success: 1
4513
# check multiple-1 success: 1
4514
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
4516
# check multiple-2 success: 1
4517
INSERT INTO t1 SELECT * FROM t0_template
4518
WHERE MOD(f_int1,3) = 0;
4520
# check multiple-3 success: 1
4521
UPDATE t1 SET f_int1 = f_int1 + @max_row
4522
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
4523
AND @max_row_div2 + @max_row_div4;
4525
# check multiple-4 success: 1
4527
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
4528
AND @max_row_div2 + @max_row_div4 + @max_row;
4530
# check multiple-5 success: 1
4531
SELECT COUNT(*) INTO @try_count FROM t0_template
4532
WHERE MOD(f_int1,3) = 0
4533
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
4534
SELECT COUNT(*) INTO @clash_count
4535
FROM t1 INNER JOIN t0_template USING(f_int1)
4536
WHERE MOD(f_int1,3) = 0
4537
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
4538
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
4540
SET f_int1 = @cur_value , f_int2 = @cur_value,
4541
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
4542
f_charbig = '#SINGLE#';
4544
# check single-1 success: 1
4545
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
4547
SET f_int1 = @cur_value , f_int2 = @cur_value,
4548
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
4549
f_charbig = '#SINGLE#';
4551
# check single-2 success: 1
4552
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
4553
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
4554
UPDATE t1 SET f_int1 = @cur_value2
4555
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
4557
# check single-3 success: 1
4558
SET @cur_value1= -1;
4559
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
4560
UPDATE t1 SET f_int1 = @cur_value1
4561
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
4563
# check single-4 success: 1
4564
SELECT MAX(f_int1) INTO @cur_value FROM t1;
4565
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
4567
# check single-5 success: 1
4568
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
4570
# check single-6 success: 1
4571
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
4573
# check single-7 success: 1
4574
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
4575
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
4576
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
4577
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
4578
f_charbig = '#NULL#';
4580
SET f_int1 = NULL , f_int2 = -@max_row,
4581
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
4582
f_charbig = '#NULL#';
4583
# check null success: 1
4585
# check null-1 success: 1
4586
UPDATE t1 SET f_int1 = -@max_row
4587
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
4588
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
4590
# check null-2 success: 1
4591
UPDATE t1 SET f_int1 = NULL
4592
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
4593
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
4595
# check null-3 success: 1
4597
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
4598
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
4600
# check null-4 success: 1
4602
WHERE f_int1 = 0 AND f_int2 = 0
4603
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
4604
AND f_charbig = '#NULL#';
4605
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4606
SELECT f_int1, f_int1, '', '', 'was inserted'
4607
FROM t0_template source_tab
4608
WHERE MOD(f_int1,3) = 0
4609
AND f_int1 BETWEEN @max_row_div2 AND @max_row
4611
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
4612
f_int2 = 2 * @max_row + source_tab.f_int1,
4613
f_charbig = 'was updated';
4615
# check unique-1-a success: 1
4617
# check unique-1-b success: 1
4618
DELETE FROM t1 WHERE f_charbig = 'was inserted';
4619
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4620
f_int2 = CAST(f_char1 AS SIGNED INT),
4621
f_charbig = CONCAT('===',f_char1,'===')
4622
WHERE f_charbig = 'was updated';
4623
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4624
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
4625
FROM t0_template source_tab
4626
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
4628
# check replace success: 1
4630
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
4632
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
4633
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
4634
UPDATE t1 SET f_int2 = f_int1,
4635
f_char1 = CAST(f_int1 AS CHAR),
4636
f_char2 = CAST(f_int1 AS CHAR),
4637
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
4638
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
4640
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4641
SELECT f_int1, f_int1, '', '', 'was inserted'
4642
FROM t0_template source_tab
4643
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
4645
# check transactions-1 success: 1
4648
# check transactions-2 success: 1
4651
# check transactions-3 success: 1
4652
DELETE FROM t1 WHERE f_charbig = 'was inserted';
4656
# check transactions-4 success: 1
4657
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4658
SELECT f_int1, f_int1, '', '', 'was inserted'
4659
FROM t0_template source_tab
4660
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
4662
# check transactions-5 success: 1
4665
Warning 1196 Some non-transactional changed tables couldn't be rolled back
4667
# check transactions-6 success: 1
4668
# INFO: Storage engine used for t1 seems to be not transactional.
4671
# check transactions-7 success: 1
4672
DELETE FROM t1 WHERE f_charbig = 'was inserted';
4674
SET @@session.sql_mode = 'traditional';
4675
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
4676
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4677
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
4678
'', '', 'was inserted' FROM t0_template
4679
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
4680
ERROR 22012: Division by 0
4683
# check transactions-8 success: 1
4684
# INFO: Storage engine used for t1 seems to be unable to revert
4685
# changes made by the failing statement.
4686
SET @@session.sql_mode = '';
4688
DELETE FROM t1 WHERE f_charbig = 'was inserted';
4690
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
4692
# check special-1 success: 1
4693
UPDATE t1 SET f_charbig = '';
4695
# check special-2 success: 1
4696
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
4697
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
4698
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
4699
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4700
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4701
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4702
'just inserted' FROM t0_template
4703
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4704
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
4706
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4707
f_charbig = 'updated by trigger'
4708
WHERE f_int1 = new.f_int1;
4710
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4711
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
4712
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4714
# check trigger-1 success: 1
4716
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4717
f_int2 = CAST(f_char1 AS SIGNED INT),
4718
f_charbig = 'just inserted'
4719
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4721
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4722
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4723
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4724
'just inserted' FROM t0_template
4725
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4726
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
4728
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4729
f_charbig = 'updated by trigger'
4730
WHERE f_int1 = new.f_int1;
4732
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4733
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
4734
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4736
# check trigger-2 success: 1
4738
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4739
f_int2 = CAST(f_char1 AS SIGNED INT),
4740
f_charbig = 'just inserted'
4741
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4743
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4744
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4745
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4746
'just inserted' FROM t0_template
4747
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4748
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
4750
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4751
f_charbig = 'updated by trigger'
4752
WHERE f_int1 = new.f_int1;
4754
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
4755
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4757
# check trigger-3 success: 1
4759
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4760
f_int2 = CAST(f_char1 AS SIGNED INT),
4761
f_charbig = 'just inserted'
4762
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4764
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4765
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4766
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4767
'just inserted' FROM t0_template
4768
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4769
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
4771
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4772
f_charbig = 'updated by trigger'
4773
WHERE f_int1 = - old.f_int1;
4775
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
4776
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4778
# check trigger-4 success: 1
4780
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4781
f_int2 = CAST(f_char1 AS SIGNED INT),
4782
f_charbig = 'just inserted'
4783
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4785
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4786
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4787
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4788
'just inserted' FROM t0_template
4789
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4790
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
4792
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4793
f_charbig = 'updated by trigger'
4794
WHERE f_int1 = new.f_int1;
4796
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
4797
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4799
# check trigger-5 success: 1
4801
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4802
f_int2 = CAST(f_char1 AS SIGNED INT),
4803
f_charbig = 'just inserted'
4804
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4806
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4807
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4808
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4809
'just inserted' FROM t0_template
4810
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4811
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
4813
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4814
f_charbig = 'updated by trigger'
4815
WHERE f_int1 = - old.f_int1;
4817
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
4818
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4820
# check trigger-6 success: 1
4822
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4823
f_int2 = CAST(f_char1 AS SIGNED INT),
4824
f_charbig = 'just inserted'
4825
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4827
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4828
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4829
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4830
'just inserted' FROM t0_template
4831
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4832
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
4834
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4835
f_charbig = 'updated by trigger'
4836
WHERE f_int1 = - old.f_int1;
4839
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4841
# check trigger-7 success: 1
4843
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4844
f_int2 = CAST(f_char1 AS SIGNED INT),
4845
f_charbig = 'just inserted'
4846
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4848
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4849
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4850
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4851
'just inserted' FROM t0_template
4852
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4853
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
4855
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4856
f_charbig = 'updated by trigger'
4857
WHERE f_int1 = - old.f_int1;
4860
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4862
# check trigger-8 success: 1
4864
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4865
f_int2 = CAST(f_char1 AS SIGNED INT),
4866
f_charbig = 'just inserted'
4867
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4869
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4871
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4872
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
4874
SET new.f_int1 = old.f_int1 + @max_row,
4875
new.f_int2 = old.f_int2 - @max_row,
4876
new.f_charbig = '####updated per update trigger####';
4879
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
4880
f_charbig = '####updated per update statement itself####';
4882
# check trigger-9 success: 1
4884
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4885
f_int2 = CAST(f_char1 AS SIGNED INT),
4886
f_charbig = CONCAT('===',f_char1,'===');
4887
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
4889
SET new.f_int1 = new.f_int1 + @max_row,
4890
new.f_int2 = new.f_int2 - @max_row,
4891
new.f_charbig = '####updated per update trigger####';
4894
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
4895
f_charbig = '####updated per update statement itself####';
4897
# check trigger-10 success: 1
4899
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4900
f_int2 = CAST(f_char1 AS SIGNED INT),
4901
f_charbig = CONCAT('===',f_char1,'===');
4902
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
4904
SET new.f_int1 = @my_max1 + @counter,
4905
new.f_int2 = @my_min2 - @counter,
4906
new.f_charbig = '####updated per insert trigger####';
4907
SET @counter = @counter + 1;
4910
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
4911
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4912
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
4913
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
4914
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
4918
# check trigger-11 success: 1
4920
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
4921
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
4922
AND f_charbig = '####updated per insert trigger####';
4923
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
4925
SET new.f_int1 = @my_max1 + @counter,
4926
new.f_int2 = @my_min2 - @counter,
4927
new.f_charbig = '####updated per insert trigger####';
4928
SET @counter = @counter + 1;
4931
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
4932
INSERT INTO t1 (f_char1, f_char2, f_charbig)
4933
SELECT CAST(f_int1 AS CHAR),
4934
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
4935
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
4939
# check trigger-12 success: 1
4941
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
4942
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
4943
AND f_charbig = '####updated per insert trigger####';
4945
Table Op Msg_type Msg_text
4946
test.t1 analyze status OK
4947
CHECK TABLE t1 EXTENDED;
4948
Table Op Msg_type Msg_text
4949
test.t1 check status OK
4950
CHECKSUM TABLE t1 EXTENDED;
4952
test.t1 <some_value>
4954
Table Op Msg_type Msg_text
4955
test.t1 optimize status OK
4956
# check layout success: 1
4957
REPAIR TABLE t1 EXTENDED;
4958
Table Op Msg_type Msg_text
4959
test.t1 repair status OK
4960
# check layout success: 1
4963
# check TRUNCATE success: 1
4964
# check layout success: 1
4965
# End usability test (inc/partition_check.inc)
4972
f_charbig VARCHAR(1000)
4973
, UNIQUE INDEX uidx1 (f_int1,f_int2)
4975
PARTITION BY LIST(MOD(f_int1,4))
4976
(PARTITION part_3 VALUES IN (-3),
4977
PARTITION part_2 VALUES IN (-2),
4978
PARTITION part_1 VALUES IN (-1),
4979
PARTITION part_N VALUES IN (NULL),
4980
PARTITION part0 VALUES IN (0),
4981
PARTITION part1 VALUES IN (1),
4982
PARTITION part2 VALUES IN (2),
4983
PARTITION part3 VALUES IN (3));
4984
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
4985
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
4986
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
4987
ALTER TABLE t1 MODIFY f_int2 BIGINT;
4988
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
4989
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
4990
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
4991
# Start usability test (inc/partition_check.inc)
4993
SHOW CREATE TABLE t1;
4995
t1 CREATE TABLE `t1` (
4996
`f_int1` int(11) DEFAULT NULL,
4997
`f_int2` bigint(20) DEFAULT NULL,
4998
`f_char1` char(20) DEFAULT NULL,
4999
`f_char2` char(20) DEFAULT NULL,
5000
`f_charbig` varchar(1000) DEFAULT NULL,
5001
UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
5002
) ENGINE=MyISAM DEFAULT CHARSET=latin1
5003
/*!50100 PARTITION BY LIST (MOD(f_int1,4))
5004
(PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM,
5005
PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM,
5006
PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM,
5007
PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM,
5008
PARTITION part0 VALUES IN (0) ENGINE = MyISAM,
5009
PARTITION part1 VALUES IN (1) ENGINE = MyISAM,
5010
PARTITION part2 VALUES IN (2) ENGINE = MyISAM,
5011
PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */
5033
# check prerequisites-1 success: 1
5034
# check COUNT(*) success: 1
5035
# check MIN/MAX(f_int1) success: 1
5036
# check MIN/MAX(f_int2) success: 1
5037
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5038
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
5039
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
5040
WHERE f_int1 IN (2,3);
5041
ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
5042
# check prerequisites-3 success: 1
5043
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
5044
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5045
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
5046
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
5047
WHERE f_int1 IN (2,3);
5048
DELETE FROM t1 WHERE f_charbig = 'delete me';
5049
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5050
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
5051
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
5052
WHERE f_int1 IN (2,3);
5053
DELETE FROM t1 WHERE f_charbig = 'delete me';
5054
# check read via f_int1 success: 1
5055
# check read via f_int2 success: 1
5057
# check multiple-1 success: 1
5058
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
5060
# check multiple-2 success: 1
5061
INSERT INTO t1 SELECT * FROM t0_template
5062
WHERE MOD(f_int1,3) = 0;
5064
# check multiple-3 success: 1
5065
UPDATE t1 SET f_int1 = f_int1 + @max_row
5066
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
5067
AND @max_row_div2 + @max_row_div4;
5069
# check multiple-4 success: 1
5071
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
5072
AND @max_row_div2 + @max_row_div4 + @max_row;
5074
# check multiple-5 success: 1
5075
SELECT COUNT(*) INTO @try_count FROM t0_template
5076
WHERE MOD(f_int1,3) = 0
5077
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
5078
SELECT COUNT(*) INTO @clash_count
5079
FROM t1 INNER JOIN t0_template USING(f_int1)
5080
WHERE MOD(f_int1,3) = 0
5081
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
5082
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
5084
SET f_int1 = @cur_value , f_int2 = @cur_value,
5085
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
5086
f_charbig = '#SINGLE#';
5088
# check single-1 success: 1
5089
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
5091
SET f_int1 = @cur_value , f_int2 = @cur_value,
5092
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
5093
f_charbig = '#SINGLE#';
5095
# check single-2 success: 1
5096
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
5097
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
5098
UPDATE t1 SET f_int1 = @cur_value2
5099
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
5101
# check single-3 success: 1
5102
SET @cur_value1= -1;
5103
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
5104
UPDATE t1 SET f_int1 = @cur_value1
5105
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
5107
# check single-4 success: 1
5108
SELECT MAX(f_int1) INTO @cur_value FROM t1;
5109
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
5111
# check single-5 success: 1
5112
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
5114
# check single-6 success: 1
5115
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
5117
# check single-7 success: 1
5118
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
5119
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
5120
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
5121
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
5122
f_charbig = '#NULL#';
5124
SET f_int1 = NULL , f_int2 = -@max_row,
5125
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
5126
f_charbig = '#NULL#';
5127
# check null success: 1
5129
# check null-1 success: 1
5130
UPDATE t1 SET f_int1 = -@max_row
5131
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
5132
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
5134
# check null-2 success: 1
5135
UPDATE t1 SET f_int1 = NULL
5136
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
5137
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
5139
# check null-3 success: 1
5141
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
5142
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
5144
# check null-4 success: 1
5146
WHERE f_int1 = 0 AND f_int2 = 0
5147
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
5148
AND f_charbig = '#NULL#';
5149
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5150
SELECT f_int1, f_int1, '', '', 'was inserted'
5151
FROM t0_template source_tab
5152
WHERE MOD(f_int1,3) = 0
5153
AND f_int1 BETWEEN @max_row_div2 AND @max_row
5155
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
5156
f_int2 = 2 * @max_row + source_tab.f_int1,
5157
f_charbig = 'was updated';
5159
# check unique-1-a success: 1
5161
# check unique-1-b success: 1
5162
DELETE FROM t1 WHERE f_charbig = 'was inserted';
5163
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5164
f_int2 = CAST(f_char1 AS SIGNED INT),
5165
f_charbig = CONCAT('===',f_char1,'===')
5166
WHERE f_charbig = 'was updated';
5167
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5168
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
5169
FROM t0_template source_tab
5170
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
5172
# check replace success: 1
5174
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
5176
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
5177
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
5178
UPDATE t1 SET f_int2 = f_int1,
5179
f_char1 = CAST(f_int1 AS CHAR),
5180
f_char2 = CAST(f_int1 AS CHAR),
5181
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
5182
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
5184
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5185
SELECT f_int1, f_int1, '', '', 'was inserted'
5186
FROM t0_template source_tab
5187
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
5189
# check transactions-1 success: 1
5192
# check transactions-2 success: 1
5195
# check transactions-3 success: 1
5196
DELETE FROM t1 WHERE f_charbig = 'was inserted';
5200
# check transactions-4 success: 1
5201
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5202
SELECT f_int1, f_int1, '', '', 'was inserted'
5203
FROM t0_template source_tab
5204
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
5206
# check transactions-5 success: 1
5209
Warning 1196 Some non-transactional changed tables couldn't be rolled back
5211
# check transactions-6 success: 1
5212
# INFO: Storage engine used for t1 seems to be not transactional.
5215
# check transactions-7 success: 1
5216
DELETE FROM t1 WHERE f_charbig = 'was inserted';
5218
SET @@session.sql_mode = 'traditional';
5219
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
5220
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5221
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
5222
'', '', 'was inserted' FROM t0_template
5223
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
5224
ERROR 22012: Division by 0
5227
# check transactions-8 success: 1
5228
# INFO: Storage engine used for t1 seems to be unable to revert
5229
# changes made by the failing statement.
5230
SET @@session.sql_mode = '';
5232
DELETE FROM t1 WHERE f_charbig = 'was inserted';
5234
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
5236
# check special-1 success: 1
5237
UPDATE t1 SET f_charbig = '';
5239
# check special-2 success: 1
5240
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
5241
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
5242
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
5243
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5244
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5245
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5246
'just inserted' FROM t0_template
5247
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5248
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
5250
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5251
f_charbig = 'updated by trigger'
5252
WHERE f_int1 = new.f_int1;
5254
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5255
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
5256
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5258
# check trigger-1 success: 1
5260
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5261
f_int2 = CAST(f_char1 AS SIGNED INT),
5262
f_charbig = 'just inserted'
5263
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5265
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5266
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5267
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5268
'just inserted' FROM t0_template
5269
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5270
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
5272
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5273
f_charbig = 'updated by trigger'
5274
WHERE f_int1 = new.f_int1;
5276
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5277
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
5278
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5280
# check trigger-2 success: 1
5282
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5283
f_int2 = CAST(f_char1 AS SIGNED INT),
5284
f_charbig = 'just inserted'
5285
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5287
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5288
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5289
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5290
'just inserted' FROM t0_template
5291
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5292
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
5294
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5295
f_charbig = 'updated by trigger'
5296
WHERE f_int1 = new.f_int1;
5298
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
5299
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5301
# check trigger-3 success: 1
5303
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5304
f_int2 = CAST(f_char1 AS SIGNED INT),
5305
f_charbig = 'just inserted'
5306
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5308
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5309
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5310
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5311
'just inserted' FROM t0_template
5312
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5313
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
5315
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5316
f_charbig = 'updated by trigger'
5317
WHERE f_int1 = - old.f_int1;
5319
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
5320
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5322
# check trigger-4 success: 1
5324
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5325
f_int2 = CAST(f_char1 AS SIGNED INT),
5326
f_charbig = 'just inserted'
5327
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5329
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5330
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5331
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5332
'just inserted' FROM t0_template
5333
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5334
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
5336
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5337
f_charbig = 'updated by trigger'
5338
WHERE f_int1 = new.f_int1;
5340
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
5341
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5343
# check trigger-5 success: 1
5345
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5346
f_int2 = CAST(f_char1 AS SIGNED INT),
5347
f_charbig = 'just inserted'
5348
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5350
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5351
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5352
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5353
'just inserted' FROM t0_template
5354
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5355
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
5357
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5358
f_charbig = 'updated by trigger'
5359
WHERE f_int1 = - old.f_int1;
5361
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
5362
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5364
# check trigger-6 success: 1
5366
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5367
f_int2 = CAST(f_char1 AS SIGNED INT),
5368
f_charbig = 'just inserted'
5369
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5371
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5372
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5373
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5374
'just inserted' FROM t0_template
5375
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5376
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
5378
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5379
f_charbig = 'updated by trigger'
5380
WHERE f_int1 = - old.f_int1;
5383
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5385
# check trigger-7 success: 1
5387
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5388
f_int2 = CAST(f_char1 AS SIGNED INT),
5389
f_charbig = 'just inserted'
5390
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5392
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5393
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5394
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5395
'just inserted' FROM t0_template
5396
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5397
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
5399
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5400
f_charbig = 'updated by trigger'
5401
WHERE f_int1 = - old.f_int1;
5404
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5406
# check trigger-8 success: 1
5408
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5409
f_int2 = CAST(f_char1 AS SIGNED INT),
5410
f_charbig = 'just inserted'
5411
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5413
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5415
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5416
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
5418
SET new.f_int1 = old.f_int1 + @max_row,
5419
new.f_int2 = old.f_int2 - @max_row,
5420
new.f_charbig = '####updated per update trigger####';
5423
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
5424
f_charbig = '####updated per update statement itself####';
5426
# check trigger-9 success: 1
5428
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5429
f_int2 = CAST(f_char1 AS SIGNED INT),
5430
f_charbig = CONCAT('===',f_char1,'===');
5431
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
5433
SET new.f_int1 = new.f_int1 + @max_row,
5434
new.f_int2 = new.f_int2 - @max_row,
5435
new.f_charbig = '####updated per update trigger####';
5438
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
5439
f_charbig = '####updated per update statement itself####';
5441
# check trigger-10 success: 1
5443
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5444
f_int2 = CAST(f_char1 AS SIGNED INT),
5445
f_charbig = CONCAT('===',f_char1,'===');
5446
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
5448
SET new.f_int1 = @my_max1 + @counter,
5449
new.f_int2 = @my_min2 - @counter,
5450
new.f_charbig = '####updated per insert trigger####';
5451
SET @counter = @counter + 1;
5454
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
5455
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5456
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
5457
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
5458
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
5462
# check trigger-11 success: 1
5464
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
5465
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
5466
AND f_charbig = '####updated per insert trigger####';
5467
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
5469
SET new.f_int1 = @my_max1 + @counter,
5470
new.f_int2 = @my_min2 - @counter,
5471
new.f_charbig = '####updated per insert trigger####';
5472
SET @counter = @counter + 1;
5475
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
5476
INSERT INTO t1 (f_char1, f_char2, f_charbig)
5477
SELECT CAST(f_int1 AS CHAR),
5478
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
5479
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
5483
# check trigger-12 success: 1
5485
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
5486
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
5487
AND f_charbig = '####updated per insert trigger####';
5489
Table Op Msg_type Msg_text
5490
test.t1 analyze status OK
5491
CHECK TABLE t1 EXTENDED;
5492
Table Op Msg_type Msg_text
5493
test.t1 check status OK
5494
CHECKSUM TABLE t1 EXTENDED;
5496
test.t1 <some_value>
5498
Table Op Msg_type Msg_text
5499
test.t1 optimize status OK
5500
# check layout success: 1
5501
REPAIR TABLE t1 EXTENDED;
5502
Table Op Msg_type Msg_text
5503
test.t1 repair status OK
5504
# check layout success: 1
5507
# check TRUNCATE success: 1
5508
# check layout success: 1
5509
# End usability test (inc/partition_check.inc)
5516
f_charbig VARCHAR(1000)
5517
, UNIQUE INDEX uidx1 (f_int1,f_int2)
5519
PARTITION BY RANGE(f_int1)
5520
(PARTITION parta VALUES LESS THAN (0),
5521
PARTITION partb VALUES LESS THAN (5),
5522
PARTITION partc VALUES LESS THAN (10),
5523
PARTITION partd VALUES LESS THAN (10 + 5),
5524
PARTITION parte VALUES LESS THAN (20),
5525
PARTITION partf VALUES LESS THAN (2147483646));
5526
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
5527
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
5528
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
5529
ALTER TABLE t1 MODIFY f_int2 BIGINT;
5530
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
5531
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
5532
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
5533
# Start usability test (inc/partition_check.inc)
5535
SHOW CREATE TABLE t1;
5537
t1 CREATE TABLE `t1` (
5538
`f_int1` int(11) DEFAULT NULL,
5539
`f_int2` bigint(20) DEFAULT NULL,
5540
`f_char1` char(20) DEFAULT NULL,
5541
`f_char2` char(20) DEFAULT NULL,
5542
`f_charbig` varchar(1000) DEFAULT NULL,
5543
UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
5544
) ENGINE=MyISAM DEFAULT CHARSET=latin1
5545
/*!50100 PARTITION BY RANGE (f_int1)
5546
(PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM,
5547
PARTITION partb VALUES LESS THAN (5) ENGINE = MyISAM,
5548
PARTITION partc VALUES LESS THAN (10) ENGINE = MyISAM,
5549
PARTITION partd VALUES LESS THAN (15) ENGINE = MyISAM,
5550
PARTITION parte VALUES LESS THAN (20) ENGINE = MyISAM,
5551
PARTITION partf VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
5569
# check prerequisites-1 success: 1
5570
# check COUNT(*) success: 1
5571
# check MIN/MAX(f_int1) success: 1
5572
# check MIN/MAX(f_int2) success: 1
5573
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5574
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
5575
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
5576
WHERE f_int1 IN (2,3);
5577
ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
5578
# check prerequisites-3 success: 1
5579
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
5580
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5581
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
5582
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
5583
WHERE f_int1 IN (2,3);
5584
DELETE FROM t1 WHERE f_charbig = 'delete me';
5585
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5586
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
5587
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
5588
WHERE f_int1 IN (2,3);
5589
DELETE FROM t1 WHERE f_charbig = 'delete me';
5590
# check read via f_int1 success: 1
5591
# check read via f_int2 success: 1
5593
# check multiple-1 success: 1
5594
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
5596
# check multiple-2 success: 1
5597
INSERT INTO t1 SELECT * FROM t0_template
5598
WHERE MOD(f_int1,3) = 0;
5600
# check multiple-3 success: 1
5601
UPDATE t1 SET f_int1 = f_int1 + @max_row
5602
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
5603
AND @max_row_div2 + @max_row_div4;
5605
# check multiple-4 success: 1
5607
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
5608
AND @max_row_div2 + @max_row_div4 + @max_row;
5610
# check multiple-5 success: 1
5611
SELECT COUNT(*) INTO @try_count FROM t0_template
5612
WHERE MOD(f_int1,3) = 0
5613
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
5614
SELECT COUNT(*) INTO @clash_count
5615
FROM t1 INNER JOIN t0_template USING(f_int1)
5616
WHERE MOD(f_int1,3) = 0
5617
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
5618
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
5620
SET f_int1 = @cur_value , f_int2 = @cur_value,
5621
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
5622
f_charbig = '#SINGLE#';
5624
# check single-1 success: 1
5625
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
5627
SET f_int1 = @cur_value , f_int2 = @cur_value,
5628
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
5629
f_charbig = '#SINGLE#';
5631
# check single-2 success: 1
5632
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
5633
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
5634
UPDATE t1 SET f_int1 = @cur_value2
5635
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
5637
# check single-3 success: 1
5638
SET @cur_value1= -1;
5639
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
5640
UPDATE t1 SET f_int1 = @cur_value1
5641
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
5643
# check single-4 success: 1
5644
SELECT MAX(f_int1) INTO @cur_value FROM t1;
5645
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
5647
# check single-5 success: 1
5648
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
5650
# check single-6 success: 1
5651
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
5652
ERROR HY000: Table has no partition for value 2147483647
5653
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
5654
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
5655
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
5656
f_charbig = '#NULL#';
5658
SET f_int1 = NULL , f_int2 = -@max_row,
5659
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
5660
f_charbig = '#NULL#';
5661
# check null success: 1
5663
# check null-1 success: 1
5664
UPDATE t1 SET f_int1 = -@max_row
5665
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
5666
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
5668
# check null-2 success: 1
5669
UPDATE t1 SET f_int1 = NULL
5670
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
5671
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
5673
# check null-3 success: 1
5675
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
5676
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
5678
# check null-4 success: 1
5680
WHERE f_int1 = 0 AND f_int2 = 0
5681
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
5682
AND f_charbig = '#NULL#';
5683
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5684
SELECT f_int1, f_int1, '', '', 'was inserted'
5685
FROM t0_template source_tab
5686
WHERE MOD(f_int1,3) = 0
5687
AND f_int1 BETWEEN @max_row_div2 AND @max_row
5689
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
5690
f_int2 = 2 * @max_row + source_tab.f_int1,
5691
f_charbig = 'was updated';
5693
# check unique-1-a success: 1
5695
# check unique-1-b success: 1
5696
DELETE FROM t1 WHERE f_charbig = 'was inserted';
5697
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5698
f_int2 = CAST(f_char1 AS SIGNED INT),
5699
f_charbig = CONCAT('===',f_char1,'===')
5700
WHERE f_charbig = 'was updated';
5701
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5702
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
5703
FROM t0_template source_tab
5704
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
5706
# check replace success: 1
5708
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
5710
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
5711
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
5712
UPDATE t1 SET f_int2 = f_int1,
5713
f_char1 = CAST(f_int1 AS CHAR),
5714
f_char2 = CAST(f_int1 AS CHAR),
5715
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
5716
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
5718
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5719
SELECT f_int1, f_int1, '', '', 'was inserted'
5720
FROM t0_template source_tab
5721
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
5723
# check transactions-1 success: 1
5726
# check transactions-2 success: 1
5729
# check transactions-3 success: 1
5730
DELETE FROM t1 WHERE f_charbig = 'was inserted';
5734
# check transactions-4 success: 1
5735
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5736
SELECT f_int1, f_int1, '', '', 'was inserted'
5737
FROM t0_template source_tab
5738
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
5740
# check transactions-5 success: 1
5743
Warning 1196 Some non-transactional changed tables couldn't be rolled back
5745
# check transactions-6 success: 1
5746
# INFO: Storage engine used for t1 seems to be not transactional.
5749
# check transactions-7 success: 1
5750
DELETE FROM t1 WHERE f_charbig = 'was inserted';
5752
SET @@session.sql_mode = 'traditional';
5753
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
5754
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5755
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
5756
'', '', 'was inserted' FROM t0_template
5757
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
5758
ERROR 22012: Division by 0
5761
# check transactions-8 success: 1
5762
# INFO: Storage engine used for t1 seems to be unable to revert
5763
# changes made by the failing statement.
5764
SET @@session.sql_mode = '';
5766
DELETE FROM t1 WHERE f_charbig = 'was inserted';
5768
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
5770
# check special-1 success: 1
5771
UPDATE t1 SET f_charbig = '';
5773
# check special-2 success: 1
5774
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
5775
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
5776
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
5777
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5778
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5779
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5780
'just inserted' FROM t0_template
5781
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5782
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
5784
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5785
f_charbig = 'updated by trigger'
5786
WHERE f_int1 = new.f_int1;
5788
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5789
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
5790
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5792
# check trigger-1 success: 1
5794
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5795
f_int2 = CAST(f_char1 AS SIGNED INT),
5796
f_charbig = 'just inserted'
5797
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5799
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5800
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5801
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5802
'just inserted' FROM t0_template
5803
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5804
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
5806
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5807
f_charbig = 'updated by trigger'
5808
WHERE f_int1 = new.f_int1;
5810
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5811
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
5812
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5814
# check trigger-2 success: 1
5816
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5817
f_int2 = CAST(f_char1 AS SIGNED INT),
5818
f_charbig = 'just inserted'
5819
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5821
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5822
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5823
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5824
'just inserted' FROM t0_template
5825
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5826
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
5828
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5829
f_charbig = 'updated by trigger'
5830
WHERE f_int1 = new.f_int1;
5832
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
5833
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5835
# check trigger-3 success: 1
5837
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5838
f_int2 = CAST(f_char1 AS SIGNED INT),
5839
f_charbig = 'just inserted'
5840
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5842
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5843
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5844
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5845
'just inserted' FROM t0_template
5846
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5847
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
5849
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5850
f_charbig = 'updated by trigger'
5851
WHERE f_int1 = - old.f_int1;
5853
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
5854
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5856
# check trigger-4 success: 1
5858
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5859
f_int2 = CAST(f_char1 AS SIGNED INT),
5860
f_charbig = 'just inserted'
5861
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5863
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5864
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5865
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5866
'just inserted' FROM t0_template
5867
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5868
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
5870
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5871
f_charbig = 'updated by trigger'
5872
WHERE f_int1 = new.f_int1;
5874
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
5875
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5877
# check trigger-5 success: 1
5879
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5880
f_int2 = CAST(f_char1 AS SIGNED INT),
5881
f_charbig = 'just inserted'
5882
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5884
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5885
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5886
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5887
'just inserted' FROM t0_template
5888
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5889
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
5891
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5892
f_charbig = 'updated by trigger'
5893
WHERE f_int1 = - old.f_int1;
5895
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
5896
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5898
# check trigger-6 success: 1
5900
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5901
f_int2 = CAST(f_char1 AS SIGNED INT),
5902
f_charbig = 'just inserted'
5903
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5905
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5906
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5907
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5908
'just inserted' FROM t0_template
5909
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5910
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
5912
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5913
f_charbig = 'updated by trigger'
5914
WHERE f_int1 = - old.f_int1;
5917
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5919
# check trigger-7 success: 1
5921
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5922
f_int2 = CAST(f_char1 AS SIGNED INT),
5923
f_charbig = 'just inserted'
5924
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5926
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5927
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5928
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5929
'just inserted' FROM t0_template
5930
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5931
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
5933
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5934
f_charbig = 'updated by trigger'
5935
WHERE f_int1 = - old.f_int1;
5938
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5940
# check trigger-8 success: 1
5942
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5943
f_int2 = CAST(f_char1 AS SIGNED INT),
5944
f_charbig = 'just inserted'
5945
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5947
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5949
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5950
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
5952
SET new.f_int1 = old.f_int1 + @max_row,
5953
new.f_int2 = old.f_int2 - @max_row,
5954
new.f_charbig = '####updated per update trigger####';
5957
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
5958
f_charbig = '####updated per update statement itself####';
5960
# check trigger-9 success: 1
5962
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5963
f_int2 = CAST(f_char1 AS SIGNED INT),
5964
f_charbig = CONCAT('===',f_char1,'===');
5965
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
5967
SET new.f_int1 = new.f_int1 + @max_row,
5968
new.f_int2 = new.f_int2 - @max_row,
5969
new.f_charbig = '####updated per update trigger####';
5972
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
5973
f_charbig = '####updated per update statement itself####';
5975
# check trigger-10 success: 1
5977
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5978
f_int2 = CAST(f_char1 AS SIGNED INT),
5979
f_charbig = CONCAT('===',f_char1,'===');
5980
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
5982
SET new.f_int1 = @my_max1 + @counter,
5983
new.f_int2 = @my_min2 - @counter,
5984
new.f_charbig = '####updated per insert trigger####';
5985
SET @counter = @counter + 1;
5988
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
5989
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5990
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
5991
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
5992
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
5996
# check trigger-11 success: 1
5998
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
5999
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
6000
AND f_charbig = '####updated per insert trigger####';
6001
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
6003
SET new.f_int1 = @my_max1 + @counter,
6004
new.f_int2 = @my_min2 - @counter,
6005
new.f_charbig = '####updated per insert trigger####';
6006
SET @counter = @counter + 1;
6009
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
6010
INSERT INTO t1 (f_char1, f_char2, f_charbig)
6011
SELECT CAST(f_int1 AS CHAR),
6012
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
6013
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
6017
# check trigger-12 success: 1
6019
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
6020
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
6021
AND f_charbig = '####updated per insert trigger####';
6023
Table Op Msg_type Msg_text
6024
test.t1 analyze status OK
6025
CHECK TABLE t1 EXTENDED;
6026
Table Op Msg_type Msg_text
6027
test.t1 check status OK
6028
CHECKSUM TABLE t1 EXTENDED;
6030
test.t1 <some_value>
6032
Table Op Msg_type Msg_text
6033
test.t1 optimize status OK
6034
# check layout success: 1
6035
REPAIR TABLE t1 EXTENDED;
6036
Table Op Msg_type Msg_text
6037
test.t1 repair status OK
6038
# check layout success: 1
6041
# check TRUNCATE success: 1
6042
# check layout success: 1
6043
# End usability test (inc/partition_check.inc)
6050
f_charbig VARCHAR(1000)
6051
, UNIQUE INDEX uidx1 (f_int1,f_int2)
6053
PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
6054
(PARTITION parta VALUES LESS THAN (0),
6055
PARTITION partb VALUES LESS THAN (5),
6056
PARTITION partc VALUES LESS THAN (10),
6057
PARTITION partd VALUES LESS THAN (2147483646));
6058
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
6059
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
6060
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
6061
ALTER TABLE t1 MODIFY f_int2 BIGINT;
6062
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
6063
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
6064
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
6065
# Start usability test (inc/partition_check.inc)
6067
SHOW CREATE TABLE t1;
6069
t1 CREATE TABLE `t1` (
6070
`f_int1` int(11) DEFAULT NULL,
6071
`f_int2` bigint(20) DEFAULT NULL,
6072
`f_char1` char(20) DEFAULT NULL,
6073
`f_char2` char(20) DEFAULT NULL,
6074
`f_charbig` varchar(1000) DEFAULT NULL,
6075
UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
6076
) ENGINE=MyISAM DEFAULT CHARSET=latin1
6077
/*!50100 PARTITION BY RANGE (f_int1 DIV 2)
6078
SUBPARTITION BY HASH (f_int1)
6080
(PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM,
6081
PARTITION partb VALUES LESS THAN (5) ENGINE = MyISAM,
6082
PARTITION partc VALUES LESS THAN (10) ENGINE = MyISAM,
6083
PARTITION partd VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
6086
t1#P#parta#SP#partasp0.MYD
6087
t1#P#parta#SP#partasp0.MYI
6088
t1#P#parta#SP#partasp1.MYD
6089
t1#P#parta#SP#partasp1.MYI
6090
t1#P#partb#SP#partbsp0.MYD
6091
t1#P#partb#SP#partbsp0.MYI
6092
t1#P#partb#SP#partbsp1.MYD
6093
t1#P#partb#SP#partbsp1.MYI
6094
t1#P#partc#SP#partcsp0.MYD
6095
t1#P#partc#SP#partcsp0.MYI
6096
t1#P#partc#SP#partcsp1.MYD
6097
t1#P#partc#SP#partcsp1.MYI
6098
t1#P#partd#SP#partdsp0.MYD
6099
t1#P#partd#SP#partdsp0.MYI
6100
t1#P#partd#SP#partdsp1.MYD
6101
t1#P#partd#SP#partdsp1.MYI
6105
# check prerequisites-1 success: 1
6106
# check COUNT(*) success: 1
6107
# check MIN/MAX(f_int1) success: 1
6108
# check MIN/MAX(f_int2) success: 1
6109
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6110
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
6111
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
6112
WHERE f_int1 IN (2,3);
6113
ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
6114
# check prerequisites-3 success: 1
6115
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
6116
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6117
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
6118
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
6119
WHERE f_int1 IN (2,3);
6120
DELETE FROM t1 WHERE f_charbig = 'delete me';
6121
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6122
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
6123
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
6124
WHERE f_int1 IN (2,3);
6125
DELETE FROM t1 WHERE f_charbig = 'delete me';
6126
# check read via f_int1 success: 1
6127
# check read via f_int2 success: 1
6129
# check multiple-1 success: 1
6130
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
6132
# check multiple-2 success: 1
6133
INSERT INTO t1 SELECT * FROM t0_template
6134
WHERE MOD(f_int1,3) = 0;
6136
# check multiple-3 success: 1
6137
UPDATE t1 SET f_int1 = f_int1 + @max_row
6138
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
6139
AND @max_row_div2 + @max_row_div4;
6141
# check multiple-4 success: 1
6143
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
6144
AND @max_row_div2 + @max_row_div4 + @max_row;
6146
# check multiple-5 success: 1
6147
SELECT COUNT(*) INTO @try_count FROM t0_template
6148
WHERE MOD(f_int1,3) = 0
6149
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
6150
SELECT COUNT(*) INTO @clash_count
6151
FROM t1 INNER JOIN t0_template USING(f_int1)
6152
WHERE MOD(f_int1,3) = 0
6153
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
6154
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
6156
SET f_int1 = @cur_value , f_int2 = @cur_value,
6157
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
6158
f_charbig = '#SINGLE#';
6160
# check single-1 success: 1
6161
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
6163
SET f_int1 = @cur_value , f_int2 = @cur_value,
6164
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
6165
f_charbig = '#SINGLE#';
6167
# check single-2 success: 1
6168
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
6169
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
6170
UPDATE t1 SET f_int1 = @cur_value2
6171
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
6173
# check single-3 success: 1
6174
SET @cur_value1= -1;
6175
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
6176
UPDATE t1 SET f_int1 = @cur_value1
6177
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
6179
# check single-4 success: 1
6180
SELECT MAX(f_int1) INTO @cur_value FROM t1;
6181
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
6183
# check single-5 success: 1
6184
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
6186
# check single-6 success: 1
6187
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
6189
# check single-7 success: 1
6190
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
6191
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
6192
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
6193
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
6194
f_charbig = '#NULL#';
6196
SET f_int1 = NULL , f_int2 = -@max_row,
6197
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
6198
f_charbig = '#NULL#';
6199
# check null success: 1
6201
# check null-1 success: 1
6202
UPDATE t1 SET f_int1 = -@max_row
6203
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
6204
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
6206
# check null-2 success: 1
6207
UPDATE t1 SET f_int1 = NULL
6208
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
6209
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
6211
# check null-3 success: 1
6213
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
6214
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
6216
# check null-4 success: 1
6218
WHERE f_int1 = 0 AND f_int2 = 0
6219
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
6220
AND f_charbig = '#NULL#';
6221
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6222
SELECT f_int1, f_int1, '', '', 'was inserted'
6223
FROM t0_template source_tab
6224
WHERE MOD(f_int1,3) = 0
6225
AND f_int1 BETWEEN @max_row_div2 AND @max_row
6227
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
6228
f_int2 = 2 * @max_row + source_tab.f_int1,
6229
f_charbig = 'was updated';
6231
# check unique-1-a success: 1
6233
# check unique-1-b success: 1
6234
DELETE FROM t1 WHERE f_charbig = 'was inserted';
6235
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6236
f_int2 = CAST(f_char1 AS SIGNED INT),
6237
f_charbig = CONCAT('===',f_char1,'===')
6238
WHERE f_charbig = 'was updated';
6239
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6240
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
6241
FROM t0_template source_tab
6242
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
6244
# check replace success: 1
6246
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
6248
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
6249
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
6250
UPDATE t1 SET f_int2 = f_int1,
6251
f_char1 = CAST(f_int1 AS CHAR),
6252
f_char2 = CAST(f_int1 AS CHAR),
6253
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
6254
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
6256
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6257
SELECT f_int1, f_int1, '', '', 'was inserted'
6258
FROM t0_template source_tab
6259
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
6261
# check transactions-1 success: 1
6264
# check transactions-2 success: 1
6267
# check transactions-3 success: 1
6268
DELETE FROM t1 WHERE f_charbig = 'was inserted';
6272
# check transactions-4 success: 1
6273
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6274
SELECT f_int1, f_int1, '', '', 'was inserted'
6275
FROM t0_template source_tab
6276
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
6278
# check transactions-5 success: 1
6281
Warning 1196 Some non-transactional changed tables couldn't be rolled back
6283
# check transactions-6 success: 1
6284
# INFO: Storage engine used for t1 seems to be not transactional.
6287
# check transactions-7 success: 1
6288
DELETE FROM t1 WHERE f_charbig = 'was inserted';
6290
SET @@session.sql_mode = 'traditional';
6291
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
6292
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6293
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
6294
'', '', 'was inserted' FROM t0_template
6295
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
6296
ERROR 22012: Division by 0
6299
# check transactions-8 success: 1
6300
# INFO: Storage engine used for t1 seems to be unable to revert
6301
# changes made by the failing statement.
6302
SET @@session.sql_mode = '';
6304
DELETE FROM t1 WHERE f_charbig = 'was inserted';
6306
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
6308
# check special-1 success: 1
6309
UPDATE t1 SET f_charbig = '';
6311
# check special-2 success: 1
6312
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
6313
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
6314
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
6315
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6316
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6317
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6318
'just inserted' FROM t0_template
6319
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6320
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
6322
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6323
f_charbig = 'updated by trigger'
6324
WHERE f_int1 = new.f_int1;
6326
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6327
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
6328
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6330
# check trigger-1 success: 1
6332
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6333
f_int2 = CAST(f_char1 AS SIGNED INT),
6334
f_charbig = 'just inserted'
6335
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6337
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6338
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6339
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6340
'just inserted' FROM t0_template
6341
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6342
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
6344
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6345
f_charbig = 'updated by trigger'
6346
WHERE f_int1 = new.f_int1;
6348
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6349
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
6350
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6352
# check trigger-2 success: 1
6354
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6355
f_int2 = CAST(f_char1 AS SIGNED INT),
6356
f_charbig = 'just inserted'
6357
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6359
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6360
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6361
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6362
'just inserted' FROM t0_template
6363
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6364
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
6366
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6367
f_charbig = 'updated by trigger'
6368
WHERE f_int1 = new.f_int1;
6370
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
6371
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6373
# check trigger-3 success: 1
6375
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6376
f_int2 = CAST(f_char1 AS SIGNED INT),
6377
f_charbig = 'just inserted'
6378
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6380
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6381
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6382
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6383
'just inserted' FROM t0_template
6384
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6385
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
6387
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6388
f_charbig = 'updated by trigger'
6389
WHERE f_int1 = - old.f_int1;
6391
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
6392
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6394
# check trigger-4 success: 1
6396
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6397
f_int2 = CAST(f_char1 AS SIGNED INT),
6398
f_charbig = 'just inserted'
6399
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6401
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6402
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6403
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6404
'just inserted' FROM t0_template
6405
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6406
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
6408
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6409
f_charbig = 'updated by trigger'
6410
WHERE f_int1 = new.f_int1;
6412
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
6413
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6415
# check trigger-5 success: 1
6417
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6418
f_int2 = CAST(f_char1 AS SIGNED INT),
6419
f_charbig = 'just inserted'
6420
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6422
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6423
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6424
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6425
'just inserted' FROM t0_template
6426
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6427
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
6429
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6430
f_charbig = 'updated by trigger'
6431
WHERE f_int1 = - old.f_int1;
6433
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
6434
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6436
# check trigger-6 success: 1
6438
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6439
f_int2 = CAST(f_char1 AS SIGNED INT),
6440
f_charbig = 'just inserted'
6441
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6443
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6444
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6445
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6446
'just inserted' FROM t0_template
6447
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6448
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
6450
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6451
f_charbig = 'updated by trigger'
6452
WHERE f_int1 = - old.f_int1;
6455
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6457
# check trigger-7 success: 1
6459
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6460
f_int2 = CAST(f_char1 AS SIGNED INT),
6461
f_charbig = 'just inserted'
6462
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6464
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6465
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6466
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6467
'just inserted' FROM t0_template
6468
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6469
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
6471
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6472
f_charbig = 'updated by trigger'
6473
WHERE f_int1 = - old.f_int1;
6476
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6478
# check trigger-8 success: 1
6480
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6481
f_int2 = CAST(f_char1 AS SIGNED INT),
6482
f_charbig = 'just inserted'
6483
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6485
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6487
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6488
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
6490
SET new.f_int1 = old.f_int1 + @max_row,
6491
new.f_int2 = old.f_int2 - @max_row,
6492
new.f_charbig = '####updated per update trigger####';
6495
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
6496
f_charbig = '####updated per update statement itself####';
6498
# check trigger-9 success: 1
6500
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6501
f_int2 = CAST(f_char1 AS SIGNED INT),
6502
f_charbig = CONCAT('===',f_char1,'===');
6503
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
6505
SET new.f_int1 = new.f_int1 + @max_row,
6506
new.f_int2 = new.f_int2 - @max_row,
6507
new.f_charbig = '####updated per update trigger####';
6510
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
6511
f_charbig = '####updated per update statement itself####';
6513
# check trigger-10 success: 1
6515
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6516
f_int2 = CAST(f_char1 AS SIGNED INT),
6517
f_charbig = CONCAT('===',f_char1,'===');
6518
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
6520
SET new.f_int1 = @my_max1 + @counter,
6521
new.f_int2 = @my_min2 - @counter,
6522
new.f_charbig = '####updated per insert trigger####';
6523
SET @counter = @counter + 1;
6526
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
6527
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6528
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
6529
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
6530
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
6534
# check trigger-11 success: 1
6536
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
6537
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
6538
AND f_charbig = '####updated per insert trigger####';
6539
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
6541
SET new.f_int1 = @my_max1 + @counter,
6542
new.f_int2 = @my_min2 - @counter,
6543
new.f_charbig = '####updated per insert trigger####';
6544
SET @counter = @counter + 1;
6547
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
6548
INSERT INTO t1 (f_char1, f_char2, f_charbig)
6549
SELECT CAST(f_int1 AS CHAR),
6550
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
6551
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
6555
# check trigger-12 success: 1
6557
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
6558
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
6559
AND f_charbig = '####updated per insert trigger####';
6561
Table Op Msg_type Msg_text
6562
test.t1 analyze status OK
6563
CHECK TABLE t1 EXTENDED;
6564
Table Op Msg_type Msg_text
6565
test.t1 check status OK
6566
CHECKSUM TABLE t1 EXTENDED;
6568
test.t1 <some_value>
6570
Table Op Msg_type Msg_text
6571
test.t1 optimize status OK
6572
# check layout success: 1
6573
REPAIR TABLE t1 EXTENDED;
6574
Table Op Msg_type Msg_text
6575
test.t1 repair status OK
6576
# check layout success: 1
6579
# check TRUNCATE success: 1
6580
# check layout success: 1
6581
# End usability test (inc/partition_check.inc)
6588
f_charbig VARCHAR(1000)
6589
, UNIQUE INDEX uidx1 (f_int1,f_int2)
6591
PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
6592
(PARTITION part1 VALUES LESS THAN (0)
6593
(SUBPARTITION subpart11, SUBPARTITION subpart12),
6594
PARTITION part2 VALUES LESS THAN (5)
6595
(SUBPARTITION subpart21, SUBPARTITION subpart22),
6596
PARTITION part3 VALUES LESS THAN (10)
6597
(SUBPARTITION subpart31, SUBPARTITION subpart32),
6598
PARTITION part4 VALUES LESS THAN (2147483646)
6599
(SUBPARTITION subpart41, SUBPARTITION subpart42));
6600
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
6601
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
6602
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
6603
ALTER TABLE t1 MODIFY f_int2 BIGINT;
6604
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
6605
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
6606
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
6607
# Start usability test (inc/partition_check.inc)
6609
SHOW CREATE TABLE t1;
6611
t1 CREATE TABLE `t1` (
6612
`f_int1` int(11) DEFAULT NULL,
6613
`f_int2` bigint(20) DEFAULT NULL,
6614
`f_char1` char(20) DEFAULT NULL,
6615
`f_char2` char(20) DEFAULT NULL,
6616
`f_charbig` varchar(1000) DEFAULT NULL,
6617
UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
6618
) ENGINE=MyISAM DEFAULT CHARSET=latin1
6619
/*!50100 PARTITION BY RANGE (f_int1)
6620
SUBPARTITION BY KEY (f_int1)
6621
(PARTITION part1 VALUES LESS THAN (0)
6622
(SUBPARTITION subpart11 ENGINE = MyISAM,
6623
SUBPARTITION subpart12 ENGINE = MyISAM),
6624
PARTITION part2 VALUES LESS THAN (5)
6625
(SUBPARTITION subpart21 ENGINE = MyISAM,
6626
SUBPARTITION subpart22 ENGINE = MyISAM),
6627
PARTITION part3 VALUES LESS THAN (10)
6628
(SUBPARTITION subpart31 ENGINE = MyISAM,
6629
SUBPARTITION subpart32 ENGINE = MyISAM),
6630
PARTITION part4 VALUES LESS THAN (2147483646)
6631
(SUBPARTITION subpart41 ENGINE = MyISAM,
6632
SUBPARTITION subpart42 ENGINE = MyISAM)) */
6635
t1#P#part1#SP#subpart11.MYD
6636
t1#P#part1#SP#subpart11.MYI
6637
t1#P#part1#SP#subpart12.MYD
6638
t1#P#part1#SP#subpart12.MYI
6639
t1#P#part2#SP#subpart21.MYD
6640
t1#P#part2#SP#subpart21.MYI
6641
t1#P#part2#SP#subpart22.MYD
6642
t1#P#part2#SP#subpart22.MYI
6643
t1#P#part3#SP#subpart31.MYD
6644
t1#P#part3#SP#subpart31.MYI
6645
t1#P#part3#SP#subpart32.MYD
6646
t1#P#part3#SP#subpart32.MYI
6647
t1#P#part4#SP#subpart41.MYD
6648
t1#P#part4#SP#subpart41.MYI
6649
t1#P#part4#SP#subpart42.MYD
6650
t1#P#part4#SP#subpart42.MYI
6654
# check prerequisites-1 success: 1
6655
# check COUNT(*) success: 1
6656
# check MIN/MAX(f_int1) success: 1
6657
# check MIN/MAX(f_int2) success: 1
6658
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6659
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
6660
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
6661
WHERE f_int1 IN (2,3);
6662
ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
6663
# check prerequisites-3 success: 1
6664
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
6665
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6666
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
6667
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
6668
WHERE f_int1 IN (2,3);
6669
DELETE FROM t1 WHERE f_charbig = 'delete me';
6670
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6671
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
6672
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
6673
WHERE f_int1 IN (2,3);
6674
DELETE FROM t1 WHERE f_charbig = 'delete me';
6675
# check read via f_int1 success: 1
6676
# check read via f_int2 success: 1
6678
# check multiple-1 success: 1
6679
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
6681
# check multiple-2 success: 1
6682
INSERT INTO t1 SELECT * FROM t0_template
6683
WHERE MOD(f_int1,3) = 0;
6685
# check multiple-3 success: 1
6686
UPDATE t1 SET f_int1 = f_int1 + @max_row
6687
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
6688
AND @max_row_div2 + @max_row_div4;
6690
# check multiple-4 success: 1
6692
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
6693
AND @max_row_div2 + @max_row_div4 + @max_row;
6695
# check multiple-5 success: 1
6696
SELECT COUNT(*) INTO @try_count FROM t0_template
6697
WHERE MOD(f_int1,3) = 0
6698
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
6699
SELECT COUNT(*) INTO @clash_count
6700
FROM t1 INNER JOIN t0_template USING(f_int1)
6701
WHERE MOD(f_int1,3) = 0
6702
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
6703
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
6705
SET f_int1 = @cur_value , f_int2 = @cur_value,
6706
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
6707
f_charbig = '#SINGLE#';
6709
# check single-1 success: 1
6710
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
6712
SET f_int1 = @cur_value , f_int2 = @cur_value,
6713
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
6714
f_charbig = '#SINGLE#';
6716
# check single-2 success: 1
6717
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
6718
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
6719
UPDATE t1 SET f_int1 = @cur_value2
6720
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
6722
# check single-3 success: 1
6723
SET @cur_value1= -1;
6724
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
6725
UPDATE t1 SET f_int1 = @cur_value1
6726
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
6728
# check single-4 success: 1
6729
SELECT MAX(f_int1) INTO @cur_value FROM t1;
6730
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
6732
# check single-5 success: 1
6733
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
6735
# check single-6 success: 1
6736
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
6737
ERROR HY000: Table has no partition for value 2147483647
6738
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
6739
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
6740
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
6741
f_charbig = '#NULL#';
6743
SET f_int1 = NULL , f_int2 = -@max_row,
6744
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
6745
f_charbig = '#NULL#';
6746
# check null success: 1
6748
# check null-1 success: 1
6749
UPDATE t1 SET f_int1 = -@max_row
6750
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
6751
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
6753
# check null-2 success: 1
6754
UPDATE t1 SET f_int1 = NULL
6755
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
6756
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
6758
# check null-3 success: 1
6760
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
6761
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
6763
# check null-4 success: 1
6765
WHERE f_int1 = 0 AND f_int2 = 0
6766
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
6767
AND f_charbig = '#NULL#';
6768
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6769
SELECT f_int1, f_int1, '', '', 'was inserted'
6770
FROM t0_template source_tab
6771
WHERE MOD(f_int1,3) = 0
6772
AND f_int1 BETWEEN @max_row_div2 AND @max_row
6774
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
6775
f_int2 = 2 * @max_row + source_tab.f_int1,
6776
f_charbig = 'was updated';
6778
# check unique-1-a success: 1
6780
# check unique-1-b success: 1
6781
DELETE FROM t1 WHERE f_charbig = 'was inserted';
6782
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6783
f_int2 = CAST(f_char1 AS SIGNED INT),
6784
f_charbig = CONCAT('===',f_char1,'===')
6785
WHERE f_charbig = 'was updated';
6786
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6787
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
6788
FROM t0_template source_tab
6789
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
6791
# check replace success: 1
6793
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
6795
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
6796
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
6797
UPDATE t1 SET f_int2 = f_int1,
6798
f_char1 = CAST(f_int1 AS CHAR),
6799
f_char2 = CAST(f_int1 AS CHAR),
6800
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
6801
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
6803
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6804
SELECT f_int1, f_int1, '', '', 'was inserted'
6805
FROM t0_template source_tab
6806
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
6808
# check transactions-1 success: 1
6811
# check transactions-2 success: 1
6814
# check transactions-3 success: 1
6815
DELETE FROM t1 WHERE f_charbig = 'was inserted';
6819
# check transactions-4 success: 1
6820
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6821
SELECT f_int1, f_int1, '', '', 'was inserted'
6822
FROM t0_template source_tab
6823
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
6825
# check transactions-5 success: 1
6828
Warning 1196 Some non-transactional changed tables couldn't be rolled back
6830
# check transactions-6 success: 1
6831
# INFO: Storage engine used for t1 seems to be not transactional.
6834
# check transactions-7 success: 1
6835
DELETE FROM t1 WHERE f_charbig = 'was inserted';
6837
SET @@session.sql_mode = 'traditional';
6838
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
6839
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6840
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
6841
'', '', 'was inserted' FROM t0_template
6842
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
6843
ERROR 22012: Division by 0
6846
# check transactions-8 success: 1
6847
# INFO: Storage engine used for t1 seems to be unable to revert
6848
# changes made by the failing statement.
6849
SET @@session.sql_mode = '';
6851
DELETE FROM t1 WHERE f_charbig = 'was inserted';
6853
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
6855
# check special-1 success: 1
6856
UPDATE t1 SET f_charbig = '';
6858
# check special-2 success: 1
6859
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
6860
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
6861
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
6862
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6863
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6864
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6865
'just inserted' FROM t0_template
6866
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6867
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
6869
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6870
f_charbig = 'updated by trigger'
6871
WHERE f_int1 = new.f_int1;
6873
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6874
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
6875
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6877
# check trigger-1 success: 1
6879
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6880
f_int2 = CAST(f_char1 AS SIGNED INT),
6881
f_charbig = 'just inserted'
6882
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6884
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6885
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6886
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6887
'just inserted' FROM t0_template
6888
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6889
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
6891
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6892
f_charbig = 'updated by trigger'
6893
WHERE f_int1 = new.f_int1;
6895
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6896
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
6897
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6899
# check trigger-2 success: 1
6901
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6902
f_int2 = CAST(f_char1 AS SIGNED INT),
6903
f_charbig = 'just inserted'
6904
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6906
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6907
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6908
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6909
'just inserted' FROM t0_template
6910
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6911
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
6913
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6914
f_charbig = 'updated by trigger'
6915
WHERE f_int1 = new.f_int1;
6917
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
6918
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6920
# check trigger-3 success: 1
6922
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6923
f_int2 = CAST(f_char1 AS SIGNED INT),
6924
f_charbig = 'just inserted'
6925
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6927
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6928
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6929
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6930
'just inserted' FROM t0_template
6931
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6932
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
6934
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6935
f_charbig = 'updated by trigger'
6936
WHERE f_int1 = - old.f_int1;
6938
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
6939
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6941
# check trigger-4 success: 1
6943
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6944
f_int2 = CAST(f_char1 AS SIGNED INT),
6945
f_charbig = 'just inserted'
6946
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6948
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6949
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6950
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6951
'just inserted' FROM t0_template
6952
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6953
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
6955
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6956
f_charbig = 'updated by trigger'
6957
WHERE f_int1 = new.f_int1;
6959
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
6960
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6962
# check trigger-5 success: 1
6964
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6965
f_int2 = CAST(f_char1 AS SIGNED INT),
6966
f_charbig = 'just inserted'
6967
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6969
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6970
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6971
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6972
'just inserted' FROM t0_template
6973
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6974
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
6976
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6977
f_charbig = 'updated by trigger'
6978
WHERE f_int1 = - old.f_int1;
6980
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
6981
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6983
# check trigger-6 success: 1
6985
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6986
f_int2 = CAST(f_char1 AS SIGNED INT),
6987
f_charbig = 'just inserted'
6988
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6990
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6991
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6992
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6993
'just inserted' FROM t0_template
6994
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6995
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
6997
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6998
f_charbig = 'updated by trigger'
6999
WHERE f_int1 = - old.f_int1;
7002
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7004
# check trigger-7 success: 1
7006
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7007
f_int2 = CAST(f_char1 AS SIGNED INT),
7008
f_charbig = 'just inserted'
7009
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7011
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7012
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7013
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7014
'just inserted' FROM t0_template
7015
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7016
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
7018
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7019
f_charbig = 'updated by trigger'
7020
WHERE f_int1 = - old.f_int1;
7023
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7025
# check trigger-8 success: 1
7027
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7028
f_int2 = CAST(f_char1 AS SIGNED INT),
7029
f_charbig = 'just inserted'
7030
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7032
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7034
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7035
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
7037
SET new.f_int1 = old.f_int1 + @max_row,
7038
new.f_int2 = old.f_int2 - @max_row,
7039
new.f_charbig = '####updated per update trigger####';
7042
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
7043
f_charbig = '####updated per update statement itself####';
7045
# check trigger-9 success: 1
7047
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7048
f_int2 = CAST(f_char1 AS SIGNED INT),
7049
f_charbig = CONCAT('===',f_char1,'===');
7050
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
7052
SET new.f_int1 = new.f_int1 + @max_row,
7053
new.f_int2 = new.f_int2 - @max_row,
7054
new.f_charbig = '####updated per update trigger####';
7057
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
7058
f_charbig = '####updated per update statement itself####';
7060
# check trigger-10 success: 1
7062
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7063
f_int2 = CAST(f_char1 AS SIGNED INT),
7064
f_charbig = CONCAT('===',f_char1,'===');
7065
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
7067
SET new.f_int1 = @my_max1 + @counter,
7068
new.f_int2 = @my_min2 - @counter,
7069
new.f_charbig = '####updated per insert trigger####';
7070
SET @counter = @counter + 1;
7073
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
7074
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7075
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
7076
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
7077
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
7081
# check trigger-11 success: 1
7083
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
7084
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
7085
AND f_charbig = '####updated per insert trigger####';
7086
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
7088
SET new.f_int1 = @my_max1 + @counter,
7089
new.f_int2 = @my_min2 - @counter,
7090
new.f_charbig = '####updated per insert trigger####';
7091
SET @counter = @counter + 1;
7094
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
7095
INSERT INTO t1 (f_char1, f_char2, f_charbig)
7096
SELECT CAST(f_int1 AS CHAR),
7097
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
7098
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
7102
# check trigger-12 success: 1
7104
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
7105
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
7106
AND f_charbig = '####updated per insert trigger####';
7108
Table Op Msg_type Msg_text
7109
test.t1 analyze status OK
7110
CHECK TABLE t1 EXTENDED;
7111
Table Op Msg_type Msg_text
7112
test.t1 check status OK
7113
CHECKSUM TABLE t1 EXTENDED;
7115
test.t1 <some_value>
7117
Table Op Msg_type Msg_text
7118
test.t1 optimize status OK
7119
# check layout success: 1
7120
REPAIR TABLE t1 EXTENDED;
7121
Table Op Msg_type Msg_text
7122
test.t1 repair status OK
7123
# check layout success: 1
7126
# check TRUNCATE success: 1
7127
# check layout success: 1
7128
# End usability test (inc/partition_check.inc)
7135
f_charbig VARCHAR(1000)
7136
, UNIQUE INDEX uidx1 (f_int1,f_int2)
7138
PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
7139
(PARTITION part1 VALUES IN (0)
7140
(SUBPARTITION sp11, SUBPARTITION sp12),
7141
PARTITION part2 VALUES IN (1)
7142
(SUBPARTITION sp21, SUBPARTITION sp22),
7143
PARTITION part3 VALUES IN (2)
7144
(SUBPARTITION sp31, SUBPARTITION sp32),
7145
PARTITION part4 VALUES IN (NULL)
7146
(SUBPARTITION sp41, SUBPARTITION sp42));
7147
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
7148
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
7149
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
7150
ALTER TABLE t1 MODIFY f_int2 BIGINT;
7151
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
7152
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
7153
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
7154
# Start usability test (inc/partition_check.inc)
7156
SHOW CREATE TABLE t1;
7158
t1 CREATE TABLE `t1` (
7159
`f_int1` int(11) DEFAULT NULL,
7160
`f_int2` bigint(20) DEFAULT NULL,
7161
`f_char1` char(20) DEFAULT NULL,
7162
`f_char2` char(20) DEFAULT NULL,
7163
`f_charbig` varchar(1000) DEFAULT NULL,
7164
UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
7165
) ENGINE=MyISAM DEFAULT CHARSET=latin1
7166
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
7167
SUBPARTITION BY HASH (f_int1 + 1)
7168
(PARTITION part1 VALUES IN (0)
7169
(SUBPARTITION sp11 ENGINE = MyISAM,
7170
SUBPARTITION sp12 ENGINE = MyISAM),
7171
PARTITION part2 VALUES IN (1)
7172
(SUBPARTITION sp21 ENGINE = MyISAM,
7173
SUBPARTITION sp22 ENGINE = MyISAM),
7174
PARTITION part3 VALUES IN (2)
7175
(SUBPARTITION sp31 ENGINE = MyISAM,
7176
SUBPARTITION sp32 ENGINE = MyISAM),
7177
PARTITION part4 VALUES IN (NULL)
7178
(SUBPARTITION sp41 ENGINE = MyISAM,
7179
SUBPARTITION sp42 ENGINE = MyISAM)) */
7182
t1#P#part1#SP#sp11.MYD
7183
t1#P#part1#SP#sp11.MYI
7184
t1#P#part1#SP#sp12.MYD
7185
t1#P#part1#SP#sp12.MYI
7186
t1#P#part2#SP#sp21.MYD
7187
t1#P#part2#SP#sp21.MYI
7188
t1#P#part2#SP#sp22.MYD
7189
t1#P#part2#SP#sp22.MYI
7190
t1#P#part3#SP#sp31.MYD
7191
t1#P#part3#SP#sp31.MYI
7192
t1#P#part3#SP#sp32.MYD
7193
t1#P#part3#SP#sp32.MYI
7194
t1#P#part4#SP#sp41.MYD
7195
t1#P#part4#SP#sp41.MYI
7196
t1#P#part4#SP#sp42.MYD
7197
t1#P#part4#SP#sp42.MYI
7201
# check prerequisites-1 success: 1
7202
# check COUNT(*) success: 1
7203
# check MIN/MAX(f_int1) success: 1
7204
# check MIN/MAX(f_int2) success: 1
7205
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7206
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
7207
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
7208
WHERE f_int1 IN (2,3);
7209
ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
7210
# check prerequisites-3 success: 1
7211
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
7212
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7213
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
7214
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
7215
WHERE f_int1 IN (2,3);
7216
DELETE FROM t1 WHERE f_charbig = 'delete me';
7217
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7218
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
7219
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
7220
WHERE f_int1 IN (2,3);
7221
DELETE FROM t1 WHERE f_charbig = 'delete me';
7222
# check read via f_int1 success: 1
7223
# check read via f_int2 success: 1
7225
# check multiple-1 success: 1
7226
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
7228
# check multiple-2 success: 1
7229
INSERT INTO t1 SELECT * FROM t0_template
7230
WHERE MOD(f_int1,3) = 0;
7232
# check multiple-3 success: 1
7233
UPDATE t1 SET f_int1 = f_int1 + @max_row
7234
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
7235
AND @max_row_div2 + @max_row_div4;
7237
# check multiple-4 success: 1
7239
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
7240
AND @max_row_div2 + @max_row_div4 + @max_row;
7242
# check multiple-5 success: 1
7243
SELECT COUNT(*) INTO @try_count FROM t0_template
7244
WHERE MOD(f_int1,3) = 0
7245
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
7246
SELECT COUNT(*) INTO @clash_count
7247
FROM t1 INNER JOIN t0_template USING(f_int1)
7248
WHERE MOD(f_int1,3) = 0
7249
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
7250
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
7252
SET f_int1 = @cur_value , f_int2 = @cur_value,
7253
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
7254
f_charbig = '#SINGLE#';
7256
# check single-1 success: 1
7257
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
7259
SET f_int1 = @cur_value , f_int2 = @cur_value,
7260
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
7261
f_charbig = '#SINGLE#';
7263
# check single-2 success: 1
7264
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
7265
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
7266
UPDATE t1 SET f_int1 = @cur_value2
7267
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
7269
# check single-3 success: 1
7270
SET @cur_value1= -1;
7271
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
7272
UPDATE t1 SET f_int1 = @cur_value1
7273
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
7275
# check single-4 success: 1
7276
SELECT MAX(f_int1) INTO @cur_value FROM t1;
7277
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
7279
# check single-5 success: 1
7280
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
7282
# check single-6 success: 1
7283
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
7285
# check single-7 success: 1
7286
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
7287
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
7288
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
7289
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
7290
f_charbig = '#NULL#';
7292
SET f_int1 = NULL , f_int2 = -@max_row,
7293
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
7294
f_charbig = '#NULL#';
7295
# check null success: 1
7297
# check null-1 success: 1
7298
UPDATE t1 SET f_int1 = -@max_row
7299
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
7300
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
7302
# check null-2 success: 1
7303
UPDATE t1 SET f_int1 = NULL
7304
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
7305
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
7307
# check null-3 success: 1
7309
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
7310
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
7312
# check null-4 success: 1
7314
WHERE f_int1 = 0 AND f_int2 = 0
7315
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
7316
AND f_charbig = '#NULL#';
7317
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7318
SELECT f_int1, f_int1, '', '', 'was inserted'
7319
FROM t0_template source_tab
7320
WHERE MOD(f_int1,3) = 0
7321
AND f_int1 BETWEEN @max_row_div2 AND @max_row
7323
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
7324
f_int2 = 2 * @max_row + source_tab.f_int1,
7325
f_charbig = 'was updated';
7327
# check unique-1-a success: 1
7329
# check unique-1-b success: 1
7330
DELETE FROM t1 WHERE f_charbig = 'was inserted';
7331
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7332
f_int2 = CAST(f_char1 AS SIGNED INT),
7333
f_charbig = CONCAT('===',f_char1,'===')
7334
WHERE f_charbig = 'was updated';
7335
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7336
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
7337
FROM t0_template source_tab
7338
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
7340
# check replace success: 1
7342
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
7344
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
7345
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
7346
UPDATE t1 SET f_int2 = f_int1,
7347
f_char1 = CAST(f_int1 AS CHAR),
7348
f_char2 = CAST(f_int1 AS CHAR),
7349
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
7350
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
7352
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7353
SELECT f_int1, f_int1, '', '', 'was inserted'
7354
FROM t0_template source_tab
7355
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
7357
# check transactions-1 success: 1
7360
# check transactions-2 success: 1
7363
# check transactions-3 success: 1
7364
DELETE FROM t1 WHERE f_charbig = 'was inserted';
7368
# check transactions-4 success: 1
7369
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7370
SELECT f_int1, f_int1, '', '', 'was inserted'
7371
FROM t0_template source_tab
7372
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
7374
# check transactions-5 success: 1
7377
Warning 1196 Some non-transactional changed tables couldn't be rolled back
7379
# check transactions-6 success: 1
7380
# INFO: Storage engine used for t1 seems to be not transactional.
7383
# check transactions-7 success: 1
7384
DELETE FROM t1 WHERE f_charbig = 'was inserted';
7386
SET @@session.sql_mode = 'traditional';
7387
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
7388
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7389
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
7390
'', '', 'was inserted' FROM t0_template
7391
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
7392
ERROR 22012: Division by 0
7395
# check transactions-8 success: 1
7396
# INFO: Storage engine used for t1 seems to be unable to revert
7397
# changes made by the failing statement.
7398
SET @@session.sql_mode = '';
7400
DELETE FROM t1 WHERE f_charbig = 'was inserted';
7402
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
7404
# check special-1 success: 1
7405
UPDATE t1 SET f_charbig = '';
7407
# check special-2 success: 1
7408
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
7409
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
7410
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
7411
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7412
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7413
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7414
'just inserted' FROM t0_template
7415
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7416
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
7418
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7419
f_charbig = 'updated by trigger'
7420
WHERE f_int1 = new.f_int1;
7422
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7423
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
7424
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7426
# check trigger-1 success: 1
7428
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7429
f_int2 = CAST(f_char1 AS SIGNED INT),
7430
f_charbig = 'just inserted'
7431
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7433
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7434
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7435
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7436
'just inserted' FROM t0_template
7437
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7438
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
7440
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7441
f_charbig = 'updated by trigger'
7442
WHERE f_int1 = new.f_int1;
7444
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7445
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
7446
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7448
# check trigger-2 success: 1
7450
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7451
f_int2 = CAST(f_char1 AS SIGNED INT),
7452
f_charbig = 'just inserted'
7453
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7455
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7456
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7457
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7458
'just inserted' FROM t0_template
7459
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7460
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
7462
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7463
f_charbig = 'updated by trigger'
7464
WHERE f_int1 = new.f_int1;
7466
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
7467
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7469
# check trigger-3 success: 1
7471
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7472
f_int2 = CAST(f_char1 AS SIGNED INT),
7473
f_charbig = 'just inserted'
7474
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7476
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7477
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7478
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7479
'just inserted' FROM t0_template
7480
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7481
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
7483
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7484
f_charbig = 'updated by trigger'
7485
WHERE f_int1 = - old.f_int1;
7487
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
7488
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7490
# check trigger-4 success: 1
7492
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7493
f_int2 = CAST(f_char1 AS SIGNED INT),
7494
f_charbig = 'just inserted'
7495
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7497
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7498
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7499
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7500
'just inserted' FROM t0_template
7501
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7502
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
7504
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7505
f_charbig = 'updated by trigger'
7506
WHERE f_int1 = new.f_int1;
7508
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
7509
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7511
# check trigger-5 success: 1
7513
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7514
f_int2 = CAST(f_char1 AS SIGNED INT),
7515
f_charbig = 'just inserted'
7516
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7518
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7519
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7520
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7521
'just inserted' FROM t0_template
7522
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7523
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
7525
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7526
f_charbig = 'updated by trigger'
7527
WHERE f_int1 = - old.f_int1;
7529
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
7530
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7532
# check trigger-6 success: 1
7534
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7535
f_int2 = CAST(f_char1 AS SIGNED INT),
7536
f_charbig = 'just inserted'
7537
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7539
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7540
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7541
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7542
'just inserted' FROM t0_template
7543
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7544
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
7546
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7547
f_charbig = 'updated by trigger'
7548
WHERE f_int1 = - old.f_int1;
7551
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7553
# check trigger-7 success: 1
7555
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7556
f_int2 = CAST(f_char1 AS SIGNED INT),
7557
f_charbig = 'just inserted'
7558
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7560
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7561
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7562
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7563
'just inserted' FROM t0_template
7564
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7565
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
7567
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7568
f_charbig = 'updated by trigger'
7569
WHERE f_int1 = - old.f_int1;
7572
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7574
# check trigger-8 success: 1
7576
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7577
f_int2 = CAST(f_char1 AS SIGNED INT),
7578
f_charbig = 'just inserted'
7579
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7581
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7583
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7584
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
7586
SET new.f_int1 = old.f_int1 + @max_row,
7587
new.f_int2 = old.f_int2 - @max_row,
7588
new.f_charbig = '####updated per update trigger####';
7591
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
7592
f_charbig = '####updated per update statement itself####';
7594
# check trigger-9 success: 1
7596
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7597
f_int2 = CAST(f_char1 AS SIGNED INT),
7598
f_charbig = CONCAT('===',f_char1,'===');
7599
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
7601
SET new.f_int1 = new.f_int1 + @max_row,
7602
new.f_int2 = new.f_int2 - @max_row,
7603
new.f_charbig = '####updated per update trigger####';
7606
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
7607
f_charbig = '####updated per update statement itself####';
7609
# check trigger-10 success: 1
7611
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7612
f_int2 = CAST(f_char1 AS SIGNED INT),
7613
f_charbig = CONCAT('===',f_char1,'===');
7614
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
7616
SET new.f_int1 = @my_max1 + @counter,
7617
new.f_int2 = @my_min2 - @counter,
7618
new.f_charbig = '####updated per insert trigger####';
7619
SET @counter = @counter + 1;
7622
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
7623
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7624
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
7625
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
7626
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
7630
# check trigger-11 success: 1
7632
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
7633
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
7634
AND f_charbig = '####updated per insert trigger####';
7635
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
7637
SET new.f_int1 = @my_max1 + @counter,
7638
new.f_int2 = @my_min2 - @counter,
7639
new.f_charbig = '####updated per insert trigger####';
7640
SET @counter = @counter + 1;
7643
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
7644
INSERT INTO t1 (f_char1, f_char2, f_charbig)
7645
SELECT CAST(f_int1 AS CHAR),
7646
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
7647
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
7651
# check trigger-12 success: 1
7653
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
7654
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
7655
AND f_charbig = '####updated per insert trigger####';
7657
Table Op Msg_type Msg_text
7658
test.t1 analyze status OK
7659
CHECK TABLE t1 EXTENDED;
7660
Table Op Msg_type Msg_text
7661
test.t1 check status OK
7662
CHECKSUM TABLE t1 EXTENDED;
7664
test.t1 <some_value>
7666
Table Op Msg_type Msg_text
7667
test.t1 optimize status OK
7668
# check layout success: 1
7669
REPAIR TABLE t1 EXTENDED;
7670
Table Op Msg_type Msg_text
7671
test.t1 repair status OK
7672
# check layout success: 1
7675
# check TRUNCATE success: 1
7676
# check layout success: 1
7677
# End usability test (inc/partition_check.inc)
7684
f_charbig VARCHAR(1000)
7685
, UNIQUE INDEX uidx1 (f_int1,f_int2)
7687
PARTITION BY LIST(ABS(MOD(f_int1,2)))
7688
SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
7689
(PARTITION part1 VALUES IN (0),
7690
PARTITION part2 VALUES IN (1),
7691
PARTITION part3 VALUES IN (NULL));
7692
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
7693
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
7694
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
7695
ALTER TABLE t1 MODIFY f_int2 BIGINT;
7696
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
7697
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
7698
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
7699
# Start usability test (inc/partition_check.inc)
7701
SHOW CREATE TABLE t1;
7703
t1 CREATE TABLE `t1` (
7704
`f_int1` int(11) DEFAULT NULL,
7705
`f_int2` bigint(20) DEFAULT NULL,
7706
`f_char1` char(20) DEFAULT NULL,
7707
`f_char2` char(20) DEFAULT NULL,
7708
`f_charbig` varchar(1000) DEFAULT NULL,
7709
UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
7710
) ENGINE=MyISAM DEFAULT CHARSET=latin1
7711
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
7712
SUBPARTITION BY KEY (f_int1)
7714
(PARTITION part1 VALUES IN (0) ENGINE = MyISAM,
7715
PARTITION part2 VALUES IN (1) ENGINE = MyISAM,
7716
PARTITION part3 VALUES IN (NULL) ENGINE = MyISAM) */
7719
t1#P#part1#SP#part1sp0.MYD
7720
t1#P#part1#SP#part1sp0.MYI
7721
t1#P#part1#SP#part1sp1.MYD
7722
t1#P#part1#SP#part1sp1.MYI
7723
t1#P#part1#SP#part1sp2.MYD
7724
t1#P#part1#SP#part1sp2.MYI
7725
t1#P#part2#SP#part2sp0.MYD
7726
t1#P#part2#SP#part2sp0.MYI
7727
t1#P#part2#SP#part2sp1.MYD
7728
t1#P#part2#SP#part2sp1.MYI
7729
t1#P#part2#SP#part2sp2.MYD
7730
t1#P#part2#SP#part2sp2.MYI
7731
t1#P#part3#SP#part3sp0.MYD
7732
t1#P#part3#SP#part3sp0.MYI
7733
t1#P#part3#SP#part3sp1.MYD
7734
t1#P#part3#SP#part3sp1.MYI
7735
t1#P#part3#SP#part3sp2.MYD
7736
t1#P#part3#SP#part3sp2.MYI
7740
# check prerequisites-1 success: 1
7741
# check COUNT(*) success: 1
7742
# check MIN/MAX(f_int1) success: 1
7743
# check MIN/MAX(f_int2) success: 1
7744
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7745
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
7746
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
7747
WHERE f_int1 IN (2,3);
7748
ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
7749
# check prerequisites-3 success: 1
7750
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
7751
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7752
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
7753
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
7754
WHERE f_int1 IN (2,3);
7755
DELETE FROM t1 WHERE f_charbig = 'delete me';
7756
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7757
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
7758
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
7759
WHERE f_int1 IN (2,3);
7760
DELETE FROM t1 WHERE f_charbig = 'delete me';
7761
# check read via f_int1 success: 1
7762
# check read via f_int2 success: 1
7764
# check multiple-1 success: 1
7765
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
7767
# check multiple-2 success: 1
7768
INSERT INTO t1 SELECT * FROM t0_template
7769
WHERE MOD(f_int1,3) = 0;
7771
# check multiple-3 success: 1
7772
UPDATE t1 SET f_int1 = f_int1 + @max_row
7773
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
7774
AND @max_row_div2 + @max_row_div4;
7776
# check multiple-4 success: 1
7778
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
7779
AND @max_row_div2 + @max_row_div4 + @max_row;
7781
# check multiple-5 success: 1
7782
SELECT COUNT(*) INTO @try_count FROM t0_template
7783
WHERE MOD(f_int1,3) = 0
7784
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
7785
SELECT COUNT(*) INTO @clash_count
7786
FROM t1 INNER JOIN t0_template USING(f_int1)
7787
WHERE MOD(f_int1,3) = 0
7788
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
7789
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
7791
SET f_int1 = @cur_value , f_int2 = @cur_value,
7792
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
7793
f_charbig = '#SINGLE#';
7795
# check single-1 success: 1
7796
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
7798
SET f_int1 = @cur_value , f_int2 = @cur_value,
7799
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
7800
f_charbig = '#SINGLE#';
7802
# check single-2 success: 1
7803
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
7804
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
7805
UPDATE t1 SET f_int1 = @cur_value2
7806
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
7808
# check single-3 success: 1
7809
SET @cur_value1= -1;
7810
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
7811
UPDATE t1 SET f_int1 = @cur_value1
7812
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
7814
# check single-4 success: 1
7815
SELECT MAX(f_int1) INTO @cur_value FROM t1;
7816
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
7818
# check single-5 success: 1
7819
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
7821
# check single-6 success: 1
7822
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
7824
# check single-7 success: 1
7825
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
7826
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
7827
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
7828
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
7829
f_charbig = '#NULL#';
7831
SET f_int1 = NULL , f_int2 = -@max_row,
7832
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
7833
f_charbig = '#NULL#';
7834
# check null success: 1
7836
# check null-1 success: 1
7837
UPDATE t1 SET f_int1 = -@max_row
7838
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
7839
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
7841
# check null-2 success: 1
7842
UPDATE t1 SET f_int1 = NULL
7843
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
7844
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
7846
# check null-3 success: 1
7848
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
7849
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
7851
# check null-4 success: 1
7853
WHERE f_int1 = 0 AND f_int2 = 0
7854
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
7855
AND f_charbig = '#NULL#';
7856
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7857
SELECT f_int1, f_int1, '', '', 'was inserted'
7858
FROM t0_template source_tab
7859
WHERE MOD(f_int1,3) = 0
7860
AND f_int1 BETWEEN @max_row_div2 AND @max_row
7862
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
7863
f_int2 = 2 * @max_row + source_tab.f_int1,
7864
f_charbig = 'was updated';
7866
# check unique-1-a success: 1
7868
# check unique-1-b success: 1
7869
DELETE FROM t1 WHERE f_charbig = 'was inserted';
7870
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7871
f_int2 = CAST(f_char1 AS SIGNED INT),
7872
f_charbig = CONCAT('===',f_char1,'===')
7873
WHERE f_charbig = 'was updated';
7874
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7875
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
7876
FROM t0_template source_tab
7877
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
7879
# check replace success: 1
7881
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
7883
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
7884
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
7885
UPDATE t1 SET f_int2 = f_int1,
7886
f_char1 = CAST(f_int1 AS CHAR),
7887
f_char2 = CAST(f_int1 AS CHAR),
7888
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
7889
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
7891
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7892
SELECT f_int1, f_int1, '', '', 'was inserted'
7893
FROM t0_template source_tab
7894
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
7896
# check transactions-1 success: 1
7899
# check transactions-2 success: 1
7902
# check transactions-3 success: 1
7903
DELETE FROM t1 WHERE f_charbig = 'was inserted';
7907
# check transactions-4 success: 1
7908
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7909
SELECT f_int1, f_int1, '', '', 'was inserted'
7910
FROM t0_template source_tab
7911
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
7913
# check transactions-5 success: 1
7916
Warning 1196 Some non-transactional changed tables couldn't be rolled back
7918
# check transactions-6 success: 1
7919
# INFO: Storage engine used for t1 seems to be not transactional.
7922
# check transactions-7 success: 1
7923
DELETE FROM t1 WHERE f_charbig = 'was inserted';
7925
SET @@session.sql_mode = 'traditional';
7926
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
7927
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7928
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
7929
'', '', 'was inserted' FROM t0_template
7930
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
7931
ERROR 22012: Division by 0
7934
# check transactions-8 success: 1
7935
# INFO: Storage engine used for t1 seems to be unable to revert
7936
# changes made by the failing statement.
7937
SET @@session.sql_mode = '';
7939
DELETE FROM t1 WHERE f_charbig = 'was inserted';
7941
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
7943
# check special-1 success: 1
7944
UPDATE t1 SET f_charbig = '';
7946
# check special-2 success: 1
7947
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
7948
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
7949
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
7950
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7951
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7952
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7953
'just inserted' FROM t0_template
7954
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7955
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
7957
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7958
f_charbig = 'updated by trigger'
7959
WHERE f_int1 = new.f_int1;
7961
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7962
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
7963
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7965
# check trigger-1 success: 1
7967
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7968
f_int2 = CAST(f_char1 AS SIGNED INT),
7969
f_charbig = 'just inserted'
7970
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7972
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7973
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7974
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7975
'just inserted' FROM t0_template
7976
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7977
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
7979
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7980
f_charbig = 'updated by trigger'
7981
WHERE f_int1 = new.f_int1;
7983
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7984
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
7985
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7987
# check trigger-2 success: 1
7989
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7990
f_int2 = CAST(f_char1 AS SIGNED INT),
7991
f_charbig = 'just inserted'
7992
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7994
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7995
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7996
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7997
'just inserted' FROM t0_template
7998
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7999
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
8001
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8002
f_charbig = 'updated by trigger'
8003
WHERE f_int1 = new.f_int1;
8005
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
8006
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8008
# check trigger-3 success: 1
8010
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8011
f_int2 = CAST(f_char1 AS SIGNED INT),
8012
f_charbig = 'just inserted'
8013
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8015
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8016
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8017
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8018
'just inserted' FROM t0_template
8019
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8020
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
8022
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8023
f_charbig = 'updated by trigger'
8024
WHERE f_int1 = - old.f_int1;
8026
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
8027
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8029
# check trigger-4 success: 1
8031
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8032
f_int2 = CAST(f_char1 AS SIGNED INT),
8033
f_charbig = 'just inserted'
8034
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8036
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8037
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8038
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8039
'just inserted' FROM t0_template
8040
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8041
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
8043
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8044
f_charbig = 'updated by trigger'
8045
WHERE f_int1 = new.f_int1;
8047
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
8048
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8050
# check trigger-5 success: 1
8052
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8053
f_int2 = CAST(f_char1 AS SIGNED INT),
8054
f_charbig = 'just inserted'
8055
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8057
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8058
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8059
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8060
'just inserted' FROM t0_template
8061
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8062
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
8064
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8065
f_charbig = 'updated by trigger'
8066
WHERE f_int1 = - old.f_int1;
8068
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
8069
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8071
# check trigger-6 success: 1
8073
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8074
f_int2 = CAST(f_char1 AS SIGNED INT),
8075
f_charbig = 'just inserted'
8076
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8078
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8079
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8080
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8081
'just inserted' FROM t0_template
8082
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8083
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
8085
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8086
f_charbig = 'updated by trigger'
8087
WHERE f_int1 = - old.f_int1;
8090
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8092
# check trigger-7 success: 1
8094
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8095
f_int2 = CAST(f_char1 AS SIGNED INT),
8096
f_charbig = 'just inserted'
8097
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8099
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8100
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8101
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8102
'just inserted' FROM t0_template
8103
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8104
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
8106
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8107
f_charbig = 'updated by trigger'
8108
WHERE f_int1 = - old.f_int1;
8111
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8113
# check trigger-8 success: 1
8115
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8116
f_int2 = CAST(f_char1 AS SIGNED INT),
8117
f_charbig = 'just inserted'
8118
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8120
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8122
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8123
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
8125
SET new.f_int1 = old.f_int1 + @max_row,
8126
new.f_int2 = old.f_int2 - @max_row,
8127
new.f_charbig = '####updated per update trigger####';
8130
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
8131
f_charbig = '####updated per update statement itself####';
8133
# check trigger-9 success: 1
8135
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8136
f_int2 = CAST(f_char1 AS SIGNED INT),
8137
f_charbig = CONCAT('===',f_char1,'===');
8138
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
8140
SET new.f_int1 = new.f_int1 + @max_row,
8141
new.f_int2 = new.f_int2 - @max_row,
8142
new.f_charbig = '####updated per update trigger####';
8145
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
8146
f_charbig = '####updated per update statement itself####';
8148
# check trigger-10 success: 1
8150
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8151
f_int2 = CAST(f_char1 AS SIGNED INT),
8152
f_charbig = CONCAT('===',f_char1,'===');
8153
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
8155
SET new.f_int1 = @my_max1 + @counter,
8156
new.f_int2 = @my_min2 - @counter,
8157
new.f_charbig = '####updated per insert trigger####';
8158
SET @counter = @counter + 1;
8161
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
8162
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8163
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
8164
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
8165
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
8169
# check trigger-11 success: 1
8171
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
8172
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
8173
AND f_charbig = '####updated per insert trigger####';
8174
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
8176
SET new.f_int1 = @my_max1 + @counter,
8177
new.f_int2 = @my_min2 - @counter,
8178
new.f_charbig = '####updated per insert trigger####';
8179
SET @counter = @counter + 1;
8182
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
8183
INSERT INTO t1 (f_char1, f_char2, f_charbig)
8184
SELECT CAST(f_int1 AS CHAR),
8185
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
8186
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
8190
# check trigger-12 success: 1
8192
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
8193
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
8194
AND f_charbig = '####updated per insert trigger####';
8196
Table Op Msg_type Msg_text
8197
test.t1 analyze status OK
8198
CHECK TABLE t1 EXTENDED;
8199
Table Op Msg_type Msg_text
8200
test.t1 check status OK
8201
CHECKSUM TABLE t1 EXTENDED;
8203
test.t1 <some_value>
8205
Table Op Msg_type Msg_text
8206
test.t1 optimize status OK
8207
# check layout success: 1
8208
REPAIR TABLE t1 EXTENDED;
8209
Table Op Msg_type Msg_text
8210
test.t1 repair status OK
8211
# check layout success: 1
8214
# check TRUNCATE success: 1
8215
# check layout success: 1
8216
# End usability test (inc/partition_check.inc)
8218
DROP TABLE IF EXISTS t1;
8224
f_charbig VARCHAR(1000)
8225
, UNIQUE INDEX uidx1 (f_int2,f_int1)
8227
PARTITION BY HASH(f_int1) PARTITIONS 2;
8228
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
8229
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
8230
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
8231
ALTER TABLE t1 MODIFY f_int2 BIGINT;
8232
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
8233
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
8234
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
8235
# Start usability test (inc/partition_check.inc)
8237
SHOW CREATE TABLE t1;
8239
t1 CREATE TABLE `t1` (
8240
`f_int1` int(11) DEFAULT NULL,
8241
`f_int2` bigint(20) DEFAULT NULL,
8242
`f_char1` char(20) DEFAULT NULL,
8243
`f_char2` char(20) DEFAULT NULL,
8244
`f_charbig` varchar(1000) DEFAULT NULL,
8245
UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
8246
) ENGINE=MyISAM DEFAULT CHARSET=latin1
8247
/*!50100 PARTITION BY HASH (f_int1)
8258
# check prerequisites-1 success: 1
8259
# check COUNT(*) success: 1
8260
# check MIN/MAX(f_int1) success: 1
8261
# check MIN/MAX(f_int2) success: 1
8262
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8263
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
8264
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
8265
WHERE f_int1 IN (2,3);
8266
ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
8267
# check prerequisites-3 success: 1
8268
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
8269
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8270
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
8271
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
8272
WHERE f_int1 IN (2,3);
8273
DELETE FROM t1 WHERE f_charbig = 'delete me';
8274
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8275
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
8276
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
8277
WHERE f_int1 IN (2,3);
8278
DELETE FROM t1 WHERE f_charbig = 'delete me';
8279
# check read via f_int1 success: 1
8280
# check read via f_int2 success: 1
8282
# check multiple-1 success: 1
8283
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
8285
# check multiple-2 success: 1
8286
INSERT INTO t1 SELECT * FROM t0_template
8287
WHERE MOD(f_int1,3) = 0;
8289
# check multiple-3 success: 1
8290
UPDATE t1 SET f_int1 = f_int1 + @max_row
8291
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
8292
AND @max_row_div2 + @max_row_div4;
8294
# check multiple-4 success: 1
8296
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
8297
AND @max_row_div2 + @max_row_div4 + @max_row;
8299
# check multiple-5 success: 1
8300
SELECT COUNT(*) INTO @try_count FROM t0_template
8301
WHERE MOD(f_int1,3) = 0
8302
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
8303
SELECT COUNT(*) INTO @clash_count
8304
FROM t1 INNER JOIN t0_template USING(f_int1)
8305
WHERE MOD(f_int1,3) = 0
8306
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
8307
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
8309
SET f_int1 = @cur_value , f_int2 = @cur_value,
8310
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
8311
f_charbig = '#SINGLE#';
8313
# check single-1 success: 1
8314
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
8316
SET f_int1 = @cur_value , f_int2 = @cur_value,
8317
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
8318
f_charbig = '#SINGLE#';
8320
# check single-2 success: 1
8321
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
8322
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
8323
UPDATE t1 SET f_int1 = @cur_value2
8324
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
8326
# check single-3 success: 1
8327
SET @cur_value1= -1;
8328
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
8329
UPDATE t1 SET f_int1 = @cur_value1
8330
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
8332
# check single-4 success: 1
8333
SELECT MAX(f_int1) INTO @cur_value FROM t1;
8334
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
8336
# check single-5 success: 1
8337
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
8339
# check single-6 success: 1
8340
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
8342
# check single-7 success: 1
8343
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
8344
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
8345
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
8346
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
8347
f_charbig = '#NULL#';
8349
SET f_int1 = NULL , f_int2 = -@max_row,
8350
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
8351
f_charbig = '#NULL#';
8352
# check null success: 1
8354
# check null-1 success: 1
8355
UPDATE t1 SET f_int1 = -@max_row
8356
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
8357
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
8359
# check null-2 success: 1
8360
UPDATE t1 SET f_int1 = NULL
8361
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
8362
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
8364
# check null-3 success: 1
8366
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
8367
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
8369
# check null-4 success: 1
8371
WHERE f_int1 = 0 AND f_int2 = 0
8372
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
8373
AND f_charbig = '#NULL#';
8374
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8375
SELECT f_int1, f_int1, '', '', 'was inserted'
8376
FROM t0_template source_tab
8377
WHERE MOD(f_int1,3) = 0
8378
AND f_int1 BETWEEN @max_row_div2 AND @max_row
8380
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
8381
f_int2 = 2 * @max_row + source_tab.f_int1,
8382
f_charbig = 'was updated';
8384
# check unique-1-a success: 1
8386
# check unique-1-b success: 1
8387
DELETE FROM t1 WHERE f_charbig = 'was inserted';
8388
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8389
f_int2 = CAST(f_char1 AS SIGNED INT),
8390
f_charbig = CONCAT('===',f_char1,'===')
8391
WHERE f_charbig = 'was updated';
8392
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8393
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
8394
FROM t0_template source_tab
8395
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
8397
# check replace success: 1
8399
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
8401
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
8402
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
8403
UPDATE t1 SET f_int2 = f_int1,
8404
f_char1 = CAST(f_int1 AS CHAR),
8405
f_char2 = CAST(f_int1 AS CHAR),
8406
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
8407
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
8409
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8410
SELECT f_int1, f_int1, '', '', 'was inserted'
8411
FROM t0_template source_tab
8412
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
8414
# check transactions-1 success: 1
8417
# check transactions-2 success: 1
8420
# check transactions-3 success: 1
8421
DELETE FROM t1 WHERE f_charbig = 'was inserted';
8425
# check transactions-4 success: 1
8426
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8427
SELECT f_int1, f_int1, '', '', 'was inserted'
8428
FROM t0_template source_tab
8429
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
8431
# check transactions-5 success: 1
8434
Warning 1196 Some non-transactional changed tables couldn't be rolled back
8436
# check transactions-6 success: 1
8437
# INFO: Storage engine used for t1 seems to be not transactional.
8440
# check transactions-7 success: 1
8441
DELETE FROM t1 WHERE f_charbig = 'was inserted';
8443
SET @@session.sql_mode = 'traditional';
8444
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
8445
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8446
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
8447
'', '', 'was inserted' FROM t0_template
8448
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
8449
ERROR 22012: Division by 0
8452
# check transactions-8 success: 1
8453
# INFO: Storage engine used for t1 seems to be unable to revert
8454
# changes made by the failing statement.
8455
SET @@session.sql_mode = '';
8457
DELETE FROM t1 WHERE f_charbig = 'was inserted';
8459
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
8461
# check special-1 success: 1
8462
UPDATE t1 SET f_charbig = '';
8464
# check special-2 success: 1
8465
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
8466
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
8467
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
8468
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8469
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8470
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8471
'just inserted' FROM t0_template
8472
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8473
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
8475
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8476
f_charbig = 'updated by trigger'
8477
WHERE f_int1 = new.f_int1;
8479
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8480
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
8481
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8483
# check trigger-1 success: 1
8485
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8486
f_int2 = CAST(f_char1 AS SIGNED INT),
8487
f_charbig = 'just inserted'
8488
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8490
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8491
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8492
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8493
'just inserted' FROM t0_template
8494
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8495
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
8497
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8498
f_charbig = 'updated by trigger'
8499
WHERE f_int1 = new.f_int1;
8501
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8502
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
8503
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8505
# check trigger-2 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 BEFORE UPDATE 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 = new.f_int1;
8523
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
8524
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8526
# check trigger-3 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;
8534
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8535
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8536
'just inserted' FROM t0_template
8537
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8538
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
8540
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8541
f_charbig = 'updated by trigger'
8542
WHERE f_int1 = - old.f_int1;
8544
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
8545
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8547
# check trigger-4 success: 1
8549
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8550
f_int2 = CAST(f_char1 AS SIGNED INT),
8551
f_charbig = 'just inserted'
8552
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8554
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8555
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8556
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8557
'just inserted' FROM t0_template
8558
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8559
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
8561
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8562
f_charbig = 'updated by trigger'
8563
WHERE f_int1 = new.f_int1;
8565
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
8566
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8568
# check trigger-5 success: 1
8570
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8571
f_int2 = CAST(f_char1 AS SIGNED INT),
8572
f_charbig = 'just inserted'
8573
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8575
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8576
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8577
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8578
'just inserted' FROM t0_template
8579
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8580
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
8582
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8583
f_charbig = 'updated by trigger'
8584
WHERE f_int1 = - old.f_int1;
8586
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
8587
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8589
# check trigger-6 success: 1
8591
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8592
f_int2 = CAST(f_char1 AS SIGNED INT),
8593
f_charbig = 'just inserted'
8594
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8596
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8597
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8598
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8599
'just inserted' FROM t0_template
8600
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8601
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
8603
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8604
f_charbig = 'updated by trigger'
8605
WHERE f_int1 = - old.f_int1;
8608
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8610
# check trigger-7 success: 1
8612
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8613
f_int2 = CAST(f_char1 AS SIGNED INT),
8614
f_charbig = 'just inserted'
8615
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8617
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8618
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8619
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8620
'just inserted' FROM t0_template
8621
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8622
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
8624
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8625
f_charbig = 'updated by trigger'
8626
WHERE f_int1 = - old.f_int1;
8629
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8631
# check trigger-8 success: 1
8633
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8634
f_int2 = CAST(f_char1 AS SIGNED INT),
8635
f_charbig = 'just inserted'
8636
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8638
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8640
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8641
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
8643
SET new.f_int1 = old.f_int1 + @max_row,
8644
new.f_int2 = old.f_int2 - @max_row,
8645
new.f_charbig = '####updated per update trigger####';
8648
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
8649
f_charbig = '####updated per update statement itself####';
8651
# check trigger-9 success: 1
8653
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8654
f_int2 = CAST(f_char1 AS SIGNED INT),
8655
f_charbig = CONCAT('===',f_char1,'===');
8656
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
8658
SET new.f_int1 = new.f_int1 + @max_row,
8659
new.f_int2 = new.f_int2 - @max_row,
8660
new.f_charbig = '####updated per update trigger####';
8663
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
8664
f_charbig = '####updated per update statement itself####';
8666
# check trigger-10 success: 1
8668
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8669
f_int2 = CAST(f_char1 AS SIGNED INT),
8670
f_charbig = CONCAT('===',f_char1,'===');
8671
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
8673
SET new.f_int1 = @my_max1 + @counter,
8674
new.f_int2 = @my_min2 - @counter,
8675
new.f_charbig = '####updated per insert trigger####';
8676
SET @counter = @counter + 1;
8679
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
8680
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8681
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
8682
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
8683
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
8687
# check trigger-11 success: 1
8689
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
8690
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
8691
AND f_charbig = '####updated per insert trigger####';
8692
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
8694
SET new.f_int1 = @my_max1 + @counter,
8695
new.f_int2 = @my_min2 - @counter,
8696
new.f_charbig = '####updated per insert trigger####';
8697
SET @counter = @counter + 1;
8700
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
8701
INSERT INTO t1 (f_char1, f_char2, f_charbig)
8702
SELECT CAST(f_int1 AS CHAR),
8703
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
8704
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
8708
# check trigger-12 success: 1
8710
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
8711
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
8712
AND f_charbig = '####updated per insert trigger####';
8714
Table Op Msg_type Msg_text
8715
test.t1 analyze status OK
8716
CHECK TABLE t1 EXTENDED;
8717
Table Op Msg_type Msg_text
8718
test.t1 check status OK
8719
CHECKSUM TABLE t1 EXTENDED;
8721
test.t1 <some_value>
8723
Table Op Msg_type Msg_text
8724
test.t1 optimize status OK
8725
# check layout success: 1
8726
REPAIR TABLE t1 EXTENDED;
8727
Table Op Msg_type Msg_text
8728
test.t1 repair status OK
8729
# check layout success: 1
8732
# check TRUNCATE success: 1
8733
# check layout success: 1
8734
# End usability test (inc/partition_check.inc)
8741
f_charbig VARCHAR(1000)
8742
, UNIQUE INDEX uidx1 (f_int2,f_int1)
8744
PARTITION BY KEY(f_int1) PARTITIONS 5;
8745
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
8746
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
8747
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
8748
ALTER TABLE t1 MODIFY f_int2 BIGINT;
8749
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
8750
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
8751
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
8752
# Start usability test (inc/partition_check.inc)
8754
SHOW CREATE TABLE t1;
8756
t1 CREATE TABLE `t1` (
8757
`f_int1` int(11) DEFAULT NULL,
8758
`f_int2` bigint(20) DEFAULT NULL,
8759
`f_char1` char(20) DEFAULT NULL,
8760
`f_char2` char(20) DEFAULT NULL,
8761
`f_charbig` varchar(1000) DEFAULT NULL,
8762
UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
8763
) ENGINE=MyISAM DEFAULT CHARSET=latin1
8764
/*!50100 PARTITION BY KEY (f_int1)
8781
# check prerequisites-1 success: 1
8782
# check COUNT(*) success: 1
8783
# check MIN/MAX(f_int1) success: 1
8784
# check MIN/MAX(f_int2) success: 1
8785
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8786
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
8787
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
8788
WHERE f_int1 IN (2,3);
8789
ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
8790
# check prerequisites-3 success: 1
8791
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
8792
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8793
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
8794
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
8795
WHERE f_int1 IN (2,3);
8796
DELETE FROM t1 WHERE f_charbig = 'delete me';
8797
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8798
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
8799
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
8800
WHERE f_int1 IN (2,3);
8801
DELETE FROM t1 WHERE f_charbig = 'delete me';
8802
# check read via f_int1 success: 1
8803
# check read via f_int2 success: 1
8805
# check multiple-1 success: 1
8806
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
8808
# check multiple-2 success: 1
8809
INSERT INTO t1 SELECT * FROM t0_template
8810
WHERE MOD(f_int1,3) = 0;
8812
# check multiple-3 success: 1
8813
UPDATE t1 SET f_int1 = f_int1 + @max_row
8814
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
8815
AND @max_row_div2 + @max_row_div4;
8817
# check multiple-4 success: 1
8819
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
8820
AND @max_row_div2 + @max_row_div4 + @max_row;
8822
# check multiple-5 success: 1
8823
SELECT COUNT(*) INTO @try_count FROM t0_template
8824
WHERE MOD(f_int1,3) = 0
8825
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
8826
SELECT COUNT(*) INTO @clash_count
8827
FROM t1 INNER JOIN t0_template USING(f_int1)
8828
WHERE MOD(f_int1,3) = 0
8829
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
8830
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
8832
SET f_int1 = @cur_value , f_int2 = @cur_value,
8833
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
8834
f_charbig = '#SINGLE#';
8836
# check single-1 success: 1
8837
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
8839
SET f_int1 = @cur_value , f_int2 = @cur_value,
8840
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
8841
f_charbig = '#SINGLE#';
8843
# check single-2 success: 1
8844
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
8845
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
8846
UPDATE t1 SET f_int1 = @cur_value2
8847
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
8849
# check single-3 success: 1
8850
SET @cur_value1= -1;
8851
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
8852
UPDATE t1 SET f_int1 = @cur_value1
8853
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
8855
# check single-4 success: 1
8856
SELECT MAX(f_int1) INTO @cur_value FROM t1;
8857
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
8859
# check single-5 success: 1
8860
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
8862
# check single-6 success: 1
8863
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
8865
# check single-7 success: 1
8866
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
8867
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
8868
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
8869
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
8870
f_charbig = '#NULL#';
8872
SET f_int1 = NULL , f_int2 = -@max_row,
8873
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
8874
f_charbig = '#NULL#';
8875
# check null success: 1
8877
# check null-1 success: 1
8878
UPDATE t1 SET f_int1 = -@max_row
8879
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
8880
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
8882
# check null-2 success: 1
8883
UPDATE t1 SET f_int1 = NULL
8884
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
8885
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
8887
# check null-3 success: 1
8889
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
8890
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
8892
# check null-4 success: 1
8894
WHERE f_int1 = 0 AND f_int2 = 0
8895
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
8896
AND f_charbig = '#NULL#';
8897
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8898
SELECT f_int1, f_int1, '', '', 'was inserted'
8899
FROM t0_template source_tab
8900
WHERE MOD(f_int1,3) = 0
8901
AND f_int1 BETWEEN @max_row_div2 AND @max_row
8903
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
8904
f_int2 = 2 * @max_row + source_tab.f_int1,
8905
f_charbig = 'was updated';
8907
# check unique-1-a success: 1
8909
# check unique-1-b success: 1
8910
DELETE FROM t1 WHERE f_charbig = 'was inserted';
8911
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8912
f_int2 = CAST(f_char1 AS SIGNED INT),
8913
f_charbig = CONCAT('===',f_char1,'===')
8914
WHERE f_charbig = 'was updated';
8915
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8916
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
8917
FROM t0_template source_tab
8918
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
8920
# check replace success: 1
8922
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
8924
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
8925
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
8926
UPDATE t1 SET f_int2 = f_int1,
8927
f_char1 = CAST(f_int1 AS CHAR),
8928
f_char2 = CAST(f_int1 AS CHAR),
8929
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
8930
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
8932
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8933
SELECT f_int1, f_int1, '', '', 'was inserted'
8934
FROM t0_template source_tab
8935
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
8937
# check transactions-1 success: 1
8940
# check transactions-2 success: 1
8943
# check transactions-3 success: 1
8944
DELETE FROM t1 WHERE f_charbig = 'was inserted';
8948
# check transactions-4 success: 1
8949
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8950
SELECT f_int1, f_int1, '', '', 'was inserted'
8951
FROM t0_template source_tab
8952
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
8954
# check transactions-5 success: 1
8957
Warning 1196 Some non-transactional changed tables couldn't be rolled back
8959
# check transactions-6 success: 1
8960
# INFO: Storage engine used for t1 seems to be not transactional.
8963
# check transactions-7 success: 1
8964
DELETE FROM t1 WHERE f_charbig = 'was inserted';
8966
SET @@session.sql_mode = 'traditional';
8967
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
8968
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8969
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
8970
'', '', 'was inserted' FROM t0_template
8971
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
8972
ERROR 22012: Division by 0
8975
# check transactions-8 success: 1
8976
# INFO: Storage engine used for t1 seems to be unable to revert
8977
# changes made by the failing statement.
8978
SET @@session.sql_mode = '';
8980
DELETE FROM t1 WHERE f_charbig = 'was inserted';
8982
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
8984
# check special-1 success: 1
8985
UPDATE t1 SET f_charbig = '';
8987
# check special-2 success: 1
8988
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
8989
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
8990
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
8991
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8992
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8993
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8994
'just inserted' FROM t0_template
8995
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8996
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
8998
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8999
f_charbig = 'updated by trigger'
9000
WHERE f_int1 = new.f_int1;
9002
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9003
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
9004
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9006
# check trigger-1 success: 1
9008
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9009
f_int2 = CAST(f_char1 AS SIGNED INT),
9010
f_charbig = 'just inserted'
9011
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9013
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9014
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9015
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9016
'just inserted' FROM t0_template
9017
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9018
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
9020
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9021
f_charbig = 'updated by trigger'
9022
WHERE f_int1 = new.f_int1;
9024
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9025
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
9026
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9028
# check trigger-2 success: 1
9030
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9031
f_int2 = CAST(f_char1 AS SIGNED INT),
9032
f_charbig = 'just inserted'
9033
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9035
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9036
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9037
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9038
'just inserted' FROM t0_template
9039
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9040
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
9042
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9043
f_charbig = 'updated by trigger'
9044
WHERE f_int1 = new.f_int1;
9046
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
9047
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9049
# check trigger-3 success: 1
9051
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9052
f_int2 = CAST(f_char1 AS SIGNED INT),
9053
f_charbig = 'just inserted'
9054
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9056
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9057
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9058
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9059
'just inserted' FROM t0_template
9060
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9061
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
9063
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9064
f_charbig = 'updated by trigger'
9065
WHERE f_int1 = - old.f_int1;
9067
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
9068
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9070
# check trigger-4 success: 1
9072
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9073
f_int2 = CAST(f_char1 AS SIGNED INT),
9074
f_charbig = 'just inserted'
9075
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9077
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9078
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9079
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9080
'just inserted' FROM t0_template
9081
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9082
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
9084
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9085
f_charbig = 'updated by trigger'
9086
WHERE f_int1 = new.f_int1;
9088
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
9089
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9091
# check trigger-5 success: 1
9093
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9094
f_int2 = CAST(f_char1 AS SIGNED INT),
9095
f_charbig = 'just inserted'
9096
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9098
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9099
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9100
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9101
'just inserted' FROM t0_template
9102
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9103
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
9105
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9106
f_charbig = 'updated by trigger'
9107
WHERE f_int1 = - old.f_int1;
9109
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
9110
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9112
# check trigger-6 success: 1
9114
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9115
f_int2 = CAST(f_char1 AS SIGNED INT),
9116
f_charbig = 'just inserted'
9117
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9119
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9120
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9121
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9122
'just inserted' FROM t0_template
9123
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9124
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
9126
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9127
f_charbig = 'updated by trigger'
9128
WHERE f_int1 = - old.f_int1;
9131
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9133
# check trigger-7 success: 1
9135
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9136
f_int2 = CAST(f_char1 AS SIGNED INT),
9137
f_charbig = 'just inserted'
9138
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9140
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9141
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9142
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9143
'just inserted' FROM t0_template
9144
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9145
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
9147
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9148
f_charbig = 'updated by trigger'
9149
WHERE f_int1 = - old.f_int1;
9152
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9154
# check trigger-8 success: 1
9156
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9157
f_int2 = CAST(f_char1 AS SIGNED INT),
9158
f_charbig = 'just inserted'
9159
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9161
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9163
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9164
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
9166
SET new.f_int1 = old.f_int1 + @max_row,
9167
new.f_int2 = old.f_int2 - @max_row,
9168
new.f_charbig = '####updated per update trigger####';
9171
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
9172
f_charbig = '####updated per update statement itself####';
9174
# check trigger-9 success: 1
9176
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9177
f_int2 = CAST(f_char1 AS SIGNED INT),
9178
f_charbig = CONCAT('===',f_char1,'===');
9179
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
9181
SET new.f_int1 = new.f_int1 + @max_row,
9182
new.f_int2 = new.f_int2 - @max_row,
9183
new.f_charbig = '####updated per update trigger####';
9186
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
9187
f_charbig = '####updated per update statement itself####';
9189
# check trigger-10 success: 1
9191
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9192
f_int2 = CAST(f_char1 AS SIGNED INT),
9193
f_charbig = CONCAT('===',f_char1,'===');
9194
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
9196
SET new.f_int1 = @my_max1 + @counter,
9197
new.f_int2 = @my_min2 - @counter,
9198
new.f_charbig = '####updated per insert trigger####';
9199
SET @counter = @counter + 1;
9202
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
9203
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9204
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
9205
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
9206
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
9210
# check trigger-11 success: 1
9212
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
9213
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
9214
AND f_charbig = '####updated per insert trigger####';
9215
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
9217
SET new.f_int1 = @my_max1 + @counter,
9218
new.f_int2 = @my_min2 - @counter,
9219
new.f_charbig = '####updated per insert trigger####';
9220
SET @counter = @counter + 1;
9223
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
9224
INSERT INTO t1 (f_char1, f_char2, f_charbig)
9225
SELECT CAST(f_int1 AS CHAR),
9226
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
9227
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
9231
# check trigger-12 success: 1
9233
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
9234
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
9235
AND f_charbig = '####updated per insert trigger####';
9237
Table Op Msg_type Msg_text
9238
test.t1 analyze status OK
9239
CHECK TABLE t1 EXTENDED;
9240
Table Op Msg_type Msg_text
9241
test.t1 check status OK
9242
CHECKSUM TABLE t1 EXTENDED;
9244
test.t1 <some_value>
9246
Table Op Msg_type Msg_text
9247
test.t1 optimize status OK
9248
# check layout success: 1
9249
REPAIR TABLE t1 EXTENDED;
9250
Table Op Msg_type Msg_text
9251
test.t1 repair status OK
9252
# check layout success: 1
9255
# check TRUNCATE success: 1
9256
# check layout success: 1
9257
# End usability test (inc/partition_check.inc)
9264
f_charbig VARCHAR(1000)
9265
, UNIQUE INDEX uidx1 (f_int2,f_int1)
9267
PARTITION BY LIST(MOD(f_int1,4))
9268
(PARTITION part_3 VALUES IN (-3),
9269
PARTITION part_2 VALUES IN (-2),
9270
PARTITION part_1 VALUES IN (-1),
9271
PARTITION part_N VALUES IN (NULL),
9272
PARTITION part0 VALUES IN (0),
9273
PARTITION part1 VALUES IN (1),
9274
PARTITION part2 VALUES IN (2),
9275
PARTITION part3 VALUES IN (3));
9276
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
9277
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
9278
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
9279
ALTER TABLE t1 MODIFY f_int2 BIGINT;
9280
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
9281
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
9282
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
9283
# Start usability test (inc/partition_check.inc)
9285
SHOW CREATE TABLE t1;
9287
t1 CREATE TABLE `t1` (
9288
`f_int1` int(11) DEFAULT NULL,
9289
`f_int2` bigint(20) DEFAULT NULL,
9290
`f_char1` char(20) DEFAULT NULL,
9291
`f_char2` char(20) DEFAULT NULL,
9292
`f_charbig` varchar(1000) DEFAULT NULL,
9293
UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
9294
) ENGINE=MyISAM DEFAULT CHARSET=latin1
9295
/*!50100 PARTITION BY LIST (MOD(f_int1,4))
9296
(PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM,
9297
PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM,
9298
PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM,
9299
PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM,
9300
PARTITION part0 VALUES IN (0) ENGINE = MyISAM,
9301
PARTITION part1 VALUES IN (1) ENGINE = MyISAM,
9302
PARTITION part2 VALUES IN (2) ENGINE = MyISAM,
9303
PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */
9325
# check prerequisites-1 success: 1
9326
# check COUNT(*) success: 1
9327
# check MIN/MAX(f_int1) success: 1
9328
# check MIN/MAX(f_int2) success: 1
9329
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9330
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
9331
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
9332
WHERE f_int1 IN (2,3);
9333
ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
9334
# check prerequisites-3 success: 1
9335
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
9336
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9337
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
9338
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
9339
WHERE f_int1 IN (2,3);
9340
DELETE FROM t1 WHERE f_charbig = 'delete me';
9341
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9342
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
9343
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
9344
WHERE f_int1 IN (2,3);
9345
DELETE FROM t1 WHERE f_charbig = 'delete me';
9346
# check read via f_int1 success: 1
9347
# check read via f_int2 success: 1
9349
# check multiple-1 success: 1
9350
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
9352
# check multiple-2 success: 1
9353
INSERT INTO t1 SELECT * FROM t0_template
9354
WHERE MOD(f_int1,3) = 0;
9356
# check multiple-3 success: 1
9357
UPDATE t1 SET f_int1 = f_int1 + @max_row
9358
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
9359
AND @max_row_div2 + @max_row_div4;
9361
# check multiple-4 success: 1
9363
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
9364
AND @max_row_div2 + @max_row_div4 + @max_row;
9366
# check multiple-5 success: 1
9367
SELECT COUNT(*) INTO @try_count FROM t0_template
9368
WHERE MOD(f_int1,3) = 0
9369
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
9370
SELECT COUNT(*) INTO @clash_count
9371
FROM t1 INNER JOIN t0_template USING(f_int1)
9372
WHERE MOD(f_int1,3) = 0
9373
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
9374
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
9376
SET f_int1 = @cur_value , f_int2 = @cur_value,
9377
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
9378
f_charbig = '#SINGLE#';
9380
# check single-1 success: 1
9381
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
9383
SET f_int1 = @cur_value , f_int2 = @cur_value,
9384
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
9385
f_charbig = '#SINGLE#';
9387
# check single-2 success: 1
9388
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
9389
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
9390
UPDATE t1 SET f_int1 = @cur_value2
9391
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
9393
# check single-3 success: 1
9394
SET @cur_value1= -1;
9395
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
9396
UPDATE t1 SET f_int1 = @cur_value1
9397
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
9399
# check single-4 success: 1
9400
SELECT MAX(f_int1) INTO @cur_value FROM t1;
9401
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
9403
# check single-5 success: 1
9404
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
9406
# check single-6 success: 1
9407
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
9409
# check single-7 success: 1
9410
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
9411
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
9412
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
9413
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
9414
f_charbig = '#NULL#';
9416
SET f_int1 = NULL , f_int2 = -@max_row,
9417
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
9418
f_charbig = '#NULL#';
9419
# check null success: 1
9421
# check null-1 success: 1
9422
UPDATE t1 SET f_int1 = -@max_row
9423
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
9424
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
9426
# check null-2 success: 1
9427
UPDATE t1 SET f_int1 = NULL
9428
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
9429
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
9431
# check null-3 success: 1
9433
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
9434
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
9436
# check null-4 success: 1
9438
WHERE f_int1 = 0 AND f_int2 = 0
9439
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
9440
AND f_charbig = '#NULL#';
9441
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9442
SELECT f_int1, f_int1, '', '', 'was inserted'
9443
FROM t0_template source_tab
9444
WHERE MOD(f_int1,3) = 0
9445
AND f_int1 BETWEEN @max_row_div2 AND @max_row
9447
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
9448
f_int2 = 2 * @max_row + source_tab.f_int1,
9449
f_charbig = 'was updated';
9451
# check unique-1-a success: 1
9453
# check unique-1-b success: 1
9454
DELETE FROM t1 WHERE f_charbig = 'was inserted';
9455
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9456
f_int2 = CAST(f_char1 AS SIGNED INT),
9457
f_charbig = CONCAT('===',f_char1,'===')
9458
WHERE f_charbig = 'was updated';
9459
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9460
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
9461
FROM t0_template source_tab
9462
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
9464
# check replace success: 1
9466
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
9468
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
9469
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
9470
UPDATE t1 SET f_int2 = f_int1,
9471
f_char1 = CAST(f_int1 AS CHAR),
9472
f_char2 = CAST(f_int1 AS CHAR),
9473
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
9474
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
9476
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9477
SELECT f_int1, f_int1, '', '', 'was inserted'
9478
FROM t0_template source_tab
9479
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
9481
# check transactions-1 success: 1
9484
# check transactions-2 success: 1
9487
# check transactions-3 success: 1
9488
DELETE FROM t1 WHERE f_charbig = 'was inserted';
9492
# check transactions-4 success: 1
9493
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9494
SELECT f_int1, f_int1, '', '', 'was inserted'
9495
FROM t0_template source_tab
9496
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
9498
# check transactions-5 success: 1
9501
Warning 1196 Some non-transactional changed tables couldn't be rolled back
9503
# check transactions-6 success: 1
9504
# INFO: Storage engine used for t1 seems to be not transactional.
9507
# check transactions-7 success: 1
9508
DELETE FROM t1 WHERE f_charbig = 'was inserted';
9510
SET @@session.sql_mode = 'traditional';
9511
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
9512
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9513
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
9514
'', '', 'was inserted' FROM t0_template
9515
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
9516
ERROR 22012: Division by 0
9519
# check transactions-8 success: 1
9520
# INFO: Storage engine used for t1 seems to be unable to revert
9521
# changes made by the failing statement.
9522
SET @@session.sql_mode = '';
9524
DELETE FROM t1 WHERE f_charbig = 'was inserted';
9526
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
9528
# check special-1 success: 1
9529
UPDATE t1 SET f_charbig = '';
9531
# check special-2 success: 1
9532
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
9533
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
9534
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
9535
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9536
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9537
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9538
'just inserted' FROM t0_template
9539
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9540
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
9542
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9543
f_charbig = 'updated by trigger'
9544
WHERE f_int1 = new.f_int1;
9546
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9547
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
9548
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9550
# check trigger-1 success: 1
9552
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9553
f_int2 = CAST(f_char1 AS SIGNED INT),
9554
f_charbig = 'just inserted'
9555
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9557
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9558
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9559
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9560
'just inserted' FROM t0_template
9561
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9562
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
9564
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9565
f_charbig = 'updated by trigger'
9566
WHERE f_int1 = new.f_int1;
9568
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9569
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
9570
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9572
# check trigger-2 success: 1
9574
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9575
f_int2 = CAST(f_char1 AS SIGNED INT),
9576
f_charbig = 'just inserted'
9577
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9579
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9580
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9581
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9582
'just inserted' FROM t0_template
9583
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9584
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
9586
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9587
f_charbig = 'updated by trigger'
9588
WHERE f_int1 = new.f_int1;
9590
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
9591
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9593
# check trigger-3 success: 1
9595
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9596
f_int2 = CAST(f_char1 AS SIGNED INT),
9597
f_charbig = 'just inserted'
9598
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9600
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9601
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9602
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9603
'just inserted' FROM t0_template
9604
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9605
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
9607
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9608
f_charbig = 'updated by trigger'
9609
WHERE f_int1 = - old.f_int1;
9611
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
9612
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9614
# check trigger-4 success: 1
9616
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9617
f_int2 = CAST(f_char1 AS SIGNED INT),
9618
f_charbig = 'just inserted'
9619
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9621
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9622
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9623
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9624
'just inserted' FROM t0_template
9625
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9626
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
9628
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9629
f_charbig = 'updated by trigger'
9630
WHERE f_int1 = new.f_int1;
9632
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
9633
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9635
# check trigger-5 success: 1
9637
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9638
f_int2 = CAST(f_char1 AS SIGNED INT),
9639
f_charbig = 'just inserted'
9640
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9642
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9643
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9644
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9645
'just inserted' FROM t0_template
9646
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9647
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
9649
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9650
f_charbig = 'updated by trigger'
9651
WHERE f_int1 = - old.f_int1;
9653
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
9654
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9656
# check trigger-6 success: 1
9658
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9659
f_int2 = CAST(f_char1 AS SIGNED INT),
9660
f_charbig = 'just inserted'
9661
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9663
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9664
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9665
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9666
'just inserted' FROM t0_template
9667
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9668
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
9670
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9671
f_charbig = 'updated by trigger'
9672
WHERE f_int1 = - old.f_int1;
9675
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9677
# check trigger-7 success: 1
9679
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9680
f_int2 = CAST(f_char1 AS SIGNED INT),
9681
f_charbig = 'just inserted'
9682
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9684
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9685
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9686
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9687
'just inserted' FROM t0_template
9688
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9689
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
9691
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9692
f_charbig = 'updated by trigger'
9693
WHERE f_int1 = - old.f_int1;
9696
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9698
# check trigger-8 success: 1
9700
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9701
f_int2 = CAST(f_char1 AS SIGNED INT),
9702
f_charbig = 'just inserted'
9703
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9705
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9707
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9708
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
9710
SET new.f_int1 = old.f_int1 + @max_row,
9711
new.f_int2 = old.f_int2 - @max_row,
9712
new.f_charbig = '####updated per update trigger####';
9715
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
9716
f_charbig = '####updated per update statement itself####';
9718
# check trigger-9 success: 1
9720
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9721
f_int2 = CAST(f_char1 AS SIGNED INT),
9722
f_charbig = CONCAT('===',f_char1,'===');
9723
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
9725
SET new.f_int1 = new.f_int1 + @max_row,
9726
new.f_int2 = new.f_int2 - @max_row,
9727
new.f_charbig = '####updated per update trigger####';
9730
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
9731
f_charbig = '####updated per update statement itself####';
9733
# check trigger-10 success: 1
9735
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9736
f_int2 = CAST(f_char1 AS SIGNED INT),
9737
f_charbig = CONCAT('===',f_char1,'===');
9738
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
9740
SET new.f_int1 = @my_max1 + @counter,
9741
new.f_int2 = @my_min2 - @counter,
9742
new.f_charbig = '####updated per insert trigger####';
9743
SET @counter = @counter + 1;
9746
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
9747
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9748
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
9749
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
9750
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
9754
# check trigger-11 success: 1
9756
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
9757
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
9758
AND f_charbig = '####updated per insert trigger####';
9759
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
9761
SET new.f_int1 = @my_max1 + @counter,
9762
new.f_int2 = @my_min2 - @counter,
9763
new.f_charbig = '####updated per insert trigger####';
9764
SET @counter = @counter + 1;
9767
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
9768
INSERT INTO t1 (f_char1, f_char2, f_charbig)
9769
SELECT CAST(f_int1 AS CHAR),
9770
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
9771
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
9775
# check trigger-12 success: 1
9777
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
9778
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
9779
AND f_charbig = '####updated per insert trigger####';
9781
Table Op Msg_type Msg_text
9782
test.t1 analyze status OK
9783
CHECK TABLE t1 EXTENDED;
9784
Table Op Msg_type Msg_text
9785
test.t1 check status OK
9786
CHECKSUM TABLE t1 EXTENDED;
9788
test.t1 <some_value>
9790
Table Op Msg_type Msg_text
9791
test.t1 optimize status OK
9792
# check layout success: 1
9793
REPAIR TABLE t1 EXTENDED;
9794
Table Op Msg_type Msg_text
9795
test.t1 repair status OK
9796
# check layout success: 1
9799
# check TRUNCATE success: 1
9800
# check layout success: 1
9801
# End usability test (inc/partition_check.inc)
9808
f_charbig VARCHAR(1000)
9809
, UNIQUE INDEX uidx1 (f_int2,f_int1)
9811
PARTITION BY RANGE(f_int1)
9812
(PARTITION parta VALUES LESS THAN (0),
9813
PARTITION partb VALUES LESS THAN (5),
9814
PARTITION partc VALUES LESS THAN (10),
9815
PARTITION partd VALUES LESS THAN (10 + 5),
9816
PARTITION parte VALUES LESS THAN (20),
9817
PARTITION partf VALUES LESS THAN (2147483646));
9818
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
9819
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
9820
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
9821
ALTER TABLE t1 MODIFY f_int2 BIGINT;
9822
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
9823
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
9824
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
9825
# Start usability test (inc/partition_check.inc)
9827
SHOW CREATE TABLE t1;
9829
t1 CREATE TABLE `t1` (
9830
`f_int1` int(11) DEFAULT NULL,
9831
`f_int2` bigint(20) DEFAULT NULL,
9832
`f_char1` char(20) DEFAULT NULL,
9833
`f_char2` char(20) DEFAULT NULL,
9834
`f_charbig` varchar(1000) DEFAULT NULL,
9835
UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
9836
) ENGINE=MyISAM DEFAULT CHARSET=latin1
9837
/*!50100 PARTITION BY RANGE (f_int1)
9838
(PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM,
9839
PARTITION partb VALUES LESS THAN (5) ENGINE = MyISAM,
9840
PARTITION partc VALUES LESS THAN (10) ENGINE = MyISAM,
9841
PARTITION partd VALUES LESS THAN (15) ENGINE = MyISAM,
9842
PARTITION parte VALUES LESS THAN (20) ENGINE = MyISAM,
9843
PARTITION partf VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
9861
# check prerequisites-1 success: 1
9862
# check COUNT(*) success: 1
9863
# check MIN/MAX(f_int1) success: 1
9864
# check MIN/MAX(f_int2) success: 1
9865
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9866
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
9867
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
9868
WHERE f_int1 IN (2,3);
9869
ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
9870
# check prerequisites-3 success: 1
9871
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
9872
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9873
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
9874
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
9875
WHERE f_int1 IN (2,3);
9876
DELETE FROM t1 WHERE f_charbig = 'delete me';
9877
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9878
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
9879
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
9880
WHERE f_int1 IN (2,3);
9881
DELETE FROM t1 WHERE f_charbig = 'delete me';
9882
# check read via f_int1 success: 1
9883
# check read via f_int2 success: 1
9885
# check multiple-1 success: 1
9886
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
9888
# check multiple-2 success: 1
9889
INSERT INTO t1 SELECT * FROM t0_template
9890
WHERE MOD(f_int1,3) = 0;
9892
# check multiple-3 success: 1
9893
UPDATE t1 SET f_int1 = f_int1 + @max_row
9894
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
9895
AND @max_row_div2 + @max_row_div4;
9897
# check multiple-4 success: 1
9899
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
9900
AND @max_row_div2 + @max_row_div4 + @max_row;
9902
# check multiple-5 success: 1
9903
SELECT COUNT(*) INTO @try_count FROM t0_template
9904
WHERE MOD(f_int1,3) = 0
9905
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
9906
SELECT COUNT(*) INTO @clash_count
9907
FROM t1 INNER JOIN t0_template USING(f_int1)
9908
WHERE MOD(f_int1,3) = 0
9909
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
9910
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
9912
SET f_int1 = @cur_value , f_int2 = @cur_value,
9913
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
9914
f_charbig = '#SINGLE#';
9916
# check single-1 success: 1
9917
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
9919
SET f_int1 = @cur_value , f_int2 = @cur_value,
9920
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
9921
f_charbig = '#SINGLE#';
9923
# check single-2 success: 1
9924
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
9925
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
9926
UPDATE t1 SET f_int1 = @cur_value2
9927
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
9929
# check single-3 success: 1
9930
SET @cur_value1= -1;
9931
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
9932
UPDATE t1 SET f_int1 = @cur_value1
9933
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
9935
# check single-4 success: 1
9936
SELECT MAX(f_int1) INTO @cur_value FROM t1;
9937
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
9939
# check single-5 success: 1
9940
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
9942
# check single-6 success: 1
9943
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
9944
ERROR HY000: Table has no partition for value 2147483647
9945
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
9946
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
9947
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
9948
f_charbig = '#NULL#';
9950
SET f_int1 = NULL , f_int2 = -@max_row,
9951
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
9952
f_charbig = '#NULL#';
9953
# check null success: 1
9955
# check null-1 success: 1
9956
UPDATE t1 SET f_int1 = -@max_row
9957
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
9958
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
9960
# check null-2 success: 1
9961
UPDATE t1 SET f_int1 = NULL
9962
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
9963
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
9965
# check null-3 success: 1
9967
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
9968
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
9970
# check null-4 success: 1
9972
WHERE f_int1 = 0 AND f_int2 = 0
9973
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
9974
AND f_charbig = '#NULL#';
9975
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9976
SELECT f_int1, f_int1, '', '', 'was inserted'
9977
FROM t0_template source_tab
9978
WHERE MOD(f_int1,3) = 0
9979
AND f_int1 BETWEEN @max_row_div2 AND @max_row
9981
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
9982
f_int2 = 2 * @max_row + source_tab.f_int1,
9983
f_charbig = 'was updated';
9985
# check unique-1-a success: 1
9987
# check unique-1-b success: 1
9988
DELETE FROM t1 WHERE f_charbig = 'was inserted';
9989
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9990
f_int2 = CAST(f_char1 AS SIGNED INT),
9991
f_charbig = CONCAT('===',f_char1,'===')
9992
WHERE f_charbig = 'was updated';
9993
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9994
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
9995
FROM t0_template source_tab
9996
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
9998
# check replace success: 1
10000
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
10002
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
10003
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
10004
UPDATE t1 SET f_int2 = f_int1,
10005
f_char1 = CAST(f_int1 AS CHAR),
10006
f_char2 = CAST(f_int1 AS CHAR),
10007
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
10008
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
10010
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10011
SELECT f_int1, f_int1, '', '', 'was inserted'
10012
FROM t0_template source_tab
10013
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
10015
# check transactions-1 success: 1
10018
# check transactions-2 success: 1
10021
# check transactions-3 success: 1
10022
DELETE FROM t1 WHERE f_charbig = 'was inserted';
10026
# check transactions-4 success: 1
10027
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10028
SELECT f_int1, f_int1, '', '', 'was inserted'
10029
FROM t0_template source_tab
10030
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
10032
# check transactions-5 success: 1
10035
Warning 1196 Some non-transactional changed tables couldn't be rolled back
10037
# check transactions-6 success: 1
10038
# INFO: Storage engine used for t1 seems to be not transactional.
10041
# check transactions-7 success: 1
10042
DELETE FROM t1 WHERE f_charbig = 'was inserted';
10044
SET @@session.sql_mode = 'traditional';
10045
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
10046
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10047
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
10048
'', '', 'was inserted' FROM t0_template
10049
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
10050
ERROR 22012: Division by 0
10053
# check transactions-8 success: 1
10054
# INFO: Storage engine used for t1 seems to be unable to revert
10055
# changes made by the failing statement.
10056
SET @@session.sql_mode = '';
10058
DELETE FROM t1 WHERE f_charbig = 'was inserted';
10060
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
10062
# check special-1 success: 1
10063
UPDATE t1 SET f_charbig = '';
10065
# check special-2 success: 1
10066
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
10067
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
10068
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
10069
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10070
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10071
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10072
'just inserted' FROM t0_template
10073
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10074
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
10076
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10077
f_charbig = 'updated by trigger'
10078
WHERE f_int1 = new.f_int1;
10080
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10081
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
10082
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10084
# check trigger-1 success: 1
10085
DROP TRIGGER trg_1;
10086
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10087
f_int2 = CAST(f_char1 AS SIGNED INT),
10088
f_charbig = 'just inserted'
10089
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10091
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10092
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10093
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10094
'just inserted' FROM t0_template
10095
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10096
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
10098
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10099
f_charbig = 'updated by trigger'
10100
WHERE f_int1 = new.f_int1;
10102
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10103
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
10104
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10106
# check trigger-2 success: 1
10107
DROP TRIGGER trg_1;
10108
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10109
f_int2 = CAST(f_char1 AS SIGNED INT),
10110
f_charbig = 'just inserted'
10111
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10113
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10114
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10115
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10116
'just inserted' FROM t0_template
10117
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10118
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
10120
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10121
f_charbig = 'updated by trigger'
10122
WHERE f_int1 = new.f_int1;
10124
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
10125
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10127
# check trigger-3 success: 1
10128
DROP TRIGGER trg_1;
10129
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10130
f_int2 = CAST(f_char1 AS SIGNED INT),
10131
f_charbig = 'just inserted'
10132
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10134
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10135
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10136
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10137
'just inserted' FROM t0_template
10138
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10139
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
10141
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10142
f_charbig = 'updated by trigger'
10143
WHERE f_int1 = - old.f_int1;
10145
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
10146
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10148
# check trigger-4 success: 1
10149
DROP TRIGGER trg_1;
10150
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10151
f_int2 = CAST(f_char1 AS SIGNED INT),
10152
f_charbig = 'just inserted'
10153
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10155
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10156
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10157
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10158
'just inserted' FROM t0_template
10159
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10160
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
10162
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10163
f_charbig = 'updated by trigger'
10164
WHERE f_int1 = new.f_int1;
10166
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
10167
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10169
# check trigger-5 success: 1
10170
DROP TRIGGER trg_1;
10171
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10172
f_int2 = CAST(f_char1 AS SIGNED INT),
10173
f_charbig = 'just inserted'
10174
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10176
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10177
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10178
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10179
'just inserted' FROM t0_template
10180
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10181
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
10183
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10184
f_charbig = 'updated by trigger'
10185
WHERE f_int1 = - old.f_int1;
10187
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
10188
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10190
# check trigger-6 success: 1
10191
DROP TRIGGER trg_1;
10192
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10193
f_int2 = CAST(f_char1 AS SIGNED INT),
10194
f_charbig = 'just inserted'
10195
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10197
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10198
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10199
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10200
'just inserted' FROM t0_template
10201
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10202
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
10204
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10205
f_charbig = 'updated by trigger'
10206
WHERE f_int1 = - old.f_int1;
10209
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10211
# check trigger-7 success: 1
10212
DROP TRIGGER trg_1;
10213
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10214
f_int2 = CAST(f_char1 AS SIGNED INT),
10215
f_charbig = 'just inserted'
10216
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10218
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10219
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10220
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10221
'just inserted' FROM t0_template
10222
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10223
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
10225
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10226
f_charbig = 'updated by trigger'
10227
WHERE f_int1 = - old.f_int1;
10230
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10232
# check trigger-8 success: 1
10233
DROP TRIGGER trg_1;
10234
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10235
f_int2 = CAST(f_char1 AS SIGNED INT),
10236
f_charbig = 'just inserted'
10237
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10239
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10241
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10242
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
10244
SET new.f_int1 = old.f_int1 + @max_row,
10245
new.f_int2 = old.f_int2 - @max_row,
10246
new.f_charbig = '####updated per update trigger####';
10249
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
10250
f_charbig = '####updated per update statement itself####';
10252
# check trigger-9 success: 1
10253
DROP TRIGGER trg_2;
10254
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10255
f_int2 = CAST(f_char1 AS SIGNED INT),
10256
f_charbig = CONCAT('===',f_char1,'===');
10257
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
10259
SET new.f_int1 = new.f_int1 + @max_row,
10260
new.f_int2 = new.f_int2 - @max_row,
10261
new.f_charbig = '####updated per update trigger####';
10264
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
10265
f_charbig = '####updated per update statement itself####';
10267
# check trigger-10 success: 1
10268
DROP TRIGGER trg_2;
10269
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10270
f_int2 = CAST(f_char1 AS SIGNED INT),
10271
f_charbig = CONCAT('===',f_char1,'===');
10272
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
10274
SET new.f_int1 = @my_max1 + @counter,
10275
new.f_int2 = @my_min2 - @counter,
10276
new.f_charbig = '####updated per insert trigger####';
10277
SET @counter = @counter + 1;
10280
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
10281
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10282
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
10283
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
10284
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
10286
DROP TRIGGER trg_3;
10288
# check trigger-11 success: 1
10290
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
10291
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
10292
AND f_charbig = '####updated per insert trigger####';
10293
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
10295
SET new.f_int1 = @my_max1 + @counter,
10296
new.f_int2 = @my_min2 - @counter,
10297
new.f_charbig = '####updated per insert trigger####';
10298
SET @counter = @counter + 1;
10301
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
10302
INSERT INTO t1 (f_char1, f_char2, f_charbig)
10303
SELECT CAST(f_int1 AS CHAR),
10304
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
10305
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
10307
DROP TRIGGER trg_3;
10309
# check trigger-12 success: 1
10311
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
10312
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
10313
AND f_charbig = '####updated per insert trigger####';
10315
Table Op Msg_type Msg_text
10316
test.t1 analyze status OK
10317
CHECK TABLE t1 EXTENDED;
10318
Table Op Msg_type Msg_text
10319
test.t1 check status OK
10320
CHECKSUM TABLE t1 EXTENDED;
10322
test.t1 <some_value>
10324
Table Op Msg_type Msg_text
10325
test.t1 optimize status OK
10326
# check layout success: 1
10327
REPAIR TABLE t1 EXTENDED;
10328
Table Op Msg_type Msg_text
10329
test.t1 repair status OK
10330
# check layout success: 1
10333
# check TRUNCATE success: 1
10334
# check layout success: 1
10335
# End usability test (inc/partition_check.inc)
10342
f_charbig VARCHAR(1000)
10343
, UNIQUE INDEX uidx1 (f_int2,f_int1)
10345
PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
10346
(PARTITION parta VALUES LESS THAN (0),
10347
PARTITION partb VALUES LESS THAN (5),
10348
PARTITION partc VALUES LESS THAN (10),
10349
PARTITION partd VALUES LESS THAN (2147483646));
10350
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
10351
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
10352
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
10353
ALTER TABLE t1 MODIFY f_int2 BIGINT;
10354
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
10355
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
10356
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
10357
# Start usability test (inc/partition_check.inc)
10359
SHOW CREATE TABLE t1;
10361
t1 CREATE TABLE `t1` (
10362
`f_int1` int(11) DEFAULT NULL,
10363
`f_int2` bigint(20) DEFAULT NULL,
10364
`f_char1` char(20) DEFAULT NULL,
10365
`f_char2` char(20) DEFAULT NULL,
10366
`f_charbig` varchar(1000) DEFAULT NULL,
10367
UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
10368
) ENGINE=MyISAM DEFAULT CHARSET=latin1
10369
/*!50100 PARTITION BY RANGE (f_int1 DIV 2)
10370
SUBPARTITION BY HASH (f_int1)
10372
(PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM,
10373
PARTITION partb VALUES LESS THAN (5) ENGINE = MyISAM,
10374
PARTITION partc VALUES LESS THAN (10) ENGINE = MyISAM,
10375
PARTITION partd VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
10378
t1#P#parta#SP#partasp0.MYD
10379
t1#P#parta#SP#partasp0.MYI
10380
t1#P#parta#SP#partasp1.MYD
10381
t1#P#parta#SP#partasp1.MYI
10382
t1#P#partb#SP#partbsp0.MYD
10383
t1#P#partb#SP#partbsp0.MYI
10384
t1#P#partb#SP#partbsp1.MYD
10385
t1#P#partb#SP#partbsp1.MYI
10386
t1#P#partc#SP#partcsp0.MYD
10387
t1#P#partc#SP#partcsp0.MYI
10388
t1#P#partc#SP#partcsp1.MYD
10389
t1#P#partc#SP#partcsp1.MYI
10390
t1#P#partd#SP#partdsp0.MYD
10391
t1#P#partd#SP#partdsp0.MYI
10392
t1#P#partd#SP#partdsp1.MYD
10393
t1#P#partd#SP#partdsp1.MYI
10397
# check prerequisites-1 success: 1
10398
# check COUNT(*) success: 1
10399
# check MIN/MAX(f_int1) success: 1
10400
# check MIN/MAX(f_int2) success: 1
10401
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10402
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
10403
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
10404
WHERE f_int1 IN (2,3);
10405
ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
10406
# check prerequisites-3 success: 1
10407
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
10408
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10409
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
10410
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
10411
WHERE f_int1 IN (2,3);
10412
DELETE FROM t1 WHERE f_charbig = 'delete me';
10413
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10414
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
10415
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
10416
WHERE f_int1 IN (2,3);
10417
DELETE FROM t1 WHERE f_charbig = 'delete me';
10418
# check read via f_int1 success: 1
10419
# check read via f_int2 success: 1
10421
# check multiple-1 success: 1
10422
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
10424
# check multiple-2 success: 1
10425
INSERT INTO t1 SELECT * FROM t0_template
10426
WHERE MOD(f_int1,3) = 0;
10428
# check multiple-3 success: 1
10429
UPDATE t1 SET f_int1 = f_int1 + @max_row
10430
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
10431
AND @max_row_div2 + @max_row_div4;
10433
# check multiple-4 success: 1
10435
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
10436
AND @max_row_div2 + @max_row_div4 + @max_row;
10438
# check multiple-5 success: 1
10439
SELECT COUNT(*) INTO @try_count FROM t0_template
10440
WHERE MOD(f_int1,3) = 0
10441
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
10442
SELECT COUNT(*) INTO @clash_count
10443
FROM t1 INNER JOIN t0_template USING(f_int1)
10444
WHERE MOD(f_int1,3) = 0
10445
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
10446
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
10448
SET f_int1 = @cur_value , f_int2 = @cur_value,
10449
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
10450
f_charbig = '#SINGLE#';
10452
# check single-1 success: 1
10453
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
10455
SET f_int1 = @cur_value , f_int2 = @cur_value,
10456
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
10457
f_charbig = '#SINGLE#';
10459
# check single-2 success: 1
10460
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
10461
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
10462
UPDATE t1 SET f_int1 = @cur_value2
10463
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
10465
# check single-3 success: 1
10466
SET @cur_value1= -1;
10467
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
10468
UPDATE t1 SET f_int1 = @cur_value1
10469
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
10471
# check single-4 success: 1
10472
SELECT MAX(f_int1) INTO @cur_value FROM t1;
10473
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
10475
# check single-5 success: 1
10476
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
10478
# check single-6 success: 1
10479
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
10481
# check single-7 success: 1
10482
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
10483
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
10484
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
10485
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
10486
f_charbig = '#NULL#';
10488
SET f_int1 = NULL , f_int2 = -@max_row,
10489
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
10490
f_charbig = '#NULL#';
10491
# check null success: 1
10493
# check null-1 success: 1
10494
UPDATE t1 SET f_int1 = -@max_row
10495
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
10496
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
10498
# check null-2 success: 1
10499
UPDATE t1 SET f_int1 = NULL
10500
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
10501
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
10503
# check null-3 success: 1
10505
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
10506
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
10508
# check null-4 success: 1
10510
WHERE f_int1 = 0 AND f_int2 = 0
10511
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
10512
AND f_charbig = '#NULL#';
10513
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10514
SELECT f_int1, f_int1, '', '', 'was inserted'
10515
FROM t0_template source_tab
10516
WHERE MOD(f_int1,3) = 0
10517
AND f_int1 BETWEEN @max_row_div2 AND @max_row
10519
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
10520
f_int2 = 2 * @max_row + source_tab.f_int1,
10521
f_charbig = 'was updated';
10523
# check unique-1-a success: 1
10525
# check unique-1-b success: 1
10526
DELETE FROM t1 WHERE f_charbig = 'was inserted';
10527
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10528
f_int2 = CAST(f_char1 AS SIGNED INT),
10529
f_charbig = CONCAT('===',f_char1,'===')
10530
WHERE f_charbig = 'was updated';
10531
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10532
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
10533
FROM t0_template source_tab
10534
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
10536
# check replace success: 1
10538
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
10540
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
10541
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
10542
UPDATE t1 SET f_int2 = f_int1,
10543
f_char1 = CAST(f_int1 AS CHAR),
10544
f_char2 = CAST(f_int1 AS CHAR),
10545
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
10546
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
10548
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10549
SELECT f_int1, f_int1, '', '', 'was inserted'
10550
FROM t0_template source_tab
10551
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
10553
# check transactions-1 success: 1
10556
# check transactions-2 success: 1
10559
# check transactions-3 success: 1
10560
DELETE FROM t1 WHERE f_charbig = 'was inserted';
10564
# check transactions-4 success: 1
10565
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10566
SELECT f_int1, f_int1, '', '', 'was inserted'
10567
FROM t0_template source_tab
10568
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
10570
# check transactions-5 success: 1
10573
Warning 1196 Some non-transactional changed tables couldn't be rolled back
10575
# check transactions-6 success: 1
10576
# INFO: Storage engine used for t1 seems to be not transactional.
10579
# check transactions-7 success: 1
10580
DELETE FROM t1 WHERE f_charbig = 'was inserted';
10582
SET @@session.sql_mode = 'traditional';
10583
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
10584
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10585
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
10586
'', '', 'was inserted' FROM t0_template
10587
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
10588
ERROR 22012: Division by 0
10591
# check transactions-8 success: 1
10592
# INFO: Storage engine used for t1 seems to be unable to revert
10593
# changes made by the failing statement.
10594
SET @@session.sql_mode = '';
10596
DELETE FROM t1 WHERE f_charbig = 'was inserted';
10598
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
10600
# check special-1 success: 1
10601
UPDATE t1 SET f_charbig = '';
10603
# check special-2 success: 1
10604
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
10605
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
10606
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
10607
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10608
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10609
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10610
'just inserted' FROM t0_template
10611
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10612
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
10614
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10615
f_charbig = 'updated by trigger'
10616
WHERE f_int1 = new.f_int1;
10618
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10619
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
10620
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10622
# check trigger-1 success: 1
10623
DROP TRIGGER trg_1;
10624
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10625
f_int2 = CAST(f_char1 AS SIGNED INT),
10626
f_charbig = 'just inserted'
10627
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10629
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10630
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10631
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10632
'just inserted' FROM t0_template
10633
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10634
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
10636
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10637
f_charbig = 'updated by trigger'
10638
WHERE f_int1 = new.f_int1;
10640
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10641
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
10642
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10644
# check trigger-2 success: 1
10645
DROP TRIGGER trg_1;
10646
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10647
f_int2 = CAST(f_char1 AS SIGNED INT),
10648
f_charbig = 'just inserted'
10649
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10651
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10652
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10653
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10654
'just inserted' FROM t0_template
10655
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10656
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
10658
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10659
f_charbig = 'updated by trigger'
10660
WHERE f_int1 = new.f_int1;
10662
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
10663
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10665
# check trigger-3 success: 1
10666
DROP TRIGGER trg_1;
10667
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10668
f_int2 = CAST(f_char1 AS SIGNED INT),
10669
f_charbig = 'just inserted'
10670
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10672
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10673
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10674
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10675
'just inserted' FROM t0_template
10676
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10677
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
10679
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10680
f_charbig = 'updated by trigger'
10681
WHERE f_int1 = - old.f_int1;
10683
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
10684
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10686
# check trigger-4 success: 1
10687
DROP TRIGGER trg_1;
10688
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10689
f_int2 = CAST(f_char1 AS SIGNED INT),
10690
f_charbig = 'just inserted'
10691
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10693
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10694
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10695
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10696
'just inserted' FROM t0_template
10697
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10698
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
10700
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10701
f_charbig = 'updated by trigger'
10702
WHERE f_int1 = new.f_int1;
10704
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
10705
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10707
# check trigger-5 success: 1
10708
DROP TRIGGER trg_1;
10709
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10710
f_int2 = CAST(f_char1 AS SIGNED INT),
10711
f_charbig = 'just inserted'
10712
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10714
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10715
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10716
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10717
'just inserted' FROM t0_template
10718
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10719
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
10721
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10722
f_charbig = 'updated by trigger'
10723
WHERE f_int1 = - old.f_int1;
10725
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
10726
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10728
# check trigger-6 success: 1
10729
DROP TRIGGER trg_1;
10730
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10731
f_int2 = CAST(f_char1 AS SIGNED INT),
10732
f_charbig = 'just inserted'
10733
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10735
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10736
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10737
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10738
'just inserted' FROM t0_template
10739
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10740
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
10742
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10743
f_charbig = 'updated by trigger'
10744
WHERE f_int1 = - old.f_int1;
10747
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10749
# check trigger-7 success: 1
10750
DROP TRIGGER trg_1;
10751
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10752
f_int2 = CAST(f_char1 AS SIGNED INT),
10753
f_charbig = 'just inserted'
10754
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10756
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10757
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10758
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10759
'just inserted' FROM t0_template
10760
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10761
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
10763
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10764
f_charbig = 'updated by trigger'
10765
WHERE f_int1 = - old.f_int1;
10768
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10770
# check trigger-8 success: 1
10771
DROP TRIGGER trg_1;
10772
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10773
f_int2 = CAST(f_char1 AS SIGNED INT),
10774
f_charbig = 'just inserted'
10775
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10777
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10779
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10780
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
10782
SET new.f_int1 = old.f_int1 + @max_row,
10783
new.f_int2 = old.f_int2 - @max_row,
10784
new.f_charbig = '####updated per update trigger####';
10787
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
10788
f_charbig = '####updated per update statement itself####';
10790
# check trigger-9 success: 1
10791
DROP TRIGGER trg_2;
10792
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10793
f_int2 = CAST(f_char1 AS SIGNED INT),
10794
f_charbig = CONCAT('===',f_char1,'===');
10795
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
10797
SET new.f_int1 = new.f_int1 + @max_row,
10798
new.f_int2 = new.f_int2 - @max_row,
10799
new.f_charbig = '####updated per update trigger####';
10802
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
10803
f_charbig = '####updated per update statement itself####';
10805
# check trigger-10 success: 1
10806
DROP TRIGGER trg_2;
10807
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10808
f_int2 = CAST(f_char1 AS SIGNED INT),
10809
f_charbig = CONCAT('===',f_char1,'===');
10810
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
10812
SET new.f_int1 = @my_max1 + @counter,
10813
new.f_int2 = @my_min2 - @counter,
10814
new.f_charbig = '####updated per insert trigger####';
10815
SET @counter = @counter + 1;
10818
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
10819
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10820
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
10821
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
10822
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
10824
DROP TRIGGER trg_3;
10826
# check trigger-11 success: 1
10828
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
10829
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
10830
AND f_charbig = '####updated per insert trigger####';
10831
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
10833
SET new.f_int1 = @my_max1 + @counter,
10834
new.f_int2 = @my_min2 - @counter,
10835
new.f_charbig = '####updated per insert trigger####';
10836
SET @counter = @counter + 1;
10839
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
10840
INSERT INTO t1 (f_char1, f_char2, f_charbig)
10841
SELECT CAST(f_int1 AS CHAR),
10842
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
10843
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
10845
DROP TRIGGER trg_3;
10847
# check trigger-12 success: 1
10849
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
10850
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
10851
AND f_charbig = '####updated per insert trigger####';
10853
Table Op Msg_type Msg_text
10854
test.t1 analyze status OK
10855
CHECK TABLE t1 EXTENDED;
10856
Table Op Msg_type Msg_text
10857
test.t1 check status OK
10858
CHECKSUM TABLE t1 EXTENDED;
10860
test.t1 <some_value>
10862
Table Op Msg_type Msg_text
10863
test.t1 optimize status OK
10864
# check layout success: 1
10865
REPAIR TABLE t1 EXTENDED;
10866
Table Op Msg_type Msg_text
10867
test.t1 repair status OK
10868
# check layout success: 1
10871
# check TRUNCATE success: 1
10872
# check layout success: 1
10873
# End usability test (inc/partition_check.inc)
10880
f_charbig VARCHAR(1000)
10881
, UNIQUE INDEX uidx1 (f_int2,f_int1)
10883
PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
10884
(PARTITION part1 VALUES LESS THAN (0)
10885
(SUBPARTITION subpart11, SUBPARTITION subpart12),
10886
PARTITION part2 VALUES LESS THAN (5)
10887
(SUBPARTITION subpart21, SUBPARTITION subpart22),
10888
PARTITION part3 VALUES LESS THAN (10)
10889
(SUBPARTITION subpart31, SUBPARTITION subpart32),
10890
PARTITION part4 VALUES LESS THAN (2147483646)
10891
(SUBPARTITION subpart41, SUBPARTITION subpart42));
10892
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
10893
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
10894
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
10895
ALTER TABLE t1 MODIFY f_int2 BIGINT;
10896
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
10897
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
10898
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
10899
# Start usability test (inc/partition_check.inc)
10901
SHOW CREATE TABLE t1;
10903
t1 CREATE TABLE `t1` (
10904
`f_int1` int(11) DEFAULT NULL,
10905
`f_int2` bigint(20) DEFAULT NULL,
10906
`f_char1` char(20) DEFAULT NULL,
10907
`f_char2` char(20) DEFAULT NULL,
10908
`f_charbig` varchar(1000) DEFAULT NULL,
10909
UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
10910
) ENGINE=MyISAM DEFAULT CHARSET=latin1
10911
/*!50100 PARTITION BY RANGE (f_int1)
10912
SUBPARTITION BY KEY (f_int1)
10913
(PARTITION part1 VALUES LESS THAN (0)
10914
(SUBPARTITION subpart11 ENGINE = MyISAM,
10915
SUBPARTITION subpart12 ENGINE = MyISAM),
10916
PARTITION part2 VALUES LESS THAN (5)
10917
(SUBPARTITION subpart21 ENGINE = MyISAM,
10918
SUBPARTITION subpart22 ENGINE = MyISAM),
10919
PARTITION part3 VALUES LESS THAN (10)
10920
(SUBPARTITION subpart31 ENGINE = MyISAM,
10921
SUBPARTITION subpart32 ENGINE = MyISAM),
10922
PARTITION part4 VALUES LESS THAN (2147483646)
10923
(SUBPARTITION subpart41 ENGINE = MyISAM,
10924
SUBPARTITION subpart42 ENGINE = MyISAM)) */
10927
t1#P#part1#SP#subpart11.MYD
10928
t1#P#part1#SP#subpart11.MYI
10929
t1#P#part1#SP#subpart12.MYD
10930
t1#P#part1#SP#subpart12.MYI
10931
t1#P#part2#SP#subpart21.MYD
10932
t1#P#part2#SP#subpart21.MYI
10933
t1#P#part2#SP#subpart22.MYD
10934
t1#P#part2#SP#subpart22.MYI
10935
t1#P#part3#SP#subpart31.MYD
10936
t1#P#part3#SP#subpart31.MYI
10937
t1#P#part3#SP#subpart32.MYD
10938
t1#P#part3#SP#subpart32.MYI
10939
t1#P#part4#SP#subpart41.MYD
10940
t1#P#part4#SP#subpart41.MYI
10941
t1#P#part4#SP#subpart42.MYD
10942
t1#P#part4#SP#subpart42.MYI
10946
# check prerequisites-1 success: 1
10947
# check COUNT(*) success: 1
10948
# check MIN/MAX(f_int1) success: 1
10949
# check MIN/MAX(f_int2) success: 1
10950
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10951
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
10952
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
10953
WHERE f_int1 IN (2,3);
10954
ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
10955
# check prerequisites-3 success: 1
10956
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
10957
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10958
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
10959
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
10960
WHERE f_int1 IN (2,3);
10961
DELETE FROM t1 WHERE f_charbig = 'delete me';
10962
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10963
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
10964
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
10965
WHERE f_int1 IN (2,3);
10966
DELETE FROM t1 WHERE f_charbig = 'delete me';
10967
# check read via f_int1 success: 1
10968
# check read via f_int2 success: 1
10970
# check multiple-1 success: 1
10971
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
10973
# check multiple-2 success: 1
10974
INSERT INTO t1 SELECT * FROM t0_template
10975
WHERE MOD(f_int1,3) = 0;
10977
# check multiple-3 success: 1
10978
UPDATE t1 SET f_int1 = f_int1 + @max_row
10979
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
10980
AND @max_row_div2 + @max_row_div4;
10982
# check multiple-4 success: 1
10984
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
10985
AND @max_row_div2 + @max_row_div4 + @max_row;
10987
# check multiple-5 success: 1
10988
SELECT COUNT(*) INTO @try_count FROM t0_template
10989
WHERE MOD(f_int1,3) = 0
10990
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
10991
SELECT COUNT(*) INTO @clash_count
10992
FROM t1 INNER JOIN t0_template USING(f_int1)
10993
WHERE MOD(f_int1,3) = 0
10994
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
10995
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
10997
SET f_int1 = @cur_value , f_int2 = @cur_value,
10998
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
10999
f_charbig = '#SINGLE#';
11001
# check single-1 success: 1
11002
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
11004
SET f_int1 = @cur_value , f_int2 = @cur_value,
11005
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
11006
f_charbig = '#SINGLE#';
11008
# check single-2 success: 1
11009
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
11010
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
11011
UPDATE t1 SET f_int1 = @cur_value2
11012
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
11014
# check single-3 success: 1
11015
SET @cur_value1= -1;
11016
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
11017
UPDATE t1 SET f_int1 = @cur_value1
11018
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
11020
# check single-4 success: 1
11021
SELECT MAX(f_int1) INTO @cur_value FROM t1;
11022
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
11024
# check single-5 success: 1
11025
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
11027
# check single-6 success: 1
11028
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
11029
ERROR HY000: Table has no partition for value 2147483647
11030
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
11031
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
11032
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
11033
f_charbig = '#NULL#';
11035
SET f_int1 = NULL , f_int2 = -@max_row,
11036
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
11037
f_charbig = '#NULL#';
11038
# check null success: 1
11040
# check null-1 success: 1
11041
UPDATE t1 SET f_int1 = -@max_row
11042
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
11043
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
11045
# check null-2 success: 1
11046
UPDATE t1 SET f_int1 = NULL
11047
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
11048
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
11050
# check null-3 success: 1
11052
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
11053
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
11055
# check null-4 success: 1
11057
WHERE f_int1 = 0 AND f_int2 = 0
11058
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
11059
AND f_charbig = '#NULL#';
11060
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11061
SELECT f_int1, f_int1, '', '', 'was inserted'
11062
FROM t0_template source_tab
11063
WHERE MOD(f_int1,3) = 0
11064
AND f_int1 BETWEEN @max_row_div2 AND @max_row
11066
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
11067
f_int2 = 2 * @max_row + source_tab.f_int1,
11068
f_charbig = 'was updated';
11070
# check unique-1-a success: 1
11072
# check unique-1-b success: 1
11073
DELETE FROM t1 WHERE f_charbig = 'was inserted';
11074
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11075
f_int2 = CAST(f_char1 AS SIGNED INT),
11076
f_charbig = CONCAT('===',f_char1,'===')
11077
WHERE f_charbig = 'was updated';
11078
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11079
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
11080
FROM t0_template source_tab
11081
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
11083
# check replace success: 1
11085
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
11087
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
11088
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
11089
UPDATE t1 SET f_int2 = f_int1,
11090
f_char1 = CAST(f_int1 AS CHAR),
11091
f_char2 = CAST(f_int1 AS CHAR),
11092
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
11093
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
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
Warning 1196 Some non-transactional changed tables couldn't be rolled back
11122
# check transactions-6 success: 1
11123
# INFO: Storage engine used for t1 seems to be not transactional.
11126
# check transactions-7 success: 1
11127
DELETE FROM t1 WHERE f_charbig = 'was inserted';
11129
SET @@session.sql_mode = 'traditional';
11130
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
11131
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11132
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
11133
'', '', 'was inserted' FROM t0_template
11134
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
11135
ERROR 22012: Division by 0
11138
# check transactions-8 success: 1
11139
# INFO: Storage engine used for t1 seems to be unable to revert
11140
# changes made by the failing statement.
11141
SET @@session.sql_mode = '';
11143
DELETE FROM t1 WHERE f_charbig = 'was inserted';
11145
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
11147
# check special-1 success: 1
11148
UPDATE t1 SET f_charbig = '';
11150
# check special-2 success: 1
11151
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
11152
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
11153
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
11154
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11155
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11156
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11157
'just inserted' FROM t0_template
11158
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11159
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
11161
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11162
f_charbig = 'updated by trigger'
11163
WHERE f_int1 = new.f_int1;
11165
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11166
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
11167
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11169
# check trigger-1 success: 1
11170
DROP TRIGGER trg_1;
11171
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11172
f_int2 = CAST(f_char1 AS SIGNED INT),
11173
f_charbig = 'just inserted'
11174
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11176
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11177
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11178
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11179
'just inserted' FROM t0_template
11180
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11181
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
11183
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11184
f_charbig = 'updated by trigger'
11185
WHERE f_int1 = new.f_int1;
11187
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11188
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
11189
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11191
# check trigger-2 success: 1
11192
DROP TRIGGER trg_1;
11193
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11194
f_int2 = CAST(f_char1 AS SIGNED INT),
11195
f_charbig = 'just inserted'
11196
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11198
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11199
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11200
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11201
'just inserted' FROM t0_template
11202
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11203
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
11205
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11206
f_charbig = 'updated by trigger'
11207
WHERE f_int1 = new.f_int1;
11209
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
11210
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11212
# check trigger-3 success: 1
11213
DROP TRIGGER trg_1;
11214
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11215
f_int2 = CAST(f_char1 AS SIGNED INT),
11216
f_charbig = 'just inserted'
11217
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11219
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11220
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11221
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11222
'just inserted' FROM t0_template
11223
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11224
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
11226
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11227
f_charbig = 'updated by trigger'
11228
WHERE f_int1 = - old.f_int1;
11230
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
11231
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11233
# check trigger-4 success: 1
11234
DROP TRIGGER trg_1;
11235
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11236
f_int2 = CAST(f_char1 AS SIGNED INT),
11237
f_charbig = 'just inserted'
11238
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11240
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11241
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11242
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11243
'just inserted' FROM t0_template
11244
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11245
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
11247
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11248
f_charbig = 'updated by trigger'
11249
WHERE f_int1 = new.f_int1;
11251
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
11252
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11254
# check trigger-5 success: 1
11255
DROP TRIGGER trg_1;
11256
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11257
f_int2 = CAST(f_char1 AS SIGNED INT),
11258
f_charbig = 'just inserted'
11259
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11261
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11262
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11263
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11264
'just inserted' FROM t0_template
11265
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11266
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
11268
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11269
f_charbig = 'updated by trigger'
11270
WHERE f_int1 = - old.f_int1;
11272
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
11273
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11275
# check trigger-6 success: 1
11276
DROP TRIGGER trg_1;
11277
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11278
f_int2 = CAST(f_char1 AS SIGNED INT),
11279
f_charbig = 'just inserted'
11280
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11282
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11283
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11284
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11285
'just inserted' FROM t0_template
11286
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11287
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
11289
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11290
f_charbig = 'updated by trigger'
11291
WHERE f_int1 = - old.f_int1;
11294
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11296
# check trigger-7 success: 1
11297
DROP TRIGGER trg_1;
11298
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11299
f_int2 = CAST(f_char1 AS SIGNED INT),
11300
f_charbig = 'just inserted'
11301
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11303
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11304
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11305
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11306
'just inserted' FROM t0_template
11307
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11308
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
11310
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11311
f_charbig = 'updated by trigger'
11312
WHERE f_int1 = - old.f_int1;
11315
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11317
# check trigger-8 success: 1
11318
DROP TRIGGER trg_1;
11319
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11320
f_int2 = CAST(f_char1 AS SIGNED INT),
11321
f_charbig = 'just inserted'
11322
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11324
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11326
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11327
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
11329
SET new.f_int1 = old.f_int1 + @max_row,
11330
new.f_int2 = old.f_int2 - @max_row,
11331
new.f_charbig = '####updated per update trigger####';
11334
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
11335
f_charbig = '####updated per update statement itself####';
11337
# check trigger-9 success: 1
11338
DROP TRIGGER trg_2;
11339
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11340
f_int2 = CAST(f_char1 AS SIGNED INT),
11341
f_charbig = CONCAT('===',f_char1,'===');
11342
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
11344
SET new.f_int1 = new.f_int1 + @max_row,
11345
new.f_int2 = new.f_int2 - @max_row,
11346
new.f_charbig = '####updated per update trigger####';
11349
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
11350
f_charbig = '####updated per update statement itself####';
11352
# check trigger-10 success: 1
11353
DROP TRIGGER trg_2;
11354
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11355
f_int2 = CAST(f_char1 AS SIGNED INT),
11356
f_charbig = CONCAT('===',f_char1,'===');
11357
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
11359
SET new.f_int1 = @my_max1 + @counter,
11360
new.f_int2 = @my_min2 - @counter,
11361
new.f_charbig = '####updated per insert trigger####';
11362
SET @counter = @counter + 1;
11365
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
11366
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11367
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
11368
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
11369
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
11371
DROP TRIGGER trg_3;
11373
# check trigger-11 success: 1
11375
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
11376
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
11377
AND f_charbig = '####updated per insert trigger####';
11378
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
11380
SET new.f_int1 = @my_max1 + @counter,
11381
new.f_int2 = @my_min2 - @counter,
11382
new.f_charbig = '####updated per insert trigger####';
11383
SET @counter = @counter + 1;
11386
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
11387
INSERT INTO t1 (f_char1, f_char2, f_charbig)
11388
SELECT CAST(f_int1 AS CHAR),
11389
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
11390
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
11392
DROP TRIGGER trg_3;
11394
# check trigger-12 success: 1
11396
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
11397
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
11398
AND f_charbig = '####updated per insert trigger####';
11400
Table Op Msg_type Msg_text
11401
test.t1 analyze status OK
11402
CHECK TABLE t1 EXTENDED;
11403
Table Op Msg_type Msg_text
11404
test.t1 check status OK
11405
CHECKSUM TABLE t1 EXTENDED;
11407
test.t1 <some_value>
11409
Table Op Msg_type Msg_text
11410
test.t1 optimize status OK
11411
# check layout success: 1
11412
REPAIR TABLE t1 EXTENDED;
11413
Table Op Msg_type Msg_text
11414
test.t1 repair status OK
11415
# check layout success: 1
11418
# check TRUNCATE success: 1
11419
# check layout success: 1
11420
# End usability test (inc/partition_check.inc)
11427
f_charbig VARCHAR(1000)
11428
, UNIQUE INDEX uidx1 (f_int2,f_int1)
11430
PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
11431
(PARTITION part1 VALUES IN (0)
11432
(SUBPARTITION sp11, SUBPARTITION sp12),
11433
PARTITION part2 VALUES IN (1)
11434
(SUBPARTITION sp21, SUBPARTITION sp22),
11435
PARTITION part3 VALUES IN (2)
11436
(SUBPARTITION sp31, SUBPARTITION sp32),
11437
PARTITION part4 VALUES IN (NULL)
11438
(SUBPARTITION sp41, SUBPARTITION sp42));
11439
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
11440
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
11441
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
11442
ALTER TABLE t1 MODIFY f_int2 BIGINT;
11443
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
11444
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
11445
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
11446
# Start usability test (inc/partition_check.inc)
11448
SHOW CREATE TABLE t1;
11450
t1 CREATE TABLE `t1` (
11451
`f_int1` int(11) DEFAULT NULL,
11452
`f_int2` bigint(20) DEFAULT NULL,
11453
`f_char1` char(20) DEFAULT NULL,
11454
`f_char2` char(20) DEFAULT NULL,
11455
`f_charbig` varchar(1000) DEFAULT NULL,
11456
UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
11457
) ENGINE=MyISAM DEFAULT CHARSET=latin1
11458
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
11459
SUBPARTITION BY HASH (f_int1 + 1)
11460
(PARTITION part1 VALUES IN (0)
11461
(SUBPARTITION sp11 ENGINE = MyISAM,
11462
SUBPARTITION sp12 ENGINE = MyISAM),
11463
PARTITION part2 VALUES IN (1)
11464
(SUBPARTITION sp21 ENGINE = MyISAM,
11465
SUBPARTITION sp22 ENGINE = MyISAM),
11466
PARTITION part3 VALUES IN (2)
11467
(SUBPARTITION sp31 ENGINE = MyISAM,
11468
SUBPARTITION sp32 ENGINE = MyISAM),
11469
PARTITION part4 VALUES IN (NULL)
11470
(SUBPARTITION sp41 ENGINE = MyISAM,
11471
SUBPARTITION sp42 ENGINE = MyISAM)) */
11474
t1#P#part1#SP#sp11.MYD
11475
t1#P#part1#SP#sp11.MYI
11476
t1#P#part1#SP#sp12.MYD
11477
t1#P#part1#SP#sp12.MYI
11478
t1#P#part2#SP#sp21.MYD
11479
t1#P#part2#SP#sp21.MYI
11480
t1#P#part2#SP#sp22.MYD
11481
t1#P#part2#SP#sp22.MYI
11482
t1#P#part3#SP#sp31.MYD
11483
t1#P#part3#SP#sp31.MYI
11484
t1#P#part3#SP#sp32.MYD
11485
t1#P#part3#SP#sp32.MYI
11486
t1#P#part4#SP#sp41.MYD
11487
t1#P#part4#SP#sp41.MYI
11488
t1#P#part4#SP#sp42.MYD
11489
t1#P#part4#SP#sp42.MYI
11493
# check prerequisites-1 success: 1
11494
# check COUNT(*) success: 1
11495
# check MIN/MAX(f_int1) success: 1
11496
# check MIN/MAX(f_int2) success: 1
11497
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11498
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
11499
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
11500
WHERE f_int1 IN (2,3);
11501
ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
11502
# check prerequisites-3 success: 1
11503
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
11504
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11505
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
11506
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
11507
WHERE f_int1 IN (2,3);
11508
DELETE FROM t1 WHERE f_charbig = 'delete me';
11509
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11510
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
11511
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
11512
WHERE f_int1 IN (2,3);
11513
DELETE FROM t1 WHERE f_charbig = 'delete me';
11514
# check read via f_int1 success: 1
11515
# check read via f_int2 success: 1
11517
# check multiple-1 success: 1
11518
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
11520
# check multiple-2 success: 1
11521
INSERT INTO t1 SELECT * FROM t0_template
11522
WHERE MOD(f_int1,3) = 0;
11524
# check multiple-3 success: 1
11525
UPDATE t1 SET f_int1 = f_int1 + @max_row
11526
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
11527
AND @max_row_div2 + @max_row_div4;
11529
# check multiple-4 success: 1
11531
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
11532
AND @max_row_div2 + @max_row_div4 + @max_row;
11534
# check multiple-5 success: 1
11535
SELECT COUNT(*) INTO @try_count FROM t0_template
11536
WHERE MOD(f_int1,3) = 0
11537
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
11538
SELECT COUNT(*) INTO @clash_count
11539
FROM t1 INNER JOIN t0_template USING(f_int1)
11540
WHERE MOD(f_int1,3) = 0
11541
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
11542
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
11544
SET f_int1 = @cur_value , f_int2 = @cur_value,
11545
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
11546
f_charbig = '#SINGLE#';
11548
# check single-1 success: 1
11549
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
11551
SET f_int1 = @cur_value , f_int2 = @cur_value,
11552
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
11553
f_charbig = '#SINGLE#';
11555
# check single-2 success: 1
11556
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
11557
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
11558
UPDATE t1 SET f_int1 = @cur_value2
11559
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
11561
# check single-3 success: 1
11562
SET @cur_value1= -1;
11563
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
11564
UPDATE t1 SET f_int1 = @cur_value1
11565
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
11567
# check single-4 success: 1
11568
SELECT MAX(f_int1) INTO @cur_value FROM t1;
11569
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
11571
# check single-5 success: 1
11572
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
11574
# check single-6 success: 1
11575
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
11577
# check single-7 success: 1
11578
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
11579
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
11580
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
11581
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
11582
f_charbig = '#NULL#';
11584
SET f_int1 = NULL , f_int2 = -@max_row,
11585
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
11586
f_charbig = '#NULL#';
11587
# check null success: 1
11589
# check null-1 success: 1
11590
UPDATE t1 SET f_int1 = -@max_row
11591
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
11592
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
11594
# check null-2 success: 1
11595
UPDATE t1 SET f_int1 = NULL
11596
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
11597
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
11599
# check null-3 success: 1
11601
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
11602
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
11604
# check null-4 success: 1
11606
WHERE f_int1 = 0 AND f_int2 = 0
11607
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
11608
AND f_charbig = '#NULL#';
11609
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11610
SELECT f_int1, f_int1, '', '', 'was inserted'
11611
FROM t0_template source_tab
11612
WHERE MOD(f_int1,3) = 0
11613
AND f_int1 BETWEEN @max_row_div2 AND @max_row
11615
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
11616
f_int2 = 2 * @max_row + source_tab.f_int1,
11617
f_charbig = 'was updated';
11619
# check unique-1-a success: 1
11621
# check unique-1-b success: 1
11622
DELETE FROM t1 WHERE f_charbig = 'was inserted';
11623
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11624
f_int2 = CAST(f_char1 AS SIGNED INT),
11625
f_charbig = CONCAT('===',f_char1,'===')
11626
WHERE f_charbig = 'was updated';
11627
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11628
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
11629
FROM t0_template source_tab
11630
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
11632
# check replace success: 1
11634
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
11636
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
11637
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
11638
UPDATE t1 SET f_int2 = f_int1,
11639
f_char1 = CAST(f_int1 AS CHAR),
11640
f_char2 = CAST(f_int1 AS CHAR),
11641
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
11642
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
11644
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11645
SELECT f_int1, f_int1, '', '', 'was inserted'
11646
FROM t0_template source_tab
11647
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
11649
# check transactions-1 success: 1
11652
# check transactions-2 success: 1
11655
# check transactions-3 success: 1
11656
DELETE FROM t1 WHERE f_charbig = 'was inserted';
11660
# check transactions-4 success: 1
11661
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11662
SELECT f_int1, f_int1, '', '', 'was inserted'
11663
FROM t0_template source_tab
11664
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
11666
# check transactions-5 success: 1
11669
Warning 1196 Some non-transactional changed tables couldn't be rolled back
11671
# check transactions-6 success: 1
11672
# INFO: Storage engine used for t1 seems to be not transactional.
11675
# check transactions-7 success: 1
11676
DELETE FROM t1 WHERE f_charbig = 'was inserted';
11678
SET @@session.sql_mode = 'traditional';
11679
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
11680
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11681
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
11682
'', '', 'was inserted' FROM t0_template
11683
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
11684
ERROR 22012: Division by 0
11687
# check transactions-8 success: 1
11688
# INFO: Storage engine used for t1 seems to be unable to revert
11689
# changes made by the failing statement.
11690
SET @@session.sql_mode = '';
11692
DELETE FROM t1 WHERE f_charbig = 'was inserted';
11694
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
11696
# check special-1 success: 1
11697
UPDATE t1 SET f_charbig = '';
11699
# check special-2 success: 1
11700
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
11701
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
11702
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
11703
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11704
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11705
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11706
'just inserted' FROM t0_template
11707
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11708
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
11710
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11711
f_charbig = 'updated by trigger'
11712
WHERE f_int1 = new.f_int1;
11714
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11715
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
11716
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11718
# check trigger-1 success: 1
11719
DROP TRIGGER trg_1;
11720
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11721
f_int2 = CAST(f_char1 AS SIGNED INT),
11722
f_charbig = 'just inserted'
11723
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11725
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11726
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11727
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11728
'just inserted' FROM t0_template
11729
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11730
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
11732
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11733
f_charbig = 'updated by trigger'
11734
WHERE f_int1 = new.f_int1;
11736
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11737
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
11738
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11740
# check trigger-2 success: 1
11741
DROP TRIGGER trg_1;
11742
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11743
f_int2 = CAST(f_char1 AS SIGNED INT),
11744
f_charbig = 'just inserted'
11745
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11747
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11748
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11749
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11750
'just inserted' FROM t0_template
11751
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11752
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
11754
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11755
f_charbig = 'updated by trigger'
11756
WHERE f_int1 = new.f_int1;
11758
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
11759
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11761
# check trigger-3 success: 1
11762
DROP TRIGGER trg_1;
11763
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11764
f_int2 = CAST(f_char1 AS SIGNED INT),
11765
f_charbig = 'just inserted'
11766
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11768
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11769
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11770
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11771
'just inserted' FROM t0_template
11772
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11773
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
11775
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11776
f_charbig = 'updated by trigger'
11777
WHERE f_int1 = - old.f_int1;
11779
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
11780
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11782
# check trigger-4 success: 1
11783
DROP TRIGGER trg_1;
11784
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11785
f_int2 = CAST(f_char1 AS SIGNED INT),
11786
f_charbig = 'just inserted'
11787
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11789
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11790
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11791
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11792
'just inserted' FROM t0_template
11793
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11794
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
11796
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11797
f_charbig = 'updated by trigger'
11798
WHERE f_int1 = new.f_int1;
11800
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
11801
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11803
# check trigger-5 success: 1
11804
DROP TRIGGER trg_1;
11805
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11806
f_int2 = CAST(f_char1 AS SIGNED INT),
11807
f_charbig = 'just inserted'
11808
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11810
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11811
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11812
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11813
'just inserted' FROM t0_template
11814
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11815
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
11817
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11818
f_charbig = 'updated by trigger'
11819
WHERE f_int1 = - old.f_int1;
11821
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
11822
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11824
# check trigger-6 success: 1
11825
DROP TRIGGER trg_1;
11826
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11827
f_int2 = CAST(f_char1 AS SIGNED INT),
11828
f_charbig = 'just inserted'
11829
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11831
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11832
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11833
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11834
'just inserted' FROM t0_template
11835
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11836
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
11838
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11839
f_charbig = 'updated by trigger'
11840
WHERE f_int1 = - old.f_int1;
11843
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11845
# check trigger-7 success: 1
11846
DROP TRIGGER trg_1;
11847
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11848
f_int2 = CAST(f_char1 AS SIGNED INT),
11849
f_charbig = 'just inserted'
11850
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11852
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11853
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11854
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11855
'just inserted' FROM t0_template
11856
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11857
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
11859
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11860
f_charbig = 'updated by trigger'
11861
WHERE f_int1 = - old.f_int1;
11864
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11866
# check trigger-8 success: 1
11867
DROP TRIGGER trg_1;
11868
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11869
f_int2 = CAST(f_char1 AS SIGNED INT),
11870
f_charbig = 'just inserted'
11871
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11873
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11875
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11876
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
11878
SET new.f_int1 = old.f_int1 + @max_row,
11879
new.f_int2 = old.f_int2 - @max_row,
11880
new.f_charbig = '####updated per update trigger####';
11883
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
11884
f_charbig = '####updated per update statement itself####';
11886
# check trigger-9 success: 1
11887
DROP TRIGGER trg_2;
11888
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11889
f_int2 = CAST(f_char1 AS SIGNED INT),
11890
f_charbig = CONCAT('===',f_char1,'===');
11891
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
11893
SET new.f_int1 = new.f_int1 + @max_row,
11894
new.f_int2 = new.f_int2 - @max_row,
11895
new.f_charbig = '####updated per update trigger####';
11898
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
11899
f_charbig = '####updated per update statement itself####';
11901
# check trigger-10 success: 1
11902
DROP TRIGGER trg_2;
11903
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11904
f_int2 = CAST(f_char1 AS SIGNED INT),
11905
f_charbig = CONCAT('===',f_char1,'===');
11906
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
11908
SET new.f_int1 = @my_max1 + @counter,
11909
new.f_int2 = @my_min2 - @counter,
11910
new.f_charbig = '####updated per insert trigger####';
11911
SET @counter = @counter + 1;
11914
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
11915
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11916
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
11917
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
11918
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
11920
DROP TRIGGER trg_3;
11922
# check trigger-11 success: 1
11924
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
11925
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
11926
AND f_charbig = '####updated per insert trigger####';
11927
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
11929
SET new.f_int1 = @my_max1 + @counter,
11930
new.f_int2 = @my_min2 - @counter,
11931
new.f_charbig = '####updated per insert trigger####';
11932
SET @counter = @counter + 1;
11935
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
11936
INSERT INTO t1 (f_char1, f_char2, f_charbig)
11937
SELECT CAST(f_int1 AS CHAR),
11938
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
11939
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
11941
DROP TRIGGER trg_3;
11943
# check trigger-12 success: 1
11945
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
11946
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
11947
AND f_charbig = '####updated per insert trigger####';
11949
Table Op Msg_type Msg_text
11950
test.t1 analyze status OK
11951
CHECK TABLE t1 EXTENDED;
11952
Table Op Msg_type Msg_text
11953
test.t1 check status OK
11954
CHECKSUM TABLE t1 EXTENDED;
11956
test.t1 <some_value>
11958
Table Op Msg_type Msg_text
11959
test.t1 optimize status OK
11960
# check layout success: 1
11961
REPAIR TABLE t1 EXTENDED;
11962
Table Op Msg_type Msg_text
11963
test.t1 repair status OK
11964
# check layout success: 1
11967
# check TRUNCATE success: 1
11968
# check layout success: 1
11969
# End usability test (inc/partition_check.inc)
11976
f_charbig VARCHAR(1000)
11977
, UNIQUE INDEX uidx1 (f_int2,f_int1)
11979
PARTITION BY LIST(ABS(MOD(f_int1,2)))
11980
SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
11981
(PARTITION part1 VALUES IN (0),
11982
PARTITION part2 VALUES IN (1),
11983
PARTITION part3 VALUES IN (NULL));
11984
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
11985
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
11986
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
11987
ALTER TABLE t1 MODIFY f_int2 BIGINT;
11988
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
11989
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
11990
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
11991
# Start usability test (inc/partition_check.inc)
11993
SHOW CREATE TABLE t1;
11995
t1 CREATE TABLE `t1` (
11996
`f_int1` int(11) DEFAULT NULL,
11997
`f_int2` bigint(20) DEFAULT NULL,
11998
`f_char1` char(20) DEFAULT NULL,
11999
`f_char2` char(20) DEFAULT NULL,
12000
`f_charbig` varchar(1000) DEFAULT NULL,
12001
UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
12002
) ENGINE=MyISAM DEFAULT CHARSET=latin1
12003
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
12004
SUBPARTITION BY KEY (f_int1)
12006
(PARTITION part1 VALUES IN (0) ENGINE = MyISAM,
12007
PARTITION part2 VALUES IN (1) ENGINE = MyISAM,
12008
PARTITION part3 VALUES IN (NULL) ENGINE = MyISAM) */
12011
t1#P#part1#SP#part1sp0.MYD
12012
t1#P#part1#SP#part1sp0.MYI
12013
t1#P#part1#SP#part1sp1.MYD
12014
t1#P#part1#SP#part1sp1.MYI
12015
t1#P#part1#SP#part1sp2.MYD
12016
t1#P#part1#SP#part1sp2.MYI
12017
t1#P#part2#SP#part2sp0.MYD
12018
t1#P#part2#SP#part2sp0.MYI
12019
t1#P#part2#SP#part2sp1.MYD
12020
t1#P#part2#SP#part2sp1.MYI
12021
t1#P#part2#SP#part2sp2.MYD
12022
t1#P#part2#SP#part2sp2.MYI
12023
t1#P#part3#SP#part3sp0.MYD
12024
t1#P#part3#SP#part3sp0.MYI
12025
t1#P#part3#SP#part3sp1.MYD
12026
t1#P#part3#SP#part3sp1.MYI
12027
t1#P#part3#SP#part3sp2.MYD
12028
t1#P#part3#SP#part3sp2.MYI
12032
# check prerequisites-1 success: 1
12033
# check COUNT(*) success: 1
12034
# check MIN/MAX(f_int1) success: 1
12035
# check MIN/MAX(f_int2) success: 1
12036
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12037
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
12038
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
12039
WHERE f_int1 IN (2,3);
12040
ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
12041
# check prerequisites-3 success: 1
12042
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
12043
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12044
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
12045
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
12046
WHERE f_int1 IN (2,3);
12047
DELETE FROM t1 WHERE f_charbig = 'delete me';
12048
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12049
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
12050
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
12051
WHERE f_int1 IN (2,3);
12052
DELETE FROM t1 WHERE f_charbig = 'delete me';
12053
# check read via f_int1 success: 1
12054
# check read via f_int2 success: 1
12056
# check multiple-1 success: 1
12057
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
12059
# check multiple-2 success: 1
12060
INSERT INTO t1 SELECT * FROM t0_template
12061
WHERE MOD(f_int1,3) = 0;
12063
# check multiple-3 success: 1
12064
UPDATE t1 SET f_int1 = f_int1 + @max_row
12065
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
12066
AND @max_row_div2 + @max_row_div4;
12068
# check multiple-4 success: 1
12070
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
12071
AND @max_row_div2 + @max_row_div4 + @max_row;
12073
# check multiple-5 success: 1
12074
SELECT COUNT(*) INTO @try_count FROM t0_template
12075
WHERE MOD(f_int1,3) = 0
12076
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
12077
SELECT COUNT(*) INTO @clash_count
12078
FROM t1 INNER JOIN t0_template USING(f_int1)
12079
WHERE MOD(f_int1,3) = 0
12080
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
12081
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
12083
SET f_int1 = @cur_value , f_int2 = @cur_value,
12084
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
12085
f_charbig = '#SINGLE#';
12087
# check single-1 success: 1
12088
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
12090
SET f_int1 = @cur_value , f_int2 = @cur_value,
12091
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
12092
f_charbig = '#SINGLE#';
12094
# check single-2 success: 1
12095
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
12096
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
12097
UPDATE t1 SET f_int1 = @cur_value2
12098
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
12100
# check single-3 success: 1
12101
SET @cur_value1= -1;
12102
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
12103
UPDATE t1 SET f_int1 = @cur_value1
12104
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
12106
# check single-4 success: 1
12107
SELECT MAX(f_int1) INTO @cur_value FROM t1;
12108
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
12110
# check single-5 success: 1
12111
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
12113
# check single-6 success: 1
12114
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
12116
# check single-7 success: 1
12117
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
12118
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
12119
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
12120
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
12121
f_charbig = '#NULL#';
12123
SET f_int1 = NULL , f_int2 = -@max_row,
12124
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
12125
f_charbig = '#NULL#';
12126
# check null success: 1
12128
# check null-1 success: 1
12129
UPDATE t1 SET f_int1 = -@max_row
12130
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
12131
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
12133
# check null-2 success: 1
12134
UPDATE t1 SET f_int1 = NULL
12135
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
12136
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
12138
# check null-3 success: 1
12140
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
12141
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
12143
# check null-4 success: 1
12145
WHERE f_int1 = 0 AND f_int2 = 0
12146
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
12147
AND f_charbig = '#NULL#';
12148
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12149
SELECT f_int1, f_int1, '', '', 'was inserted'
12150
FROM t0_template source_tab
12151
WHERE MOD(f_int1,3) = 0
12152
AND f_int1 BETWEEN @max_row_div2 AND @max_row
12154
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
12155
f_int2 = 2 * @max_row + source_tab.f_int1,
12156
f_charbig = 'was updated';
12158
# check unique-1-a success: 1
12160
# check unique-1-b success: 1
12161
DELETE FROM t1 WHERE f_charbig = 'was inserted';
12162
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12163
f_int2 = CAST(f_char1 AS SIGNED INT),
12164
f_charbig = CONCAT('===',f_char1,'===')
12165
WHERE f_charbig = 'was updated';
12166
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12167
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
12168
FROM t0_template source_tab
12169
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
12171
# check replace success: 1
12173
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
12175
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
12176
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
12177
UPDATE t1 SET f_int2 = f_int1,
12178
f_char1 = CAST(f_int1 AS CHAR),
12179
f_char2 = CAST(f_int1 AS CHAR),
12180
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
12181
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
12183
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12184
SELECT f_int1, f_int1, '', '', 'was inserted'
12185
FROM t0_template source_tab
12186
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
12188
# check transactions-1 success: 1
12191
# check transactions-2 success: 1
12194
# check transactions-3 success: 1
12195
DELETE FROM t1 WHERE f_charbig = 'was inserted';
12199
# check transactions-4 success: 1
12200
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12201
SELECT f_int1, f_int1, '', '', 'was inserted'
12202
FROM t0_template source_tab
12203
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
12205
# check transactions-5 success: 1
12208
Warning 1196 Some non-transactional changed tables couldn't be rolled back
12210
# check transactions-6 success: 1
12211
# INFO: Storage engine used for t1 seems to be not transactional.
12214
# check transactions-7 success: 1
12215
DELETE FROM t1 WHERE f_charbig = 'was inserted';
12217
SET @@session.sql_mode = 'traditional';
12218
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
12219
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12220
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
12221
'', '', 'was inserted' FROM t0_template
12222
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
12223
ERROR 22012: Division by 0
12226
# check transactions-8 success: 1
12227
# INFO: Storage engine used for t1 seems to be unable to revert
12228
# changes made by the failing statement.
12229
SET @@session.sql_mode = '';
12231
DELETE FROM t1 WHERE f_charbig = 'was inserted';
12233
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
12235
# check special-1 success: 1
12236
UPDATE t1 SET f_charbig = '';
12238
# check special-2 success: 1
12239
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
12240
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
12241
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
12242
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12243
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12244
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12245
'just inserted' FROM t0_template
12246
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12247
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
12249
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12250
f_charbig = 'updated by trigger'
12251
WHERE f_int1 = new.f_int1;
12253
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12254
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
12255
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12257
# check trigger-1 success: 1
12258
DROP TRIGGER trg_1;
12259
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12260
f_int2 = CAST(f_char1 AS SIGNED INT),
12261
f_charbig = 'just inserted'
12262
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12264
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12265
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12266
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12267
'just inserted' FROM t0_template
12268
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12269
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
12271
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12272
f_charbig = 'updated by trigger'
12273
WHERE f_int1 = new.f_int1;
12275
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12276
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
12277
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12279
# check trigger-2 success: 1
12280
DROP TRIGGER trg_1;
12281
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12282
f_int2 = CAST(f_char1 AS SIGNED INT),
12283
f_charbig = 'just inserted'
12284
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12286
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12287
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12288
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12289
'just inserted' FROM t0_template
12290
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12291
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
12293
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12294
f_charbig = 'updated by trigger'
12295
WHERE f_int1 = new.f_int1;
12297
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
12298
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12300
# check trigger-3 success: 1
12301
DROP TRIGGER trg_1;
12302
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12303
f_int2 = CAST(f_char1 AS SIGNED INT),
12304
f_charbig = 'just inserted'
12305
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12307
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12308
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12309
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12310
'just inserted' FROM t0_template
12311
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12312
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
12314
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12315
f_charbig = 'updated by trigger'
12316
WHERE f_int1 = - old.f_int1;
12318
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
12319
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12321
# check trigger-4 success: 1
12322
DROP TRIGGER trg_1;
12323
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12324
f_int2 = CAST(f_char1 AS SIGNED INT),
12325
f_charbig = 'just inserted'
12326
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12328
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12329
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12330
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12331
'just inserted' FROM t0_template
12332
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12333
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
12335
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12336
f_charbig = 'updated by trigger'
12337
WHERE f_int1 = new.f_int1;
12339
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
12340
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12342
# check trigger-5 success: 1
12343
DROP TRIGGER trg_1;
12344
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12345
f_int2 = CAST(f_char1 AS SIGNED INT),
12346
f_charbig = 'just inserted'
12347
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12349
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12350
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12351
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12352
'just inserted' FROM t0_template
12353
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12354
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
12356
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12357
f_charbig = 'updated by trigger'
12358
WHERE f_int1 = - old.f_int1;
12360
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
12361
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12363
# check trigger-6 success: 1
12364
DROP TRIGGER trg_1;
12365
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12366
f_int2 = CAST(f_char1 AS SIGNED INT),
12367
f_charbig = 'just inserted'
12368
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12370
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12371
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12372
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12373
'just inserted' FROM t0_template
12374
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12375
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
12377
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12378
f_charbig = 'updated by trigger'
12379
WHERE f_int1 = - old.f_int1;
12382
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12384
# check trigger-7 success: 1
12385
DROP TRIGGER trg_1;
12386
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12387
f_int2 = CAST(f_char1 AS SIGNED INT),
12388
f_charbig = 'just inserted'
12389
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12391
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12392
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12393
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12394
'just inserted' FROM t0_template
12395
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12396
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
12398
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12399
f_charbig = 'updated by trigger'
12400
WHERE f_int1 = - old.f_int1;
12403
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12405
# check trigger-8 success: 1
12406
DROP TRIGGER trg_1;
12407
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12408
f_int2 = CAST(f_char1 AS SIGNED INT),
12409
f_charbig = 'just inserted'
12410
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12412
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12414
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12415
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
12417
SET new.f_int1 = old.f_int1 + @max_row,
12418
new.f_int2 = old.f_int2 - @max_row,
12419
new.f_charbig = '####updated per update trigger####';
12422
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
12423
f_charbig = '####updated per update statement itself####';
12425
# check trigger-9 success: 1
12426
DROP TRIGGER trg_2;
12427
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12428
f_int2 = CAST(f_char1 AS SIGNED INT),
12429
f_charbig = CONCAT('===',f_char1,'===');
12430
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
12432
SET new.f_int1 = new.f_int1 + @max_row,
12433
new.f_int2 = new.f_int2 - @max_row,
12434
new.f_charbig = '####updated per update trigger####';
12437
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
12438
f_charbig = '####updated per update statement itself####';
12440
# check trigger-10 success: 1
12441
DROP TRIGGER trg_2;
12442
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12443
f_int2 = CAST(f_char1 AS SIGNED INT),
12444
f_charbig = CONCAT('===',f_char1,'===');
12445
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
12447
SET new.f_int1 = @my_max1 + @counter,
12448
new.f_int2 = @my_min2 - @counter,
12449
new.f_charbig = '####updated per insert trigger####';
12450
SET @counter = @counter + 1;
12453
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
12454
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12455
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
12456
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
12457
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
12459
DROP TRIGGER trg_3;
12461
# check trigger-11 success: 1
12463
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
12464
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
12465
AND f_charbig = '####updated per insert trigger####';
12466
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
12468
SET new.f_int1 = @my_max1 + @counter,
12469
new.f_int2 = @my_min2 - @counter,
12470
new.f_charbig = '####updated per insert trigger####';
12471
SET @counter = @counter + 1;
12474
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
12475
INSERT INTO t1 (f_char1, f_char2, f_charbig)
12476
SELECT CAST(f_int1 AS CHAR),
12477
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
12478
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
12480
DROP TRIGGER trg_3;
12482
# check trigger-12 success: 1
12484
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
12485
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
12486
AND f_charbig = '####updated per insert trigger####';
12488
Table Op Msg_type Msg_text
12489
test.t1 analyze status OK
12490
CHECK TABLE t1 EXTENDED;
12491
Table Op Msg_type Msg_text
12492
test.t1 check status OK
12493
CHECKSUM TABLE t1 EXTENDED;
12495
test.t1 <some_value>
12497
Table Op Msg_type Msg_text
12498
test.t1 optimize status OK
12499
# check layout success: 1
12500
REPAIR TABLE t1 EXTENDED;
12501
Table Op Msg_type Msg_text
12502
test.t1 repair status OK
12503
# check layout success: 1
12506
# check TRUNCATE success: 1
12507
# check layout success: 1
12508
# End usability test (inc/partition_check.inc)
12510
#------------------------------------------------------------------------
12511
# 1.3 ALTER column f_int1 and f_int2
12512
# f_int1 or (f_int1 and f_int2) used in partitioning function
12513
#------------------------------------------------------------------------
12514
# 1.3.1 no PRIMARY KEY or UNIQUE INDEX exists
12515
DROP TABLE IF EXISTS t1;
12521
f_charbig VARCHAR(1000)
12524
PARTITION BY HASH(f_int1) PARTITIONS 2;
12525
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
12526
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
12527
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
12528
ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
12529
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
12530
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
12531
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
12532
# Start usability test (inc/partition_check.inc)
12534
SHOW CREATE TABLE t1;
12536
t1 CREATE TABLE `t1` (
12537
`f_int1` bigint(20) DEFAULT NULL,
12538
`f_int2` bigint(20) DEFAULT NULL,
12539
`f_char1` char(20) DEFAULT NULL,
12540
`f_char2` char(20) DEFAULT NULL,
12541
`f_charbig` varchar(1000) DEFAULT NULL
12542
) ENGINE=MyISAM DEFAULT CHARSET=latin1
12543
/*!50100 PARTITION BY HASH (f_int1)
12554
# check prerequisites-1 success: 1
12555
# check COUNT(*) success: 1
12556
# check MIN/MAX(f_int1) success: 1
12557
# check MIN/MAX(f_int2) success: 1
12558
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12559
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
12560
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
12561
WHERE f_int1 IN (2,3);
12562
# check prerequisites-3 success: 1
12563
DELETE FROM t1 WHERE f_charbig = 'delete me';
12564
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
12565
# check read via f_int1 success: 1
12566
# check read via f_int2 success: 1
12568
# check multiple-1 success: 1
12569
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
12571
# check multiple-2 success: 1
12572
INSERT INTO t1 SELECT * FROM t0_template
12573
WHERE MOD(f_int1,3) = 0;
12575
# check multiple-3 success: 1
12576
UPDATE t1 SET f_int1 = f_int1 + @max_row
12577
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
12578
AND @max_row_div2 + @max_row_div4;
12580
# check multiple-4 success: 1
12582
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
12583
AND @max_row_div2 + @max_row_div4 + @max_row;
12585
# check multiple-5 success: 1
12586
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
12588
SET f_int1 = @cur_value , f_int2 = @cur_value,
12589
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
12590
f_charbig = '#SINGLE#';
12592
# check single-1 success: 1
12593
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
12595
SET f_int1 = @cur_value , f_int2 = @cur_value,
12596
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
12597
f_charbig = '#SINGLE#';
12599
# check single-2 success: 1
12600
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
12601
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
12602
UPDATE t1 SET f_int1 = @cur_value2
12603
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
12605
# check single-3 success: 1
12606
SET @cur_value1= -1;
12607
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
12608
UPDATE t1 SET f_int1 = @cur_value1
12609
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
12611
# check single-4 success: 1
12612
SELECT MAX(f_int1) INTO @cur_value FROM t1;
12613
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
12615
# check single-5 success: 1
12616
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
12618
# check single-6 success: 1
12619
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
12621
# check single-7 success: 1
12622
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
12623
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
12624
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
12625
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
12626
f_charbig = '#NULL#';
12628
SET f_int1 = NULL , f_int2 = -@max_row,
12629
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
12630
f_charbig = '#NULL#';
12631
# check null success: 1
12633
# check null-1 success: 1
12634
UPDATE t1 SET f_int1 = -@max_row
12635
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
12636
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
12638
# check null-2 success: 1
12639
UPDATE t1 SET f_int1 = NULL
12640
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
12641
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
12643
# check null-3 success: 1
12645
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
12646
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
12648
# check null-4 success: 1
12650
WHERE f_int1 = 0 AND f_int2 = 0
12651
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
12652
AND f_charbig = '#NULL#';
12654
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12655
SELECT f_int1, f_int1, '', '', 'was inserted'
12656
FROM t0_template source_tab
12657
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
12659
# check transactions-1 success: 1
12662
# check transactions-2 success: 1
12665
# check transactions-3 success: 1
12666
DELETE FROM t1 WHERE f_charbig = 'was inserted';
12670
# check transactions-4 success: 1
12671
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12672
SELECT f_int1, f_int1, '', '', 'was inserted'
12673
FROM t0_template source_tab
12674
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
12676
# check transactions-5 success: 1
12679
Warning 1196 Some non-transactional changed tables couldn't be rolled back
12681
# check transactions-6 success: 1
12682
# INFO: Storage engine used for t1 seems to be not transactional.
12685
# check transactions-7 success: 1
12686
DELETE FROM t1 WHERE f_charbig = 'was inserted';
12688
SET @@session.sql_mode = 'traditional';
12689
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
12690
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12691
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
12692
'', '', 'was inserted' FROM t0_template
12693
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
12694
ERROR 22012: Division by 0
12697
# check transactions-8 success: 1
12698
# INFO: Storage engine used for t1 seems to be unable to revert
12699
# changes made by the failing statement.
12700
SET @@session.sql_mode = '';
12702
DELETE FROM t1 WHERE f_charbig = 'was inserted';
12704
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
12706
# check special-1 success: 1
12707
UPDATE t1 SET f_charbig = '';
12709
# check special-2 success: 1
12710
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
12711
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
12712
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
12713
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12714
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12715
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12716
'just inserted' FROM t0_template
12717
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12718
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
12720
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12721
f_charbig = 'updated by trigger'
12722
WHERE f_int1 = new.f_int1;
12724
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12725
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
12726
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12728
# check trigger-1 success: 1
12729
DROP TRIGGER trg_1;
12730
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12731
f_int2 = CAST(f_char1 AS SIGNED INT),
12732
f_charbig = 'just inserted'
12733
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12735
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12736
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12737
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12738
'just inserted' FROM t0_template
12739
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12740
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
12742
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12743
f_charbig = 'updated by trigger'
12744
WHERE f_int1 = new.f_int1;
12746
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12747
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
12748
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12750
# check trigger-2 success: 1
12751
DROP TRIGGER trg_1;
12752
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12753
f_int2 = CAST(f_char1 AS SIGNED INT),
12754
f_charbig = 'just inserted'
12755
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12757
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12758
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12759
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12760
'just inserted' FROM t0_template
12761
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12762
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
12764
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12765
f_charbig = 'updated by trigger'
12766
WHERE f_int1 = new.f_int1;
12768
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
12769
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12771
# check trigger-3 success: 1
12772
DROP TRIGGER trg_1;
12773
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12774
f_int2 = CAST(f_char1 AS SIGNED INT),
12775
f_charbig = 'just inserted'
12776
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12778
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12779
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12780
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12781
'just inserted' FROM t0_template
12782
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12783
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
12785
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12786
f_charbig = 'updated by trigger'
12787
WHERE f_int1 = - old.f_int1;
12789
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
12790
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12792
# check trigger-4 success: 1
12793
DROP TRIGGER trg_1;
12794
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12795
f_int2 = CAST(f_char1 AS SIGNED INT),
12796
f_charbig = 'just inserted'
12797
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12799
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12800
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12801
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12802
'just inserted' FROM t0_template
12803
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12804
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
12806
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12807
f_charbig = 'updated by trigger'
12808
WHERE f_int1 = new.f_int1;
12810
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
12811
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12813
# check trigger-5 success: 1
12814
DROP TRIGGER trg_1;
12815
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12816
f_int2 = CAST(f_char1 AS SIGNED INT),
12817
f_charbig = 'just inserted'
12818
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12820
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12821
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12822
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12823
'just inserted' FROM t0_template
12824
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12825
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
12827
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12828
f_charbig = 'updated by trigger'
12829
WHERE f_int1 = - old.f_int1;
12831
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
12832
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12834
# check trigger-6 success: 1
12835
DROP TRIGGER trg_1;
12836
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12837
f_int2 = CAST(f_char1 AS SIGNED INT),
12838
f_charbig = 'just inserted'
12839
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12841
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12842
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12843
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12844
'just inserted' FROM t0_template
12845
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12846
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
12848
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12849
f_charbig = 'updated by trigger'
12850
WHERE f_int1 = - old.f_int1;
12853
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12855
# check trigger-7 success: 1
12856
DROP TRIGGER trg_1;
12857
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12858
f_int2 = CAST(f_char1 AS SIGNED INT),
12859
f_charbig = 'just inserted'
12860
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12862
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12863
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12864
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12865
'just inserted' FROM t0_template
12866
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12867
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
12869
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12870
f_charbig = 'updated by trigger'
12871
WHERE f_int1 = - old.f_int1;
12874
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12876
# check trigger-8 success: 1
12877
DROP TRIGGER trg_1;
12878
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12879
f_int2 = CAST(f_char1 AS SIGNED INT),
12880
f_charbig = 'just inserted'
12881
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12883
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12885
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12886
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
12888
SET new.f_int1 = old.f_int1 + @max_row,
12889
new.f_int2 = old.f_int2 - @max_row,
12890
new.f_charbig = '####updated per update trigger####';
12893
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
12894
f_charbig = '####updated per update statement itself####';
12896
# check trigger-9 success: 1
12897
DROP TRIGGER trg_2;
12898
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12899
f_int2 = CAST(f_char1 AS SIGNED INT),
12900
f_charbig = CONCAT('===',f_char1,'===');
12901
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
12903
SET new.f_int1 = new.f_int1 + @max_row,
12904
new.f_int2 = new.f_int2 - @max_row,
12905
new.f_charbig = '####updated per update trigger####';
12908
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
12909
f_charbig = '####updated per update statement itself####';
12911
# check trigger-10 success: 1
12912
DROP TRIGGER trg_2;
12913
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12914
f_int2 = CAST(f_char1 AS SIGNED INT),
12915
f_charbig = CONCAT('===',f_char1,'===');
12916
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
12918
SET new.f_int1 = @my_max1 + @counter,
12919
new.f_int2 = @my_min2 - @counter,
12920
new.f_charbig = '####updated per insert trigger####';
12921
SET @counter = @counter + 1;
12924
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
12925
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12926
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
12927
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
12928
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
12930
DROP TRIGGER trg_3;
12932
# check trigger-11 success: 1
12934
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
12935
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
12936
AND f_charbig = '####updated per insert trigger####';
12937
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
12939
SET new.f_int1 = @my_max1 + @counter,
12940
new.f_int2 = @my_min2 - @counter,
12941
new.f_charbig = '####updated per insert trigger####';
12942
SET @counter = @counter + 1;
12945
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
12946
INSERT INTO t1 (f_char1, f_char2, f_charbig)
12947
SELECT CAST(f_int1 AS CHAR),
12948
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
12949
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
12951
DROP TRIGGER trg_3;
12953
# check trigger-12 success: 1
12955
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
12956
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
12957
AND f_charbig = '####updated per insert trigger####';
12959
Table Op Msg_type Msg_text
12960
test.t1 analyze status OK
12961
CHECK TABLE t1 EXTENDED;
12962
Table Op Msg_type Msg_text
12963
test.t1 check status OK
12964
CHECKSUM TABLE t1 EXTENDED;
12966
test.t1 <some_value>
12968
Table Op Msg_type Msg_text
12969
test.t1 optimize status OK
12970
# check layout success: 1
12971
REPAIR TABLE t1 EXTENDED;
12972
Table Op Msg_type Msg_text
12973
test.t1 repair status OK
12974
# check layout success: 1
12977
# check TRUNCATE success: 1
12978
# check layout success: 1
12979
# End usability test (inc/partition_check.inc)
12986
f_charbig VARCHAR(1000)
12989
PARTITION BY KEY(f_int1) PARTITIONS 5;
12990
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
12991
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
12992
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
12993
ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
12994
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
12995
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
12996
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
12997
# Start usability test (inc/partition_check.inc)
12999
SHOW CREATE TABLE t1;
13001
t1 CREATE TABLE `t1` (
13002
`f_int1` bigint(20) DEFAULT NULL,
13003
`f_int2` bigint(20) DEFAULT NULL,
13004
`f_char1` char(20) DEFAULT NULL,
13005
`f_char2` char(20) DEFAULT NULL,
13006
`f_charbig` varchar(1000) DEFAULT NULL
13007
) ENGINE=MyISAM DEFAULT CHARSET=latin1
13008
/*!50100 PARTITION BY KEY (f_int1)
13025
# check prerequisites-1 success: 1
13026
# check COUNT(*) success: 1
13027
# check MIN/MAX(f_int1) success: 1
13028
# check MIN/MAX(f_int2) success: 1
13029
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13030
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
13031
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
13032
WHERE f_int1 IN (2,3);
13033
# check prerequisites-3 success: 1
13034
DELETE FROM t1 WHERE f_charbig = 'delete me';
13035
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
13036
# check read via f_int1 success: 1
13037
# check read via f_int2 success: 1
13039
# check multiple-1 success: 1
13040
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
13042
# check multiple-2 success: 1
13043
INSERT INTO t1 SELECT * FROM t0_template
13044
WHERE MOD(f_int1,3) = 0;
13046
# check multiple-3 success: 1
13047
UPDATE t1 SET f_int1 = f_int1 + @max_row
13048
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
13049
AND @max_row_div2 + @max_row_div4;
13051
# check multiple-4 success: 1
13053
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
13054
AND @max_row_div2 + @max_row_div4 + @max_row;
13056
# check multiple-5 success: 1
13057
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
13059
SET f_int1 = @cur_value , f_int2 = @cur_value,
13060
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
13061
f_charbig = '#SINGLE#';
13063
# check single-1 success: 1
13064
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
13066
SET f_int1 = @cur_value , f_int2 = @cur_value,
13067
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
13068
f_charbig = '#SINGLE#';
13070
# check single-2 success: 1
13071
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
13072
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
13073
UPDATE t1 SET f_int1 = @cur_value2
13074
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
13076
# check single-3 success: 1
13077
SET @cur_value1= -1;
13078
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
13079
UPDATE t1 SET f_int1 = @cur_value1
13080
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
13082
# check single-4 success: 1
13083
SELECT MAX(f_int1) INTO @cur_value FROM t1;
13084
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
13086
# check single-5 success: 1
13087
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
13089
# check single-6 success: 1
13090
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
13092
# check single-7 success: 1
13093
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
13094
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
13095
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
13096
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
13097
f_charbig = '#NULL#';
13099
SET f_int1 = NULL , f_int2 = -@max_row,
13100
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
13101
f_charbig = '#NULL#';
13102
# check null success: 1
13104
# check null-1 success: 1
13105
UPDATE t1 SET f_int1 = -@max_row
13106
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
13107
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
13109
# check null-2 success: 1
13110
UPDATE t1 SET f_int1 = NULL
13111
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
13112
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
13114
# check null-3 success: 1
13116
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
13117
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
13119
# check null-4 success: 1
13121
WHERE f_int1 = 0 AND f_int2 = 0
13122
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
13123
AND f_charbig = '#NULL#';
13125
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13126
SELECT f_int1, f_int1, '', '', 'was inserted'
13127
FROM t0_template source_tab
13128
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
13130
# check transactions-1 success: 1
13133
# check transactions-2 success: 1
13136
# check transactions-3 success: 1
13137
DELETE FROM t1 WHERE f_charbig = 'was inserted';
13141
# check transactions-4 success: 1
13142
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13143
SELECT f_int1, f_int1, '', '', 'was inserted'
13144
FROM t0_template source_tab
13145
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
13147
# check transactions-5 success: 1
13150
Warning 1196 Some non-transactional changed tables couldn't be rolled back
13152
# check transactions-6 success: 1
13153
# INFO: Storage engine used for t1 seems to be not transactional.
13156
# check transactions-7 success: 1
13157
DELETE FROM t1 WHERE f_charbig = 'was inserted';
13159
SET @@session.sql_mode = 'traditional';
13160
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
13161
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13162
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
13163
'', '', 'was inserted' FROM t0_template
13164
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
13165
ERROR 22012: Division by 0
13168
# check transactions-8 success: 1
13169
# INFO: Storage engine used for t1 seems to be unable to revert
13170
# changes made by the failing statement.
13171
SET @@session.sql_mode = '';
13173
DELETE FROM t1 WHERE f_charbig = 'was inserted';
13175
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
13177
# check special-1 success: 1
13178
UPDATE t1 SET f_charbig = '';
13180
# check special-2 success: 1
13181
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
13182
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
13183
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
13184
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13185
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13186
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13187
'just inserted' FROM t0_template
13188
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13189
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
13191
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13192
f_charbig = 'updated by trigger'
13193
WHERE f_int1 = new.f_int1;
13195
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13196
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
13197
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13199
# check trigger-1 success: 1
13200
DROP TRIGGER trg_1;
13201
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13202
f_int2 = CAST(f_char1 AS SIGNED INT),
13203
f_charbig = 'just inserted'
13204
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13206
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13207
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13208
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13209
'just inserted' FROM t0_template
13210
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13211
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
13213
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13214
f_charbig = 'updated by trigger'
13215
WHERE f_int1 = new.f_int1;
13217
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13218
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
13219
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13221
# check trigger-2 success: 1
13222
DROP TRIGGER trg_1;
13223
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13224
f_int2 = CAST(f_char1 AS SIGNED INT),
13225
f_charbig = 'just inserted'
13226
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13228
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13229
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13230
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13231
'just inserted' FROM t0_template
13232
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13233
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
13235
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13236
f_charbig = 'updated by trigger'
13237
WHERE f_int1 = new.f_int1;
13239
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
13240
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13242
# check trigger-3 success: 1
13243
DROP TRIGGER trg_1;
13244
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13245
f_int2 = CAST(f_char1 AS SIGNED INT),
13246
f_charbig = 'just inserted'
13247
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13249
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13250
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13251
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13252
'just inserted' FROM t0_template
13253
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13254
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
13256
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13257
f_charbig = 'updated by trigger'
13258
WHERE f_int1 = - old.f_int1;
13260
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
13261
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13263
# check trigger-4 success: 1
13264
DROP TRIGGER trg_1;
13265
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13266
f_int2 = CAST(f_char1 AS SIGNED INT),
13267
f_charbig = 'just inserted'
13268
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13270
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13271
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13272
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13273
'just inserted' FROM t0_template
13274
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13275
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
13277
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13278
f_charbig = 'updated by trigger'
13279
WHERE f_int1 = new.f_int1;
13281
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
13282
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13284
# check trigger-5 success: 1
13285
DROP TRIGGER trg_1;
13286
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13287
f_int2 = CAST(f_char1 AS SIGNED INT),
13288
f_charbig = 'just inserted'
13289
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13291
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13292
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13293
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13294
'just inserted' FROM t0_template
13295
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13296
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
13298
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13299
f_charbig = 'updated by trigger'
13300
WHERE f_int1 = - old.f_int1;
13302
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
13303
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13305
# check trigger-6 success: 1
13306
DROP TRIGGER trg_1;
13307
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13308
f_int2 = CAST(f_char1 AS SIGNED INT),
13309
f_charbig = 'just inserted'
13310
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13312
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13313
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13314
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13315
'just inserted' FROM t0_template
13316
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13317
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
13319
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13320
f_charbig = 'updated by trigger'
13321
WHERE f_int1 = - old.f_int1;
13324
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13326
# check trigger-7 success: 1
13327
DROP TRIGGER trg_1;
13328
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13329
f_int2 = CAST(f_char1 AS SIGNED INT),
13330
f_charbig = 'just inserted'
13331
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13333
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13334
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13335
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13336
'just inserted' FROM t0_template
13337
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13338
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
13340
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13341
f_charbig = 'updated by trigger'
13342
WHERE f_int1 = - old.f_int1;
13345
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13347
# check trigger-8 success: 1
13348
DROP TRIGGER trg_1;
13349
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13350
f_int2 = CAST(f_char1 AS SIGNED INT),
13351
f_charbig = 'just inserted'
13352
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13354
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13356
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13357
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
13359
SET new.f_int1 = old.f_int1 + @max_row,
13360
new.f_int2 = old.f_int2 - @max_row,
13361
new.f_charbig = '####updated per update trigger####';
13364
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
13365
f_charbig = '####updated per update statement itself####';
13367
# check trigger-9 success: 1
13368
DROP TRIGGER trg_2;
13369
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13370
f_int2 = CAST(f_char1 AS SIGNED INT),
13371
f_charbig = CONCAT('===',f_char1,'===');
13372
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
13374
SET new.f_int1 = new.f_int1 + @max_row,
13375
new.f_int2 = new.f_int2 - @max_row,
13376
new.f_charbig = '####updated per update trigger####';
13379
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
13380
f_charbig = '####updated per update statement itself####';
13382
# check trigger-10 success: 1
13383
DROP TRIGGER trg_2;
13384
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13385
f_int2 = CAST(f_char1 AS SIGNED INT),
13386
f_charbig = CONCAT('===',f_char1,'===');
13387
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
13389
SET new.f_int1 = @my_max1 + @counter,
13390
new.f_int2 = @my_min2 - @counter,
13391
new.f_charbig = '####updated per insert trigger####';
13392
SET @counter = @counter + 1;
13395
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
13396
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13397
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
13398
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
13399
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
13401
DROP TRIGGER trg_3;
13403
# check trigger-11 success: 1
13405
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
13406
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
13407
AND f_charbig = '####updated per insert trigger####';
13408
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
13410
SET new.f_int1 = @my_max1 + @counter,
13411
new.f_int2 = @my_min2 - @counter,
13412
new.f_charbig = '####updated per insert trigger####';
13413
SET @counter = @counter + 1;
13416
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
13417
INSERT INTO t1 (f_char1, f_char2, f_charbig)
13418
SELECT CAST(f_int1 AS CHAR),
13419
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
13420
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
13422
DROP TRIGGER trg_3;
13424
# check trigger-12 success: 1
13426
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
13427
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
13428
AND f_charbig = '####updated per insert trigger####';
13430
Table Op Msg_type Msg_text
13431
test.t1 analyze status OK
13432
CHECK TABLE t1 EXTENDED;
13433
Table Op Msg_type Msg_text
13434
test.t1 check status OK
13435
CHECKSUM TABLE t1 EXTENDED;
13437
test.t1 <some_value>
13439
Table Op Msg_type Msg_text
13440
test.t1 optimize status OK
13441
# check layout success: 1
13442
REPAIR TABLE t1 EXTENDED;
13443
Table Op Msg_type Msg_text
13444
test.t1 repair status OK
13445
# check layout success: 1
13448
# check TRUNCATE success: 1
13449
# check layout success: 1
13450
# End usability test (inc/partition_check.inc)
13457
f_charbig VARCHAR(1000)
13460
PARTITION BY LIST(MOD(f_int1,4))
13461
(PARTITION part_3 VALUES IN (-3),
13462
PARTITION part_2 VALUES IN (-2),
13463
PARTITION part_1 VALUES IN (-1),
13464
PARTITION part_N VALUES IN (NULL),
13465
PARTITION part0 VALUES IN (0),
13466
PARTITION part1 VALUES IN (1),
13467
PARTITION part2 VALUES IN (2),
13468
PARTITION part3 VALUES IN (3));
13469
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
13470
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
13471
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
13472
ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
13473
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
13474
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
13475
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
13476
# Start usability test (inc/partition_check.inc)
13478
SHOW CREATE TABLE t1;
13480
t1 CREATE TABLE `t1` (
13481
`f_int1` bigint(20) DEFAULT NULL,
13482
`f_int2` bigint(20) DEFAULT NULL,
13483
`f_char1` char(20) DEFAULT NULL,
13484
`f_char2` char(20) DEFAULT NULL,
13485
`f_charbig` varchar(1000) DEFAULT NULL
13486
) ENGINE=MyISAM DEFAULT CHARSET=latin1
13487
/*!50100 PARTITION BY LIST (MOD(f_int1,4))
13488
(PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM,
13489
PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM,
13490
PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM,
13491
PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM,
13492
PARTITION part0 VALUES IN (0) ENGINE = MyISAM,
13493
PARTITION part1 VALUES IN (1) ENGINE = MyISAM,
13494
PARTITION part2 VALUES IN (2) ENGINE = MyISAM,
13495
PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */
13517
# check prerequisites-1 success: 1
13518
# check COUNT(*) success: 1
13519
# check MIN/MAX(f_int1) success: 1
13520
# check MIN/MAX(f_int2) success: 1
13521
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13522
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
13523
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
13524
WHERE f_int1 IN (2,3);
13525
# check prerequisites-3 success: 1
13526
DELETE FROM t1 WHERE f_charbig = 'delete me';
13527
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
13528
# check read via f_int1 success: 1
13529
# check read via f_int2 success: 1
13531
# check multiple-1 success: 1
13532
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
13534
# check multiple-2 success: 1
13535
INSERT INTO t1 SELECT * FROM t0_template
13536
WHERE MOD(f_int1,3) = 0;
13538
# check multiple-3 success: 1
13539
UPDATE t1 SET f_int1 = f_int1 + @max_row
13540
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
13541
AND @max_row_div2 + @max_row_div4;
13543
# check multiple-4 success: 1
13545
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
13546
AND @max_row_div2 + @max_row_div4 + @max_row;
13548
# check multiple-5 success: 1
13549
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
13551
SET f_int1 = @cur_value , f_int2 = @cur_value,
13552
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
13553
f_charbig = '#SINGLE#';
13555
# check single-1 success: 1
13556
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
13558
SET f_int1 = @cur_value , f_int2 = @cur_value,
13559
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
13560
f_charbig = '#SINGLE#';
13562
# check single-2 success: 1
13563
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
13564
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
13565
UPDATE t1 SET f_int1 = @cur_value2
13566
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
13568
# check single-3 success: 1
13569
SET @cur_value1= -1;
13570
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
13571
UPDATE t1 SET f_int1 = @cur_value1
13572
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
13574
# check single-4 success: 1
13575
SELECT MAX(f_int1) INTO @cur_value FROM t1;
13576
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
13578
# check single-5 success: 1
13579
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
13581
# check single-6 success: 1
13582
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
13584
# check single-7 success: 1
13585
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
13586
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
13587
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
13588
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
13589
f_charbig = '#NULL#';
13591
SET f_int1 = NULL , f_int2 = -@max_row,
13592
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
13593
f_charbig = '#NULL#';
13594
# check null success: 1
13596
# check null-1 success: 1
13597
UPDATE t1 SET f_int1 = -@max_row
13598
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
13599
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
13601
# check null-2 success: 1
13602
UPDATE t1 SET f_int1 = NULL
13603
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
13604
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
13606
# check null-3 success: 1
13608
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
13609
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
13611
# check null-4 success: 1
13613
WHERE f_int1 = 0 AND f_int2 = 0
13614
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
13615
AND f_charbig = '#NULL#';
13617
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13618
SELECT f_int1, f_int1, '', '', 'was inserted'
13619
FROM t0_template source_tab
13620
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
13622
# check transactions-1 success: 1
13625
# check transactions-2 success: 1
13628
# check transactions-3 success: 1
13629
DELETE FROM t1 WHERE f_charbig = 'was inserted';
13633
# check transactions-4 success: 1
13634
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13635
SELECT f_int1, f_int1, '', '', 'was inserted'
13636
FROM t0_template source_tab
13637
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
13639
# check transactions-5 success: 1
13642
Warning 1196 Some non-transactional changed tables couldn't be rolled back
13644
# check transactions-6 success: 1
13645
# INFO: Storage engine used for t1 seems to be not transactional.
13648
# check transactions-7 success: 1
13649
DELETE FROM t1 WHERE f_charbig = 'was inserted';
13651
SET @@session.sql_mode = 'traditional';
13652
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
13653
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13654
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
13655
'', '', 'was inserted' FROM t0_template
13656
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
13657
ERROR 22012: Division by 0
13660
# check transactions-8 success: 1
13661
# INFO: Storage engine used for t1 seems to be unable to revert
13662
# changes made by the failing statement.
13663
SET @@session.sql_mode = '';
13665
DELETE FROM t1 WHERE f_charbig = 'was inserted';
13667
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
13669
# check special-1 success: 1
13670
UPDATE t1 SET f_charbig = '';
13672
# check special-2 success: 1
13673
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
13674
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
13675
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
13676
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13677
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13678
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13679
'just inserted' FROM t0_template
13680
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13681
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
13683
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13684
f_charbig = 'updated by trigger'
13685
WHERE f_int1 = new.f_int1;
13687
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13688
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
13689
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13691
# check trigger-1 success: 1
13692
DROP TRIGGER trg_1;
13693
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13694
f_int2 = CAST(f_char1 AS SIGNED INT),
13695
f_charbig = 'just inserted'
13696
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13698
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13699
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13700
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13701
'just inserted' FROM t0_template
13702
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13703
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
13705
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13706
f_charbig = 'updated by trigger'
13707
WHERE f_int1 = new.f_int1;
13709
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13710
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
13711
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13713
# check trigger-2 success: 1
13714
DROP TRIGGER trg_1;
13715
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13716
f_int2 = CAST(f_char1 AS SIGNED INT),
13717
f_charbig = 'just inserted'
13718
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13720
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13721
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13722
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13723
'just inserted' FROM t0_template
13724
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13725
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
13727
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13728
f_charbig = 'updated by trigger'
13729
WHERE f_int1 = new.f_int1;
13731
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
13732
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13734
# check trigger-3 success: 1
13735
DROP TRIGGER trg_1;
13736
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13737
f_int2 = CAST(f_char1 AS SIGNED INT),
13738
f_charbig = 'just inserted'
13739
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13741
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13742
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13743
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13744
'just inserted' FROM t0_template
13745
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13746
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
13748
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13749
f_charbig = 'updated by trigger'
13750
WHERE f_int1 = - old.f_int1;
13752
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
13753
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13755
# check trigger-4 success: 1
13756
DROP TRIGGER trg_1;
13757
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13758
f_int2 = CAST(f_char1 AS SIGNED INT),
13759
f_charbig = 'just inserted'
13760
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13762
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13763
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13764
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13765
'just inserted' FROM t0_template
13766
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13767
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
13769
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13770
f_charbig = 'updated by trigger'
13771
WHERE f_int1 = new.f_int1;
13773
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
13774
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13776
# check trigger-5 success: 1
13777
DROP TRIGGER trg_1;
13778
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13779
f_int2 = CAST(f_char1 AS SIGNED INT),
13780
f_charbig = 'just inserted'
13781
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13783
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13784
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13785
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13786
'just inserted' FROM t0_template
13787
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13788
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
13790
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13791
f_charbig = 'updated by trigger'
13792
WHERE f_int1 = - old.f_int1;
13794
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
13795
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13797
# check trigger-6 success: 1
13798
DROP TRIGGER trg_1;
13799
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13800
f_int2 = CAST(f_char1 AS SIGNED INT),
13801
f_charbig = 'just inserted'
13802
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13804
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13805
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13806
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13807
'just inserted' FROM t0_template
13808
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13809
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
13811
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13812
f_charbig = 'updated by trigger'
13813
WHERE f_int1 = - old.f_int1;
13816
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13818
# check trigger-7 success: 1
13819
DROP TRIGGER trg_1;
13820
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13821
f_int2 = CAST(f_char1 AS SIGNED INT),
13822
f_charbig = 'just inserted'
13823
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13825
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13826
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13827
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13828
'just inserted' FROM t0_template
13829
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13830
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
13832
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13833
f_charbig = 'updated by trigger'
13834
WHERE f_int1 = - old.f_int1;
13837
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13839
# check trigger-8 success: 1
13840
DROP TRIGGER trg_1;
13841
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13842
f_int2 = CAST(f_char1 AS SIGNED INT),
13843
f_charbig = 'just inserted'
13844
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13846
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13848
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13849
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
13851
SET new.f_int1 = old.f_int1 + @max_row,
13852
new.f_int2 = old.f_int2 - @max_row,
13853
new.f_charbig = '####updated per update trigger####';
13856
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
13857
f_charbig = '####updated per update statement itself####';
13859
# check trigger-9 success: 1
13860
DROP TRIGGER trg_2;
13861
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13862
f_int2 = CAST(f_char1 AS SIGNED INT),
13863
f_charbig = CONCAT('===',f_char1,'===');
13864
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
13866
SET new.f_int1 = new.f_int1 + @max_row,
13867
new.f_int2 = new.f_int2 - @max_row,
13868
new.f_charbig = '####updated per update trigger####';
13871
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
13872
f_charbig = '####updated per update statement itself####';
13874
# check trigger-10 success: 1
13875
DROP TRIGGER trg_2;
13876
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13877
f_int2 = CAST(f_char1 AS SIGNED INT),
13878
f_charbig = CONCAT('===',f_char1,'===');
13879
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
13881
SET new.f_int1 = @my_max1 + @counter,
13882
new.f_int2 = @my_min2 - @counter,
13883
new.f_charbig = '####updated per insert trigger####';
13884
SET @counter = @counter + 1;
13887
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
13888
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13889
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
13890
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
13891
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
13893
DROP TRIGGER trg_3;
13895
# check trigger-11 success: 1
13897
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
13898
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
13899
AND f_charbig = '####updated per insert trigger####';
13900
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
13902
SET new.f_int1 = @my_max1 + @counter,
13903
new.f_int2 = @my_min2 - @counter,
13904
new.f_charbig = '####updated per insert trigger####';
13905
SET @counter = @counter + 1;
13908
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
13909
INSERT INTO t1 (f_char1, f_char2, f_charbig)
13910
SELECT CAST(f_int1 AS CHAR),
13911
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
13912
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
13914
DROP TRIGGER trg_3;
13916
# check trigger-12 success: 1
13918
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
13919
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
13920
AND f_charbig = '####updated per insert trigger####';
13922
Table Op Msg_type Msg_text
13923
test.t1 analyze status OK
13924
CHECK TABLE t1 EXTENDED;
13925
Table Op Msg_type Msg_text
13926
test.t1 check status OK
13927
CHECKSUM TABLE t1 EXTENDED;
13929
test.t1 <some_value>
13931
Table Op Msg_type Msg_text
13932
test.t1 optimize status OK
13933
# check layout success: 1
13934
REPAIR TABLE t1 EXTENDED;
13935
Table Op Msg_type Msg_text
13936
test.t1 repair status OK
13937
# check layout success: 1
13940
# check TRUNCATE success: 1
13941
# check layout success: 1
13942
# End usability test (inc/partition_check.inc)
13949
f_charbig VARCHAR(1000)
13952
PARTITION BY RANGE(f_int1)
13953
(PARTITION parta VALUES LESS THAN (0),
13954
PARTITION partb VALUES LESS THAN (5),
13955
PARTITION partc VALUES LESS THAN (10),
13956
PARTITION partd VALUES LESS THAN (10 + 5),
13957
PARTITION parte VALUES LESS THAN (20),
13958
PARTITION partf VALUES LESS THAN (2147483646));
13959
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
13960
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
13961
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
13962
ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
13963
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
13964
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
13965
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
13966
# Start usability test (inc/partition_check.inc)
13968
SHOW CREATE TABLE t1;
13970
t1 CREATE TABLE `t1` (
13971
`f_int1` bigint(20) DEFAULT NULL,
13972
`f_int2` bigint(20) DEFAULT NULL,
13973
`f_char1` char(20) DEFAULT NULL,
13974
`f_char2` char(20) DEFAULT NULL,
13975
`f_charbig` varchar(1000) DEFAULT NULL
13976
) ENGINE=MyISAM DEFAULT CHARSET=latin1
13977
/*!50100 PARTITION BY RANGE (f_int1)
13978
(PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM,
13979
PARTITION partb VALUES LESS THAN (5) ENGINE = MyISAM,
13980
PARTITION partc VALUES LESS THAN (10) ENGINE = MyISAM,
13981
PARTITION partd VALUES LESS THAN (15) ENGINE = MyISAM,
13982
PARTITION parte VALUES LESS THAN (20) ENGINE = MyISAM,
13983
PARTITION partf VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
14001
# check prerequisites-1 success: 1
14002
# check COUNT(*) success: 1
14003
# check MIN/MAX(f_int1) success: 1
14004
# check MIN/MAX(f_int2) success: 1
14005
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14006
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
14007
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
14008
WHERE f_int1 IN (2,3);
14009
# check prerequisites-3 success: 1
14010
DELETE FROM t1 WHERE f_charbig = 'delete me';
14011
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
14012
# check read via f_int1 success: 1
14013
# check read via f_int2 success: 1
14015
# check multiple-1 success: 1
14016
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
14018
# check multiple-2 success: 1
14019
INSERT INTO t1 SELECT * FROM t0_template
14020
WHERE MOD(f_int1,3) = 0;
14022
# check multiple-3 success: 1
14023
UPDATE t1 SET f_int1 = f_int1 + @max_row
14024
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
14025
AND @max_row_div2 + @max_row_div4;
14027
# check multiple-4 success: 1
14029
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
14030
AND @max_row_div2 + @max_row_div4 + @max_row;
14032
# check multiple-5 success: 1
14033
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
14035
SET f_int1 = @cur_value , f_int2 = @cur_value,
14036
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
14037
f_charbig = '#SINGLE#';
14039
# check single-1 success: 1
14040
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
14042
SET f_int1 = @cur_value , f_int2 = @cur_value,
14043
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
14044
f_charbig = '#SINGLE#';
14046
# check single-2 success: 1
14047
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
14048
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
14049
UPDATE t1 SET f_int1 = @cur_value2
14050
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
14052
# check single-3 success: 1
14053
SET @cur_value1= -1;
14054
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
14055
UPDATE t1 SET f_int1 = @cur_value1
14056
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
14058
# check single-4 success: 1
14059
SELECT MAX(f_int1) INTO @cur_value FROM t1;
14060
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
14062
# check single-5 success: 1
14063
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
14065
# check single-6 success: 1
14066
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
14067
ERROR HY000: Table has no partition for value 2147483647
14068
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
14069
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
14070
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
14071
f_charbig = '#NULL#';
14073
SET f_int1 = NULL , f_int2 = -@max_row,
14074
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
14075
f_charbig = '#NULL#';
14076
# check null success: 1
14078
# check null-1 success: 1
14079
UPDATE t1 SET f_int1 = -@max_row
14080
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
14081
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
14083
# check null-2 success: 1
14084
UPDATE t1 SET f_int1 = NULL
14085
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
14086
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
14088
# check null-3 success: 1
14090
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
14091
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
14093
# check null-4 success: 1
14095
WHERE f_int1 = 0 AND f_int2 = 0
14096
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
14097
AND f_charbig = '#NULL#';
14099
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14100
SELECT f_int1, f_int1, '', '', 'was inserted'
14101
FROM t0_template source_tab
14102
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
14104
# check transactions-1 success: 1
14107
# check transactions-2 success: 1
14110
# check transactions-3 success: 1
14111
DELETE FROM t1 WHERE f_charbig = 'was inserted';
14115
# check transactions-4 success: 1
14116
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14117
SELECT f_int1, f_int1, '', '', 'was inserted'
14118
FROM t0_template source_tab
14119
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
14121
# check transactions-5 success: 1
14124
Warning 1196 Some non-transactional changed tables couldn't be rolled back
14126
# check transactions-6 success: 1
14127
# INFO: Storage engine used for t1 seems to be not transactional.
14130
# check transactions-7 success: 1
14131
DELETE FROM t1 WHERE f_charbig = 'was inserted';
14133
SET @@session.sql_mode = 'traditional';
14134
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
14135
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14136
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
14137
'', '', 'was inserted' FROM t0_template
14138
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
14139
ERROR 22012: Division by 0
14142
# check transactions-8 success: 1
14143
# INFO: Storage engine used for t1 seems to be unable to revert
14144
# changes made by the failing statement.
14145
SET @@session.sql_mode = '';
14147
DELETE FROM t1 WHERE f_charbig = 'was inserted';
14149
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
14151
# check special-1 success: 1
14152
UPDATE t1 SET f_charbig = '';
14154
# check special-2 success: 1
14155
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
14156
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
14157
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
14158
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14159
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14160
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14161
'just inserted' FROM t0_template
14162
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14163
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
14165
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14166
f_charbig = 'updated by trigger'
14167
WHERE f_int1 = new.f_int1;
14169
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14170
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
14171
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14173
# check trigger-1 success: 1
14174
DROP TRIGGER trg_1;
14175
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14176
f_int2 = CAST(f_char1 AS SIGNED INT),
14177
f_charbig = 'just inserted'
14178
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14180
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14181
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14182
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14183
'just inserted' FROM t0_template
14184
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14185
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
14187
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14188
f_charbig = 'updated by trigger'
14189
WHERE f_int1 = new.f_int1;
14191
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14192
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
14193
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14195
# check trigger-2 success: 1
14196
DROP TRIGGER trg_1;
14197
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14198
f_int2 = CAST(f_char1 AS SIGNED INT),
14199
f_charbig = 'just inserted'
14200
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14202
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14203
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14204
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14205
'just inserted' FROM t0_template
14206
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14207
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
14209
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14210
f_charbig = 'updated by trigger'
14211
WHERE f_int1 = new.f_int1;
14213
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
14214
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14216
# check trigger-3 success: 1
14217
DROP TRIGGER trg_1;
14218
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14219
f_int2 = CAST(f_char1 AS SIGNED INT),
14220
f_charbig = 'just inserted'
14221
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14223
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14224
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14225
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14226
'just inserted' FROM t0_template
14227
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14228
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
14230
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14231
f_charbig = 'updated by trigger'
14232
WHERE f_int1 = - old.f_int1;
14234
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
14235
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14237
# check trigger-4 success: 1
14238
DROP TRIGGER trg_1;
14239
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14240
f_int2 = CAST(f_char1 AS SIGNED INT),
14241
f_charbig = 'just inserted'
14242
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14244
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14245
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14246
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14247
'just inserted' FROM t0_template
14248
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14249
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
14251
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14252
f_charbig = 'updated by trigger'
14253
WHERE f_int1 = new.f_int1;
14255
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
14256
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14258
# check trigger-5 success: 1
14259
DROP TRIGGER trg_1;
14260
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14261
f_int2 = CAST(f_char1 AS SIGNED INT),
14262
f_charbig = 'just inserted'
14263
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14265
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14266
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14267
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14268
'just inserted' FROM t0_template
14269
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14270
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
14272
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14273
f_charbig = 'updated by trigger'
14274
WHERE f_int1 = - old.f_int1;
14276
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
14277
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14279
# check trigger-6 success: 1
14280
DROP TRIGGER trg_1;
14281
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14282
f_int2 = CAST(f_char1 AS SIGNED INT),
14283
f_charbig = 'just inserted'
14284
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14286
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14287
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14288
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14289
'just inserted' FROM t0_template
14290
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14291
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
14293
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14294
f_charbig = 'updated by trigger'
14295
WHERE f_int1 = - old.f_int1;
14298
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14300
# check trigger-7 success: 1
14301
DROP TRIGGER trg_1;
14302
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14303
f_int2 = CAST(f_char1 AS SIGNED INT),
14304
f_charbig = 'just inserted'
14305
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14307
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14308
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14309
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14310
'just inserted' FROM t0_template
14311
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14312
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
14314
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14315
f_charbig = 'updated by trigger'
14316
WHERE f_int1 = - old.f_int1;
14319
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14321
# check trigger-8 success: 1
14322
DROP TRIGGER trg_1;
14323
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14324
f_int2 = CAST(f_char1 AS SIGNED INT),
14325
f_charbig = 'just inserted'
14326
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14328
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14330
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14331
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
14333
SET new.f_int1 = old.f_int1 + @max_row,
14334
new.f_int2 = old.f_int2 - @max_row,
14335
new.f_charbig = '####updated per update trigger####';
14338
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
14339
f_charbig = '####updated per update statement itself####';
14341
# check trigger-9 success: 1
14342
DROP TRIGGER trg_2;
14343
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14344
f_int2 = CAST(f_char1 AS SIGNED INT),
14345
f_charbig = CONCAT('===',f_char1,'===');
14346
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
14348
SET new.f_int1 = new.f_int1 + @max_row,
14349
new.f_int2 = new.f_int2 - @max_row,
14350
new.f_charbig = '####updated per update trigger####';
14353
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
14354
f_charbig = '####updated per update statement itself####';
14356
# check trigger-10 success: 1
14357
DROP TRIGGER trg_2;
14358
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14359
f_int2 = CAST(f_char1 AS SIGNED INT),
14360
f_charbig = CONCAT('===',f_char1,'===');
14361
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
14363
SET new.f_int1 = @my_max1 + @counter,
14364
new.f_int2 = @my_min2 - @counter,
14365
new.f_charbig = '####updated per insert trigger####';
14366
SET @counter = @counter + 1;
14369
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
14370
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14371
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
14372
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
14373
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
14375
DROP TRIGGER trg_3;
14377
# check trigger-11 success: 1
14379
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
14380
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
14381
AND f_charbig = '####updated per insert trigger####';
14382
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
14384
SET new.f_int1 = @my_max1 + @counter,
14385
new.f_int2 = @my_min2 - @counter,
14386
new.f_charbig = '####updated per insert trigger####';
14387
SET @counter = @counter + 1;
14390
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
14391
INSERT INTO t1 (f_char1, f_char2, f_charbig)
14392
SELECT CAST(f_int1 AS CHAR),
14393
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
14394
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
14396
DROP TRIGGER trg_3;
14398
# check trigger-12 success: 1
14400
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
14401
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
14402
AND f_charbig = '####updated per insert trigger####';
14404
Table Op Msg_type Msg_text
14405
test.t1 analyze status OK
14406
CHECK TABLE t1 EXTENDED;
14407
Table Op Msg_type Msg_text
14408
test.t1 check status OK
14409
CHECKSUM TABLE t1 EXTENDED;
14411
test.t1 <some_value>
14413
Table Op Msg_type Msg_text
14414
test.t1 optimize status OK
14415
# check layout success: 1
14416
REPAIR TABLE t1 EXTENDED;
14417
Table Op Msg_type Msg_text
14418
test.t1 repair status OK
14419
# check layout success: 1
14422
# check TRUNCATE success: 1
14423
# check layout success: 1
14424
# End usability test (inc/partition_check.inc)
14431
f_charbig VARCHAR(1000)
14434
PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
14435
(PARTITION parta VALUES LESS THAN (0),
14436
PARTITION partb VALUES LESS THAN (5),
14437
PARTITION partc VALUES LESS THAN (10),
14438
PARTITION partd VALUES LESS THAN (2147483646));
14439
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
14440
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
14441
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
14442
ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
14443
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
14444
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
14445
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
14446
# Start usability test (inc/partition_check.inc)
14448
SHOW CREATE TABLE t1;
14450
t1 CREATE TABLE `t1` (
14451
`f_int1` bigint(20) DEFAULT NULL,
14452
`f_int2` bigint(20) DEFAULT NULL,
14453
`f_char1` char(20) DEFAULT NULL,
14454
`f_char2` char(20) DEFAULT NULL,
14455
`f_charbig` varchar(1000) DEFAULT NULL
14456
) ENGINE=MyISAM DEFAULT CHARSET=latin1
14457
/*!50100 PARTITION BY RANGE (f_int1 DIV 2)
14458
SUBPARTITION BY HASH (f_int1)
14460
(PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM,
14461
PARTITION partb VALUES LESS THAN (5) ENGINE = MyISAM,
14462
PARTITION partc VALUES LESS THAN (10) ENGINE = MyISAM,
14463
PARTITION partd VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
14466
t1#P#parta#SP#partasp0.MYD
14467
t1#P#parta#SP#partasp0.MYI
14468
t1#P#parta#SP#partasp1.MYD
14469
t1#P#parta#SP#partasp1.MYI
14470
t1#P#partb#SP#partbsp0.MYD
14471
t1#P#partb#SP#partbsp0.MYI
14472
t1#P#partb#SP#partbsp1.MYD
14473
t1#P#partb#SP#partbsp1.MYI
14474
t1#P#partc#SP#partcsp0.MYD
14475
t1#P#partc#SP#partcsp0.MYI
14476
t1#P#partc#SP#partcsp1.MYD
14477
t1#P#partc#SP#partcsp1.MYI
14478
t1#P#partd#SP#partdsp0.MYD
14479
t1#P#partd#SP#partdsp0.MYI
14480
t1#P#partd#SP#partdsp1.MYD
14481
t1#P#partd#SP#partdsp1.MYI
14485
# check prerequisites-1 success: 1
14486
# check COUNT(*) success: 1
14487
# check MIN/MAX(f_int1) success: 1
14488
# check MIN/MAX(f_int2) success: 1
14489
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14490
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
14491
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
14492
WHERE f_int1 IN (2,3);
14493
# check prerequisites-3 success: 1
14494
DELETE FROM t1 WHERE f_charbig = 'delete me';
14495
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
14496
# check read via f_int1 success: 1
14497
# check read via f_int2 success: 1
14499
# check multiple-1 success: 1
14500
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
14502
# check multiple-2 success: 1
14503
INSERT INTO t1 SELECT * FROM t0_template
14504
WHERE MOD(f_int1,3) = 0;
14506
# check multiple-3 success: 1
14507
UPDATE t1 SET f_int1 = f_int1 + @max_row
14508
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
14509
AND @max_row_div2 + @max_row_div4;
14511
# check multiple-4 success: 1
14513
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
14514
AND @max_row_div2 + @max_row_div4 + @max_row;
14516
# check multiple-5 success: 1
14517
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
14519
SET f_int1 = @cur_value , f_int2 = @cur_value,
14520
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
14521
f_charbig = '#SINGLE#';
14523
# check single-1 success: 1
14524
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
14526
SET f_int1 = @cur_value , f_int2 = @cur_value,
14527
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
14528
f_charbig = '#SINGLE#';
14530
# check single-2 success: 1
14531
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
14532
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
14533
UPDATE t1 SET f_int1 = @cur_value2
14534
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
14536
# check single-3 success: 1
14537
SET @cur_value1= -1;
14538
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
14539
UPDATE t1 SET f_int1 = @cur_value1
14540
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
14542
# check single-4 success: 1
14543
SELECT MAX(f_int1) INTO @cur_value FROM t1;
14544
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
14546
# check single-5 success: 1
14547
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
14549
# check single-6 success: 1
14550
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
14552
# check single-7 success: 1
14553
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
14554
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
14555
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
14556
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
14557
f_charbig = '#NULL#';
14559
SET f_int1 = NULL , f_int2 = -@max_row,
14560
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
14561
f_charbig = '#NULL#';
14562
# check null success: 1
14564
# check null-1 success: 1
14565
UPDATE t1 SET f_int1 = -@max_row
14566
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
14567
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
14569
# check null-2 success: 1
14570
UPDATE t1 SET f_int1 = NULL
14571
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
14572
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
14574
# check null-3 success: 1
14576
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
14577
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
14579
# check null-4 success: 1
14581
WHERE f_int1 = 0 AND f_int2 = 0
14582
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
14583
AND f_charbig = '#NULL#';
14585
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14586
SELECT f_int1, f_int1, '', '', 'was inserted'
14587
FROM t0_template source_tab
14588
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
14590
# check transactions-1 success: 1
14593
# check transactions-2 success: 1
14596
# check transactions-3 success: 1
14597
DELETE FROM t1 WHERE f_charbig = 'was inserted';
14601
# check transactions-4 success: 1
14602
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14603
SELECT f_int1, f_int1, '', '', 'was inserted'
14604
FROM t0_template source_tab
14605
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
14607
# check transactions-5 success: 1
14610
Warning 1196 Some non-transactional changed tables couldn't be rolled back
14612
# check transactions-6 success: 1
14613
# INFO: Storage engine used for t1 seems to be not transactional.
14616
# check transactions-7 success: 1
14617
DELETE FROM t1 WHERE f_charbig = 'was inserted';
14619
SET @@session.sql_mode = 'traditional';
14620
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
14621
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14622
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
14623
'', '', 'was inserted' FROM t0_template
14624
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
14625
ERROR 22012: Division by 0
14628
# check transactions-8 success: 1
14629
# INFO: Storage engine used for t1 seems to be unable to revert
14630
# changes made by the failing statement.
14631
SET @@session.sql_mode = '';
14633
DELETE FROM t1 WHERE f_charbig = 'was inserted';
14635
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
14637
# check special-1 success: 1
14638
UPDATE t1 SET f_charbig = '';
14640
# check special-2 success: 1
14641
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
14642
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
14643
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
14644
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14645
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14646
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14647
'just inserted' FROM t0_template
14648
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14649
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
14651
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14652
f_charbig = 'updated by trigger'
14653
WHERE f_int1 = new.f_int1;
14655
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14656
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
14657
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14659
# check trigger-1 success: 1
14660
DROP TRIGGER trg_1;
14661
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14662
f_int2 = CAST(f_char1 AS SIGNED INT),
14663
f_charbig = 'just inserted'
14664
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14666
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14667
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14668
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14669
'just inserted' FROM t0_template
14670
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14671
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
14673
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14674
f_charbig = 'updated by trigger'
14675
WHERE f_int1 = new.f_int1;
14677
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14678
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
14679
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14681
# check trigger-2 success: 1
14682
DROP TRIGGER trg_1;
14683
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14684
f_int2 = CAST(f_char1 AS SIGNED INT),
14685
f_charbig = 'just inserted'
14686
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14688
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14689
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14690
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14691
'just inserted' FROM t0_template
14692
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14693
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
14695
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14696
f_charbig = 'updated by trigger'
14697
WHERE f_int1 = new.f_int1;
14699
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
14700
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14702
# check trigger-3 success: 1
14703
DROP TRIGGER trg_1;
14704
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14705
f_int2 = CAST(f_char1 AS SIGNED INT),
14706
f_charbig = 'just inserted'
14707
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14709
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14710
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14711
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14712
'just inserted' FROM t0_template
14713
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14714
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
14716
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14717
f_charbig = 'updated by trigger'
14718
WHERE f_int1 = - old.f_int1;
14720
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
14721
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14723
# check trigger-4 success: 1
14724
DROP TRIGGER trg_1;
14725
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14726
f_int2 = CAST(f_char1 AS SIGNED INT),
14727
f_charbig = 'just inserted'
14728
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14730
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14731
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14732
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14733
'just inserted' FROM t0_template
14734
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14735
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
14737
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14738
f_charbig = 'updated by trigger'
14739
WHERE f_int1 = new.f_int1;
14741
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
14742
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14744
# check trigger-5 success: 1
14745
DROP TRIGGER trg_1;
14746
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14747
f_int2 = CAST(f_char1 AS SIGNED INT),
14748
f_charbig = 'just inserted'
14749
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14751
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14752
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14753
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14754
'just inserted' FROM t0_template
14755
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14756
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
14758
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14759
f_charbig = 'updated by trigger'
14760
WHERE f_int1 = - old.f_int1;
14762
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
14763
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14765
# check trigger-6 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 BEFORE DELETE 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 = - old.f_int1;
14784
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14786
# check trigger-7 success: 1
14787
DROP TRIGGER trg_1;
14788
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14789
f_int2 = CAST(f_char1 AS SIGNED INT),
14790
f_charbig = 'just inserted'
14791
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14793
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14794
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14795
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14796
'just inserted' FROM t0_template
14797
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14798
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
14800
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14801
f_charbig = 'updated by trigger'
14802
WHERE f_int1 = - old.f_int1;
14805
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14807
# check trigger-8 success: 1
14808
DROP TRIGGER trg_1;
14809
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14810
f_int2 = CAST(f_char1 AS SIGNED INT),
14811
f_charbig = 'just inserted'
14812
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14814
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14816
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14817
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
14819
SET new.f_int1 = old.f_int1 + @max_row,
14820
new.f_int2 = old.f_int2 - @max_row,
14821
new.f_charbig = '####updated per update trigger####';
14824
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
14825
f_charbig = '####updated per update statement itself####';
14827
# check trigger-9 success: 1
14828
DROP TRIGGER trg_2;
14829
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14830
f_int2 = CAST(f_char1 AS SIGNED INT),
14831
f_charbig = CONCAT('===',f_char1,'===');
14832
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
14834
SET new.f_int1 = new.f_int1 + @max_row,
14835
new.f_int2 = new.f_int2 - @max_row,
14836
new.f_charbig = '####updated per update trigger####';
14839
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
14840
f_charbig = '####updated per update statement itself####';
14842
# check trigger-10 success: 1
14843
DROP TRIGGER trg_2;
14844
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14845
f_int2 = CAST(f_char1 AS SIGNED INT),
14846
f_charbig = CONCAT('===',f_char1,'===');
14847
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
14849
SET new.f_int1 = @my_max1 + @counter,
14850
new.f_int2 = @my_min2 - @counter,
14851
new.f_charbig = '####updated per insert trigger####';
14852
SET @counter = @counter + 1;
14855
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
14856
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14857
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
14858
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
14859
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
14861
DROP TRIGGER trg_3;
14863
# check trigger-11 success: 1
14865
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
14866
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
14867
AND f_charbig = '####updated per insert trigger####';
14868
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
14870
SET new.f_int1 = @my_max1 + @counter,
14871
new.f_int2 = @my_min2 - @counter,
14872
new.f_charbig = '####updated per insert trigger####';
14873
SET @counter = @counter + 1;
14876
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
14877
INSERT INTO t1 (f_char1, f_char2, f_charbig)
14878
SELECT CAST(f_int1 AS CHAR),
14879
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
14880
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
14882
DROP TRIGGER trg_3;
14884
# check trigger-12 success: 1
14886
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
14887
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
14888
AND f_charbig = '####updated per insert trigger####';
14890
Table Op Msg_type Msg_text
14891
test.t1 analyze status OK
14892
CHECK TABLE t1 EXTENDED;
14893
Table Op Msg_type Msg_text
14894
test.t1 check status OK
14895
CHECKSUM TABLE t1 EXTENDED;
14897
test.t1 <some_value>
14899
Table Op Msg_type Msg_text
14900
test.t1 optimize status OK
14901
# check layout success: 1
14902
REPAIR TABLE t1 EXTENDED;
14903
Table Op Msg_type Msg_text
14904
test.t1 repair status OK
14905
# check layout success: 1
14908
# check TRUNCATE success: 1
14909
# check layout success: 1
14910
# End usability test (inc/partition_check.inc)
14917
f_charbig VARCHAR(1000)
14920
PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
14921
(PARTITION part1 VALUES LESS THAN (0)
14922
(SUBPARTITION subpart11, SUBPARTITION subpart12),
14923
PARTITION part2 VALUES LESS THAN (5)
14924
(SUBPARTITION subpart21, SUBPARTITION subpart22),
14925
PARTITION part3 VALUES LESS THAN (10)
14926
(SUBPARTITION subpart31, SUBPARTITION subpart32),
14927
PARTITION part4 VALUES LESS THAN (2147483646)
14928
(SUBPARTITION subpart41, SUBPARTITION subpart42));
14929
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
14930
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
14931
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
14932
ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
14933
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
14934
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
14935
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
14936
# Start usability test (inc/partition_check.inc)
14938
SHOW CREATE TABLE t1;
14940
t1 CREATE TABLE `t1` (
14941
`f_int1` bigint(20) DEFAULT NULL,
14942
`f_int2` bigint(20) DEFAULT NULL,
14943
`f_char1` char(20) DEFAULT NULL,
14944
`f_char2` char(20) DEFAULT NULL,
14945
`f_charbig` varchar(1000) DEFAULT NULL
14946
) ENGINE=MyISAM DEFAULT CHARSET=latin1
14947
/*!50100 PARTITION BY RANGE (f_int1)
14948
SUBPARTITION BY KEY (f_int1)
14949
(PARTITION part1 VALUES LESS THAN (0)
14950
(SUBPARTITION subpart11 ENGINE = MyISAM,
14951
SUBPARTITION subpart12 ENGINE = MyISAM),
14952
PARTITION part2 VALUES LESS THAN (5)
14953
(SUBPARTITION subpart21 ENGINE = MyISAM,
14954
SUBPARTITION subpart22 ENGINE = MyISAM),
14955
PARTITION part3 VALUES LESS THAN (10)
14956
(SUBPARTITION subpart31 ENGINE = MyISAM,
14957
SUBPARTITION subpart32 ENGINE = MyISAM),
14958
PARTITION part4 VALUES LESS THAN (2147483646)
14959
(SUBPARTITION subpart41 ENGINE = MyISAM,
14960
SUBPARTITION subpart42 ENGINE = MyISAM)) */
14963
t1#P#part1#SP#subpart11.MYD
14964
t1#P#part1#SP#subpart11.MYI
14965
t1#P#part1#SP#subpart12.MYD
14966
t1#P#part1#SP#subpart12.MYI
14967
t1#P#part2#SP#subpart21.MYD
14968
t1#P#part2#SP#subpart21.MYI
14969
t1#P#part2#SP#subpart22.MYD
14970
t1#P#part2#SP#subpart22.MYI
14971
t1#P#part3#SP#subpart31.MYD
14972
t1#P#part3#SP#subpart31.MYI
14973
t1#P#part3#SP#subpart32.MYD
14974
t1#P#part3#SP#subpart32.MYI
14975
t1#P#part4#SP#subpart41.MYD
14976
t1#P#part4#SP#subpart41.MYI
14977
t1#P#part4#SP#subpart42.MYD
14978
t1#P#part4#SP#subpart42.MYI
14982
# check prerequisites-1 success: 1
14983
# check COUNT(*) success: 1
14984
# check MIN/MAX(f_int1) success: 1
14985
# check MIN/MAX(f_int2) success: 1
14986
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14987
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
14988
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
14989
WHERE f_int1 IN (2,3);
14990
# check prerequisites-3 success: 1
14991
DELETE FROM t1 WHERE f_charbig = 'delete me';
14992
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
14993
# check read via f_int1 success: 1
14994
# check read via f_int2 success: 1
14996
# check multiple-1 success: 1
14997
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
14999
# check multiple-2 success: 1
15000
INSERT INTO t1 SELECT * FROM t0_template
15001
WHERE MOD(f_int1,3) = 0;
15003
# check multiple-3 success: 1
15004
UPDATE t1 SET f_int1 = f_int1 + @max_row
15005
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
15006
AND @max_row_div2 + @max_row_div4;
15008
# check multiple-4 success: 1
15010
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
15011
AND @max_row_div2 + @max_row_div4 + @max_row;
15013
# check multiple-5 success: 1
15014
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
15016
SET f_int1 = @cur_value , f_int2 = @cur_value,
15017
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
15018
f_charbig = '#SINGLE#';
15020
# check single-1 success: 1
15021
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
15023
SET f_int1 = @cur_value , f_int2 = @cur_value,
15024
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
15025
f_charbig = '#SINGLE#';
15027
# check single-2 success: 1
15028
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
15029
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
15030
UPDATE t1 SET f_int1 = @cur_value2
15031
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
15033
# check single-3 success: 1
15034
SET @cur_value1= -1;
15035
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
15036
UPDATE t1 SET f_int1 = @cur_value1
15037
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
15039
# check single-4 success: 1
15040
SELECT MAX(f_int1) INTO @cur_value FROM t1;
15041
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
15043
# check single-5 success: 1
15044
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
15046
# check single-6 success: 1
15047
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
15048
ERROR HY000: Table has no partition for value 2147483647
15049
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
15050
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
15051
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
15052
f_charbig = '#NULL#';
15054
SET f_int1 = NULL , f_int2 = -@max_row,
15055
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
15056
f_charbig = '#NULL#';
15057
# check null success: 1
15059
# check null-1 success: 1
15060
UPDATE t1 SET f_int1 = -@max_row
15061
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
15062
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
15064
# check null-2 success: 1
15065
UPDATE t1 SET f_int1 = NULL
15066
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
15067
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
15069
# check null-3 success: 1
15071
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
15072
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
15074
# check null-4 success: 1
15076
WHERE f_int1 = 0 AND f_int2 = 0
15077
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
15078
AND f_charbig = '#NULL#';
15080
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15081
SELECT f_int1, f_int1, '', '', 'was inserted'
15082
FROM t0_template source_tab
15083
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
15085
# check transactions-1 success: 1
15088
# check transactions-2 success: 1
15091
# check transactions-3 success: 1
15092
DELETE FROM t1 WHERE f_charbig = 'was inserted';
15096
# check transactions-4 success: 1
15097
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15098
SELECT f_int1, f_int1, '', '', 'was inserted'
15099
FROM t0_template source_tab
15100
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
15102
# check transactions-5 success: 1
15105
Warning 1196 Some non-transactional changed tables couldn't be rolled back
15107
# check transactions-6 success: 1
15108
# INFO: Storage engine used for t1 seems to be not transactional.
15111
# check transactions-7 success: 1
15112
DELETE FROM t1 WHERE f_charbig = 'was inserted';
15114
SET @@session.sql_mode = 'traditional';
15115
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
15116
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15117
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
15118
'', '', 'was inserted' FROM t0_template
15119
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
15120
ERROR 22012: Division by 0
15123
# check transactions-8 success: 1
15124
# INFO: Storage engine used for t1 seems to be unable to revert
15125
# changes made by the failing statement.
15126
SET @@session.sql_mode = '';
15128
DELETE FROM t1 WHERE f_charbig = 'was inserted';
15130
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
15132
# check special-1 success: 1
15133
UPDATE t1 SET f_charbig = '';
15135
# check special-2 success: 1
15136
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
15137
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15138
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
15139
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15140
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15141
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15142
'just inserted' FROM t0_template
15143
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15144
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
15146
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15147
f_charbig = 'updated by trigger'
15148
WHERE f_int1 = new.f_int1;
15150
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15151
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
15152
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15154
# check trigger-1 success: 1
15155
DROP TRIGGER trg_1;
15156
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15157
f_int2 = CAST(f_char1 AS SIGNED INT),
15158
f_charbig = 'just inserted'
15159
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15161
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15162
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15163
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15164
'just inserted' FROM t0_template
15165
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15166
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
15168
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15169
f_charbig = 'updated by trigger'
15170
WHERE f_int1 = new.f_int1;
15172
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15173
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
15174
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15176
# check trigger-2 success: 1
15177
DROP TRIGGER trg_1;
15178
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15179
f_int2 = CAST(f_char1 AS SIGNED INT),
15180
f_charbig = 'just inserted'
15181
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15183
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15184
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15185
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15186
'just inserted' FROM t0_template
15187
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15188
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
15190
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15191
f_charbig = 'updated by trigger'
15192
WHERE f_int1 = new.f_int1;
15194
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
15195
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15197
# check trigger-3 success: 1
15198
DROP TRIGGER trg_1;
15199
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15200
f_int2 = CAST(f_char1 AS SIGNED INT),
15201
f_charbig = 'just inserted'
15202
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15204
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15205
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15206
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15207
'just inserted' FROM t0_template
15208
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15209
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
15211
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15212
f_charbig = 'updated by trigger'
15213
WHERE f_int1 = - old.f_int1;
15215
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
15216
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15218
# check trigger-4 success: 1
15219
DROP TRIGGER trg_1;
15220
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15221
f_int2 = CAST(f_char1 AS SIGNED INT),
15222
f_charbig = 'just inserted'
15223
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15225
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15226
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15227
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15228
'just inserted' FROM t0_template
15229
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15230
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
15232
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15233
f_charbig = 'updated by trigger'
15234
WHERE f_int1 = new.f_int1;
15236
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
15237
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15239
# check trigger-5 success: 1
15240
DROP TRIGGER trg_1;
15241
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15242
f_int2 = CAST(f_char1 AS SIGNED INT),
15243
f_charbig = 'just inserted'
15244
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15246
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15247
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15248
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15249
'just inserted' FROM t0_template
15250
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15251
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
15253
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15254
f_charbig = 'updated by trigger'
15255
WHERE f_int1 = - old.f_int1;
15257
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
15258
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15260
# check trigger-6 success: 1
15261
DROP TRIGGER trg_1;
15262
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15263
f_int2 = CAST(f_char1 AS SIGNED INT),
15264
f_charbig = 'just inserted'
15265
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15267
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15268
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15269
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15270
'just inserted' FROM t0_template
15271
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15272
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
15274
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15275
f_charbig = 'updated by trigger'
15276
WHERE f_int1 = - old.f_int1;
15279
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15281
# check trigger-7 success: 1
15282
DROP TRIGGER trg_1;
15283
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15284
f_int2 = CAST(f_char1 AS SIGNED INT),
15285
f_charbig = 'just inserted'
15286
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15288
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15289
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15290
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15291
'just inserted' FROM t0_template
15292
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15293
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
15295
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15296
f_charbig = 'updated by trigger'
15297
WHERE f_int1 = - old.f_int1;
15300
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15302
# check trigger-8 success: 1
15303
DROP TRIGGER trg_1;
15304
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15305
f_int2 = CAST(f_char1 AS SIGNED INT),
15306
f_charbig = 'just inserted'
15307
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15309
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15311
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15312
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
15314
SET new.f_int1 = old.f_int1 + @max_row,
15315
new.f_int2 = old.f_int2 - @max_row,
15316
new.f_charbig = '####updated per update trigger####';
15319
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
15320
f_charbig = '####updated per update statement itself####';
15322
# check trigger-9 success: 1
15323
DROP TRIGGER trg_2;
15324
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15325
f_int2 = CAST(f_char1 AS SIGNED INT),
15326
f_charbig = CONCAT('===',f_char1,'===');
15327
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
15329
SET new.f_int1 = new.f_int1 + @max_row,
15330
new.f_int2 = new.f_int2 - @max_row,
15331
new.f_charbig = '####updated per update trigger####';
15334
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
15335
f_charbig = '####updated per update statement itself####';
15337
# check trigger-10 success: 1
15338
DROP TRIGGER trg_2;
15339
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15340
f_int2 = CAST(f_char1 AS SIGNED INT),
15341
f_charbig = CONCAT('===',f_char1,'===');
15342
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
15344
SET new.f_int1 = @my_max1 + @counter,
15345
new.f_int2 = @my_min2 - @counter,
15346
new.f_charbig = '####updated per insert trigger####';
15347
SET @counter = @counter + 1;
15350
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
15351
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15352
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
15353
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
15354
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
15356
DROP TRIGGER trg_3;
15358
# check trigger-11 success: 1
15360
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
15361
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
15362
AND f_charbig = '####updated per insert trigger####';
15363
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
15365
SET new.f_int1 = @my_max1 + @counter,
15366
new.f_int2 = @my_min2 - @counter,
15367
new.f_charbig = '####updated per insert trigger####';
15368
SET @counter = @counter + 1;
15371
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
15372
INSERT INTO t1 (f_char1, f_char2, f_charbig)
15373
SELECT CAST(f_int1 AS CHAR),
15374
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
15375
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
15377
DROP TRIGGER trg_3;
15379
# check trigger-12 success: 1
15381
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
15382
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
15383
AND f_charbig = '####updated per insert trigger####';
15385
Table Op Msg_type Msg_text
15386
test.t1 analyze status OK
15387
CHECK TABLE t1 EXTENDED;
15388
Table Op Msg_type Msg_text
15389
test.t1 check status OK
15390
CHECKSUM TABLE t1 EXTENDED;
15392
test.t1 <some_value>
15394
Table Op Msg_type Msg_text
15395
test.t1 optimize status OK
15396
# check layout success: 1
15397
REPAIR TABLE t1 EXTENDED;
15398
Table Op Msg_type Msg_text
15399
test.t1 repair status OK
15400
# check layout success: 1
15403
# check TRUNCATE success: 1
15404
# check layout success: 1
15405
# End usability test (inc/partition_check.inc)
15412
f_charbig VARCHAR(1000)
15415
PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
15416
(PARTITION part1 VALUES IN (0)
15417
(SUBPARTITION sp11, SUBPARTITION sp12),
15418
PARTITION part2 VALUES IN (1)
15419
(SUBPARTITION sp21, SUBPARTITION sp22),
15420
PARTITION part3 VALUES IN (2)
15421
(SUBPARTITION sp31, SUBPARTITION sp32),
15422
PARTITION part4 VALUES IN (NULL)
15423
(SUBPARTITION sp41, SUBPARTITION sp42));
15424
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15425
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
15426
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
15427
ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
15428
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15429
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
15430
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
15431
# Start usability test (inc/partition_check.inc)
15433
SHOW CREATE TABLE t1;
15435
t1 CREATE TABLE `t1` (
15436
`f_int1` bigint(20) DEFAULT NULL,
15437
`f_int2` bigint(20) DEFAULT NULL,
15438
`f_char1` char(20) DEFAULT NULL,
15439
`f_char2` char(20) DEFAULT NULL,
15440
`f_charbig` varchar(1000) DEFAULT NULL
15441
) ENGINE=MyISAM DEFAULT CHARSET=latin1
15442
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
15443
SUBPARTITION BY HASH (f_int1 + 1)
15444
(PARTITION part1 VALUES IN (0)
15445
(SUBPARTITION sp11 ENGINE = MyISAM,
15446
SUBPARTITION sp12 ENGINE = MyISAM),
15447
PARTITION part2 VALUES IN (1)
15448
(SUBPARTITION sp21 ENGINE = MyISAM,
15449
SUBPARTITION sp22 ENGINE = MyISAM),
15450
PARTITION part3 VALUES IN (2)
15451
(SUBPARTITION sp31 ENGINE = MyISAM,
15452
SUBPARTITION sp32 ENGINE = MyISAM),
15453
PARTITION part4 VALUES IN (NULL)
15454
(SUBPARTITION sp41 ENGINE = MyISAM,
15455
SUBPARTITION sp42 ENGINE = MyISAM)) */
15458
t1#P#part1#SP#sp11.MYD
15459
t1#P#part1#SP#sp11.MYI
15460
t1#P#part1#SP#sp12.MYD
15461
t1#P#part1#SP#sp12.MYI
15462
t1#P#part2#SP#sp21.MYD
15463
t1#P#part2#SP#sp21.MYI
15464
t1#P#part2#SP#sp22.MYD
15465
t1#P#part2#SP#sp22.MYI
15466
t1#P#part3#SP#sp31.MYD
15467
t1#P#part3#SP#sp31.MYI
15468
t1#P#part3#SP#sp32.MYD
15469
t1#P#part3#SP#sp32.MYI
15470
t1#P#part4#SP#sp41.MYD
15471
t1#P#part4#SP#sp41.MYI
15472
t1#P#part4#SP#sp42.MYD
15473
t1#P#part4#SP#sp42.MYI
15477
# check prerequisites-1 success: 1
15478
# check COUNT(*) success: 1
15479
# check MIN/MAX(f_int1) success: 1
15480
# check MIN/MAX(f_int2) success: 1
15481
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15482
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
15483
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
15484
WHERE f_int1 IN (2,3);
15485
# check prerequisites-3 success: 1
15486
DELETE FROM t1 WHERE f_charbig = 'delete me';
15487
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
15488
# check read via f_int1 success: 1
15489
# check read via f_int2 success: 1
15491
# check multiple-1 success: 1
15492
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
15494
# check multiple-2 success: 1
15495
INSERT INTO t1 SELECT * FROM t0_template
15496
WHERE MOD(f_int1,3) = 0;
15498
# check multiple-3 success: 1
15499
UPDATE t1 SET f_int1 = f_int1 + @max_row
15500
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
15501
AND @max_row_div2 + @max_row_div4;
15503
# check multiple-4 success: 1
15505
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
15506
AND @max_row_div2 + @max_row_div4 + @max_row;
15508
# check multiple-5 success: 1
15509
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
15511
SET f_int1 = @cur_value , f_int2 = @cur_value,
15512
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
15513
f_charbig = '#SINGLE#';
15515
# check single-1 success: 1
15516
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
15518
SET f_int1 = @cur_value , f_int2 = @cur_value,
15519
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
15520
f_charbig = '#SINGLE#';
15522
# check single-2 success: 1
15523
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
15524
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
15525
UPDATE t1 SET f_int1 = @cur_value2
15526
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
15528
# check single-3 success: 1
15529
SET @cur_value1= -1;
15530
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
15531
UPDATE t1 SET f_int1 = @cur_value1
15532
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
15534
# check single-4 success: 1
15535
SELECT MAX(f_int1) INTO @cur_value FROM t1;
15536
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
15538
# check single-5 success: 1
15539
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
15541
# check single-6 success: 1
15542
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
15544
# check single-7 success: 1
15545
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
15546
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
15547
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
15548
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
15549
f_charbig = '#NULL#';
15551
SET f_int1 = NULL , f_int2 = -@max_row,
15552
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
15553
f_charbig = '#NULL#';
15554
# check null success: 1
15556
# check null-1 success: 1
15557
UPDATE t1 SET f_int1 = -@max_row
15558
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
15559
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
15561
# check null-2 success: 1
15562
UPDATE t1 SET f_int1 = NULL
15563
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
15564
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
15566
# check null-3 success: 1
15568
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
15569
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
15571
# check null-4 success: 1
15573
WHERE f_int1 = 0 AND f_int2 = 0
15574
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
15575
AND f_charbig = '#NULL#';
15577
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15578
SELECT f_int1, f_int1, '', '', 'was inserted'
15579
FROM t0_template source_tab
15580
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
15582
# check transactions-1 success: 1
15585
# check transactions-2 success: 1
15588
# check transactions-3 success: 1
15589
DELETE FROM t1 WHERE f_charbig = 'was inserted';
15593
# check transactions-4 success: 1
15594
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15595
SELECT f_int1, f_int1, '', '', 'was inserted'
15596
FROM t0_template source_tab
15597
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
15599
# check transactions-5 success: 1
15602
Warning 1196 Some non-transactional changed tables couldn't be rolled back
15604
# check transactions-6 success: 1
15605
# INFO: Storage engine used for t1 seems to be not transactional.
15608
# check transactions-7 success: 1
15609
DELETE FROM t1 WHERE f_charbig = 'was inserted';
15611
SET @@session.sql_mode = 'traditional';
15612
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
15613
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15614
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
15615
'', '', 'was inserted' FROM t0_template
15616
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
15617
ERROR 22012: Division by 0
15620
# check transactions-8 success: 1
15621
# INFO: Storage engine used for t1 seems to be unable to revert
15622
# changes made by the failing statement.
15623
SET @@session.sql_mode = '';
15625
DELETE FROM t1 WHERE f_charbig = 'was inserted';
15627
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
15629
# check special-1 success: 1
15630
UPDATE t1 SET f_charbig = '';
15632
# check special-2 success: 1
15633
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
15634
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15635
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
15636
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15637
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15638
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15639
'just inserted' FROM t0_template
15640
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15641
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
15643
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15644
f_charbig = 'updated by trigger'
15645
WHERE f_int1 = new.f_int1;
15647
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15648
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
15649
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15651
# check trigger-1 success: 1
15652
DROP TRIGGER trg_1;
15653
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15654
f_int2 = CAST(f_char1 AS SIGNED INT),
15655
f_charbig = 'just inserted'
15656
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15658
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15659
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15660
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15661
'just inserted' FROM t0_template
15662
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15663
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
15665
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15666
f_charbig = 'updated by trigger'
15667
WHERE f_int1 = new.f_int1;
15669
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15670
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
15671
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15673
# check trigger-2 success: 1
15674
DROP TRIGGER trg_1;
15675
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15676
f_int2 = CAST(f_char1 AS SIGNED INT),
15677
f_charbig = 'just inserted'
15678
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15680
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15681
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15682
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15683
'just inserted' FROM t0_template
15684
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15685
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
15687
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15688
f_charbig = 'updated by trigger'
15689
WHERE f_int1 = new.f_int1;
15691
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
15692
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15694
# check trigger-3 success: 1
15695
DROP TRIGGER trg_1;
15696
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15697
f_int2 = CAST(f_char1 AS SIGNED INT),
15698
f_charbig = 'just inserted'
15699
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15701
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15702
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15703
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15704
'just inserted' FROM t0_template
15705
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15706
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
15708
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15709
f_charbig = 'updated by trigger'
15710
WHERE f_int1 = - old.f_int1;
15712
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
15713
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15715
# check trigger-4 success: 1
15716
DROP TRIGGER trg_1;
15717
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15718
f_int2 = CAST(f_char1 AS SIGNED INT),
15719
f_charbig = 'just inserted'
15720
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15722
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15723
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15724
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15725
'just inserted' FROM t0_template
15726
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15727
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
15729
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15730
f_charbig = 'updated by trigger'
15731
WHERE f_int1 = new.f_int1;
15733
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
15734
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15736
# check trigger-5 success: 1
15737
DROP TRIGGER trg_1;
15738
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15739
f_int2 = CAST(f_char1 AS SIGNED INT),
15740
f_charbig = 'just inserted'
15741
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15743
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15744
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15745
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15746
'just inserted' FROM t0_template
15747
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15748
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
15750
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15751
f_charbig = 'updated by trigger'
15752
WHERE f_int1 = - old.f_int1;
15754
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
15755
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15757
# check trigger-6 success: 1
15758
DROP TRIGGER trg_1;
15759
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15760
f_int2 = CAST(f_char1 AS SIGNED INT),
15761
f_charbig = 'just inserted'
15762
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15764
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15765
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15766
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15767
'just inserted' FROM t0_template
15768
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15769
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
15771
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15772
f_charbig = 'updated by trigger'
15773
WHERE f_int1 = - old.f_int1;
15776
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15778
# check trigger-7 success: 1
15779
DROP TRIGGER trg_1;
15780
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15781
f_int2 = CAST(f_char1 AS SIGNED INT),
15782
f_charbig = 'just inserted'
15783
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15785
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15786
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15787
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15788
'just inserted' FROM t0_template
15789
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15790
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
15792
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15793
f_charbig = 'updated by trigger'
15794
WHERE f_int1 = - old.f_int1;
15797
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15799
# check trigger-8 success: 1
15800
DROP TRIGGER trg_1;
15801
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15802
f_int2 = CAST(f_char1 AS SIGNED INT),
15803
f_charbig = 'just inserted'
15804
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15806
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15808
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15809
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
15811
SET new.f_int1 = old.f_int1 + @max_row,
15812
new.f_int2 = old.f_int2 - @max_row,
15813
new.f_charbig = '####updated per update trigger####';
15816
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
15817
f_charbig = '####updated per update statement itself####';
15819
# check trigger-9 success: 1
15820
DROP TRIGGER trg_2;
15821
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15822
f_int2 = CAST(f_char1 AS SIGNED INT),
15823
f_charbig = CONCAT('===',f_char1,'===');
15824
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
15826
SET new.f_int1 = new.f_int1 + @max_row,
15827
new.f_int2 = new.f_int2 - @max_row,
15828
new.f_charbig = '####updated per update trigger####';
15831
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
15832
f_charbig = '####updated per update statement itself####';
15834
# check trigger-10 success: 1
15835
DROP TRIGGER trg_2;
15836
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15837
f_int2 = CAST(f_char1 AS SIGNED INT),
15838
f_charbig = CONCAT('===',f_char1,'===');
15839
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
15841
SET new.f_int1 = @my_max1 + @counter,
15842
new.f_int2 = @my_min2 - @counter,
15843
new.f_charbig = '####updated per insert trigger####';
15844
SET @counter = @counter + 1;
15847
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
15848
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15849
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
15850
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
15851
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
15853
DROP TRIGGER trg_3;
15855
# check trigger-11 success: 1
15857
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
15858
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
15859
AND f_charbig = '####updated per insert trigger####';
15860
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
15862
SET new.f_int1 = @my_max1 + @counter,
15863
new.f_int2 = @my_min2 - @counter,
15864
new.f_charbig = '####updated per insert trigger####';
15865
SET @counter = @counter + 1;
15868
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
15869
INSERT INTO t1 (f_char1, f_char2, f_charbig)
15870
SELECT CAST(f_int1 AS CHAR),
15871
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
15872
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
15874
DROP TRIGGER trg_3;
15876
# check trigger-12 success: 1
15878
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
15879
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
15880
AND f_charbig = '####updated per insert trigger####';
15882
Table Op Msg_type Msg_text
15883
test.t1 analyze status OK
15884
CHECK TABLE t1 EXTENDED;
15885
Table Op Msg_type Msg_text
15886
test.t1 check status OK
15887
CHECKSUM TABLE t1 EXTENDED;
15889
test.t1 <some_value>
15891
Table Op Msg_type Msg_text
15892
test.t1 optimize status OK
15893
# check layout success: 1
15894
REPAIR TABLE t1 EXTENDED;
15895
Table Op Msg_type Msg_text
15896
test.t1 repair status OK
15897
# check layout success: 1
15900
# check TRUNCATE success: 1
15901
# check layout success: 1
15902
# End usability test (inc/partition_check.inc)
15909
f_charbig VARCHAR(1000)
15912
PARTITION BY LIST(ABS(MOD(f_int1,2)))
15913
SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
15914
(PARTITION part1 VALUES IN (0),
15915
PARTITION part2 VALUES IN (1),
15916
PARTITION part3 VALUES IN (NULL));
15917
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15918
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
15919
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
15920
ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
15921
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15922
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
15923
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
15924
# Start usability test (inc/partition_check.inc)
15926
SHOW CREATE TABLE t1;
15928
t1 CREATE TABLE `t1` (
15929
`f_int1` bigint(20) DEFAULT NULL,
15930
`f_int2` bigint(20) DEFAULT NULL,
15931
`f_char1` char(20) DEFAULT NULL,
15932
`f_char2` char(20) DEFAULT NULL,
15933
`f_charbig` varchar(1000) DEFAULT NULL
15934
) ENGINE=MyISAM DEFAULT CHARSET=latin1
15935
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
15936
SUBPARTITION BY KEY (f_int1)
15938
(PARTITION part1 VALUES IN (0) ENGINE = MyISAM,
15939
PARTITION part2 VALUES IN (1) ENGINE = MyISAM,
15940
PARTITION part3 VALUES IN (NULL) ENGINE = MyISAM) */
15943
t1#P#part1#SP#part1sp0.MYD
15944
t1#P#part1#SP#part1sp0.MYI
15945
t1#P#part1#SP#part1sp1.MYD
15946
t1#P#part1#SP#part1sp1.MYI
15947
t1#P#part1#SP#part1sp2.MYD
15948
t1#P#part1#SP#part1sp2.MYI
15949
t1#P#part2#SP#part2sp0.MYD
15950
t1#P#part2#SP#part2sp0.MYI
15951
t1#P#part2#SP#part2sp1.MYD
15952
t1#P#part2#SP#part2sp1.MYI
15953
t1#P#part2#SP#part2sp2.MYD
15954
t1#P#part2#SP#part2sp2.MYI
15955
t1#P#part3#SP#part3sp0.MYD
15956
t1#P#part3#SP#part3sp0.MYI
15957
t1#P#part3#SP#part3sp1.MYD
15958
t1#P#part3#SP#part3sp1.MYI
15959
t1#P#part3#SP#part3sp2.MYD
15960
t1#P#part3#SP#part3sp2.MYI
15964
# check prerequisites-1 success: 1
15965
# check COUNT(*) success: 1
15966
# check MIN/MAX(f_int1) success: 1
15967
# check MIN/MAX(f_int2) success: 1
15968
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15969
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
15970
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
15971
WHERE f_int1 IN (2,3);
15972
# check prerequisites-3 success: 1
15973
DELETE FROM t1 WHERE f_charbig = 'delete me';
15974
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
15975
# check read via f_int1 success: 1
15976
# check read via f_int2 success: 1
15978
# check multiple-1 success: 1
15979
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
15981
# check multiple-2 success: 1
15982
INSERT INTO t1 SELECT * FROM t0_template
15983
WHERE MOD(f_int1,3) = 0;
15985
# check multiple-3 success: 1
15986
UPDATE t1 SET f_int1 = f_int1 + @max_row
15987
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
15988
AND @max_row_div2 + @max_row_div4;
15990
# check multiple-4 success: 1
15992
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
15993
AND @max_row_div2 + @max_row_div4 + @max_row;
15995
# check multiple-5 success: 1
15996
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
15998
SET f_int1 = @cur_value , f_int2 = @cur_value,
15999
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
16000
f_charbig = '#SINGLE#';
16002
# check single-1 success: 1
16003
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
16005
SET f_int1 = @cur_value , f_int2 = @cur_value,
16006
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
16007
f_charbig = '#SINGLE#';
16009
# check single-2 success: 1
16010
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
16011
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
16012
UPDATE t1 SET f_int1 = @cur_value2
16013
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
16015
# check single-3 success: 1
16016
SET @cur_value1= -1;
16017
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
16018
UPDATE t1 SET f_int1 = @cur_value1
16019
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
16021
# check single-4 success: 1
16022
SELECT MAX(f_int1) INTO @cur_value FROM t1;
16023
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
16025
# check single-5 success: 1
16026
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
16028
# check single-6 success: 1
16029
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
16031
# check single-7 success: 1
16032
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
16033
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
16034
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
16035
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
16036
f_charbig = '#NULL#';
16038
SET f_int1 = NULL , f_int2 = -@max_row,
16039
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
16040
f_charbig = '#NULL#';
16041
# check null success: 1
16043
# check null-1 success: 1
16044
UPDATE t1 SET f_int1 = -@max_row
16045
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
16046
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
16048
# check null-2 success: 1
16049
UPDATE t1 SET f_int1 = NULL
16050
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
16051
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
16053
# check null-3 success: 1
16055
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
16056
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
16058
# check null-4 success: 1
16060
WHERE f_int1 = 0 AND f_int2 = 0
16061
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
16062
AND f_charbig = '#NULL#';
16064
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16065
SELECT f_int1, f_int1, '', '', 'was inserted'
16066
FROM t0_template source_tab
16067
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
16069
# check transactions-1 success: 1
16072
# check transactions-2 success: 1
16075
# check transactions-3 success: 1
16076
DELETE FROM t1 WHERE f_charbig = 'was inserted';
16080
# check transactions-4 success: 1
16081
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16082
SELECT f_int1, f_int1, '', '', 'was inserted'
16083
FROM t0_template source_tab
16084
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
16086
# check transactions-5 success: 1
16089
Warning 1196 Some non-transactional changed tables couldn't be rolled back
16091
# check transactions-6 success: 1
16092
# INFO: Storage engine used for t1 seems to be not transactional.
16095
# check transactions-7 success: 1
16096
DELETE FROM t1 WHERE f_charbig = 'was inserted';
16098
SET @@session.sql_mode = 'traditional';
16099
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
16100
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16101
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
16102
'', '', 'was inserted' FROM t0_template
16103
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
16104
ERROR 22012: Division by 0
16107
# check transactions-8 success: 1
16108
# INFO: Storage engine used for t1 seems to be unable to revert
16109
# changes made by the failing statement.
16110
SET @@session.sql_mode = '';
16112
DELETE FROM t1 WHERE f_charbig = 'was inserted';
16114
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
16116
# check special-1 success: 1
16117
UPDATE t1 SET f_charbig = '';
16119
# check special-2 success: 1
16120
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
16121
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
16122
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
16123
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16124
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16125
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16126
'just inserted' FROM t0_template
16127
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16128
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
16130
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16131
f_charbig = 'updated by trigger'
16132
WHERE f_int1 = new.f_int1;
16134
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16135
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
16136
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16138
# check trigger-1 success: 1
16139
DROP TRIGGER trg_1;
16140
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16141
f_int2 = CAST(f_char1 AS SIGNED INT),
16142
f_charbig = 'just inserted'
16143
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16145
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16146
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16147
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16148
'just inserted' FROM t0_template
16149
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16150
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
16152
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16153
f_charbig = 'updated by trigger'
16154
WHERE f_int1 = new.f_int1;
16156
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16157
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
16158
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16160
# check trigger-2 success: 1
16161
DROP TRIGGER trg_1;
16162
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16163
f_int2 = CAST(f_char1 AS SIGNED INT),
16164
f_charbig = 'just inserted'
16165
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16167
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16168
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16169
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16170
'just inserted' FROM t0_template
16171
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16172
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
16174
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16175
f_charbig = 'updated by trigger'
16176
WHERE f_int1 = new.f_int1;
16178
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
16179
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16181
# check trigger-3 success: 1
16182
DROP TRIGGER trg_1;
16183
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16184
f_int2 = CAST(f_char1 AS SIGNED INT),
16185
f_charbig = 'just inserted'
16186
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16188
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16189
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16190
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16191
'just inserted' FROM t0_template
16192
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16193
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
16195
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16196
f_charbig = 'updated by trigger'
16197
WHERE f_int1 = - old.f_int1;
16199
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
16200
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16202
# check trigger-4 success: 1
16203
DROP TRIGGER trg_1;
16204
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16205
f_int2 = CAST(f_char1 AS SIGNED INT),
16206
f_charbig = 'just inserted'
16207
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16209
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16210
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16211
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16212
'just inserted' FROM t0_template
16213
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16214
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
16216
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16217
f_charbig = 'updated by trigger'
16218
WHERE f_int1 = new.f_int1;
16220
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
16221
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16223
# check trigger-5 success: 1
16224
DROP TRIGGER trg_1;
16225
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16226
f_int2 = CAST(f_char1 AS SIGNED INT),
16227
f_charbig = 'just inserted'
16228
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16230
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16231
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16232
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16233
'just inserted' FROM t0_template
16234
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16235
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
16237
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16238
f_charbig = 'updated by trigger'
16239
WHERE f_int1 = - old.f_int1;
16241
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
16242
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16244
# check trigger-6 success: 1
16245
DROP TRIGGER trg_1;
16246
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16247
f_int2 = CAST(f_char1 AS SIGNED INT),
16248
f_charbig = 'just inserted'
16249
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16251
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16252
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16253
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16254
'just inserted' FROM t0_template
16255
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16256
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
16258
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16259
f_charbig = 'updated by trigger'
16260
WHERE f_int1 = - old.f_int1;
16263
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16265
# check trigger-7 success: 1
16266
DROP TRIGGER trg_1;
16267
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16268
f_int2 = CAST(f_char1 AS SIGNED INT),
16269
f_charbig = 'just inserted'
16270
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16272
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16273
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16274
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16275
'just inserted' FROM t0_template
16276
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16277
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
16279
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16280
f_charbig = 'updated by trigger'
16281
WHERE f_int1 = - old.f_int1;
16284
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16286
# check trigger-8 success: 1
16287
DROP TRIGGER trg_1;
16288
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16289
f_int2 = CAST(f_char1 AS SIGNED INT),
16290
f_charbig = 'just inserted'
16291
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16293
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16295
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16296
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
16298
SET new.f_int1 = old.f_int1 + @max_row,
16299
new.f_int2 = old.f_int2 - @max_row,
16300
new.f_charbig = '####updated per update trigger####';
16303
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
16304
f_charbig = '####updated per update statement itself####';
16306
# check trigger-9 success: 1
16307
DROP TRIGGER trg_2;
16308
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16309
f_int2 = CAST(f_char1 AS SIGNED INT),
16310
f_charbig = CONCAT('===',f_char1,'===');
16311
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
16313
SET new.f_int1 = new.f_int1 + @max_row,
16314
new.f_int2 = new.f_int2 - @max_row,
16315
new.f_charbig = '####updated per update trigger####';
16318
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
16319
f_charbig = '####updated per update statement itself####';
16321
# check trigger-10 success: 1
16322
DROP TRIGGER trg_2;
16323
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16324
f_int2 = CAST(f_char1 AS SIGNED INT),
16325
f_charbig = CONCAT('===',f_char1,'===');
16326
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
16328
SET new.f_int1 = @my_max1 + @counter,
16329
new.f_int2 = @my_min2 - @counter,
16330
new.f_charbig = '####updated per insert trigger####';
16331
SET @counter = @counter + 1;
16334
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
16335
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16336
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
16337
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
16338
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
16340
DROP TRIGGER trg_3;
16342
# check trigger-11 success: 1
16344
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
16345
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
16346
AND f_charbig = '####updated per insert trigger####';
16347
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
16349
SET new.f_int1 = @my_max1 + @counter,
16350
new.f_int2 = @my_min2 - @counter,
16351
new.f_charbig = '####updated per insert trigger####';
16352
SET @counter = @counter + 1;
16355
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
16356
INSERT INTO t1 (f_char1, f_char2, f_charbig)
16357
SELECT CAST(f_int1 AS CHAR),
16358
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
16359
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
16361
DROP TRIGGER trg_3;
16363
# check trigger-12 success: 1
16365
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
16366
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
16367
AND f_charbig = '####updated per insert trigger####';
16369
Table Op Msg_type Msg_text
16370
test.t1 analyze status OK
16371
CHECK TABLE t1 EXTENDED;
16372
Table Op Msg_type Msg_text
16373
test.t1 check status OK
16374
CHECKSUM TABLE t1 EXTENDED;
16376
test.t1 <some_value>
16378
Table Op Msg_type Msg_text
16379
test.t1 optimize status OK
16380
# check layout success: 1
16381
REPAIR TABLE t1 EXTENDED;
16382
Table Op Msg_type Msg_text
16383
test.t1 repair status OK
16384
# check layout success: 1
16387
# check TRUNCATE success: 1
16388
# check layout success: 1
16389
# End usability test (inc/partition_check.inc)
16391
DROP TABLE IF EXISTS t1;
16397
f_charbig VARCHAR(1000)
16400
PARTITION BY HASH(f_int1 + f_int2) PARTITIONS 2;
16401
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
16402
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
16403
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
16404
ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
16405
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
16406
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
16407
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
16408
# Start usability test (inc/partition_check.inc)
16410
SHOW CREATE TABLE t1;
16412
t1 CREATE TABLE `t1` (
16413
`f_int1` bigint(20) DEFAULT NULL,
16414
`f_int2` bigint(20) DEFAULT NULL,
16415
`f_char1` char(20) DEFAULT NULL,
16416
`f_char2` char(20) DEFAULT NULL,
16417
`f_charbig` varchar(1000) DEFAULT NULL
16418
) ENGINE=MyISAM DEFAULT CHARSET=latin1
16419
/*!50100 PARTITION BY HASH (f_int1 + f_int2)
16430
# check prerequisites-1 success: 1
16431
# check COUNT(*) success: 1
16432
# check MIN/MAX(f_int1) success: 1
16433
# check MIN/MAX(f_int2) success: 1
16434
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16435
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
16436
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
16437
WHERE f_int1 IN (2,3);
16438
# check prerequisites-3 success: 1
16439
DELETE FROM t1 WHERE f_charbig = 'delete me';
16440
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
16441
# check read via f_int1 success: 1
16442
# check read via f_int2 success: 1
16444
# check multiple-1 success: 1
16445
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
16447
# check multiple-2 success: 1
16448
INSERT INTO t1 SELECT * FROM t0_template
16449
WHERE MOD(f_int1,3) = 0;
16451
# check multiple-3 success: 1
16452
UPDATE t1 SET f_int1 = f_int1 + @max_row
16453
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
16454
AND @max_row_div2 + @max_row_div4;
16456
# check multiple-4 success: 1
16458
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
16459
AND @max_row_div2 + @max_row_div4 + @max_row;
16461
# check multiple-5 success: 1
16462
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
16464
SET f_int1 = @cur_value , f_int2 = @cur_value,
16465
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
16466
f_charbig = '#SINGLE#';
16468
# check single-1 success: 1
16469
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
16471
SET f_int1 = @cur_value , f_int2 = @cur_value,
16472
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
16473
f_charbig = '#SINGLE#';
16475
# check single-2 success: 1
16476
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
16477
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
16478
UPDATE t1 SET f_int1 = @cur_value2
16479
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
16481
# check single-3 success: 1
16482
SET @cur_value1= -1;
16483
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
16484
UPDATE t1 SET f_int1 = @cur_value1
16485
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
16487
# check single-4 success: 1
16488
SELECT MAX(f_int1) INTO @cur_value FROM t1;
16489
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
16491
# check single-5 success: 1
16492
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
16494
# check single-6 success: 1
16495
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
16497
# check single-7 success: 1
16498
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
16499
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
16500
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
16501
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
16502
f_charbig = '#NULL#';
16504
SET f_int1 = NULL , f_int2 = -@max_row,
16505
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
16506
f_charbig = '#NULL#';
16507
# check null success: 1
16509
# check null-1 success: 1
16510
UPDATE t1 SET f_int1 = -@max_row
16511
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
16512
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
16514
# check null-2 success: 1
16515
UPDATE t1 SET f_int1 = NULL
16516
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
16517
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
16519
# check null-3 success: 1
16521
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
16522
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
16524
# check null-4 success: 1
16526
WHERE f_int1 = 0 AND f_int2 = 0
16527
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
16528
AND f_charbig = '#NULL#';
16530
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16531
SELECT f_int1, f_int1, '', '', 'was inserted'
16532
FROM t0_template source_tab
16533
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
16535
# check transactions-1 success: 1
16538
# check transactions-2 success: 1
16541
# check transactions-3 success: 1
16542
DELETE FROM t1 WHERE f_charbig = 'was inserted';
16546
# check transactions-4 success: 1
16547
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16548
SELECT f_int1, f_int1, '', '', 'was inserted'
16549
FROM t0_template source_tab
16550
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
16552
# check transactions-5 success: 1
16555
Warning 1196 Some non-transactional changed tables couldn't be rolled back
16557
# check transactions-6 success: 1
16558
# INFO: Storage engine used for t1 seems to be not transactional.
16561
# check transactions-7 success: 1
16562
DELETE FROM t1 WHERE f_charbig = 'was inserted';
16564
SET @@session.sql_mode = 'traditional';
16565
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
16566
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16567
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
16568
'', '', 'was inserted' FROM t0_template
16569
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
16570
ERROR 22012: Division by 0
16573
# check transactions-8 success: 1
16574
# INFO: Storage engine used for t1 seems to be unable to revert
16575
# changes made by the failing statement.
16576
SET @@session.sql_mode = '';
16578
DELETE FROM t1 WHERE f_charbig = 'was inserted';
16580
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
16582
# check special-1 success: 1
16583
UPDATE t1 SET f_charbig = '';
16585
# check special-2 success: 1
16586
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
16587
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
16588
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
16589
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16590
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16591
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16592
'just inserted' FROM t0_template
16593
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16594
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
16596
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16597
f_charbig = 'updated by trigger'
16598
WHERE f_int1 = new.f_int1;
16600
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16601
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
16602
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16604
# check trigger-1 success: 1
16605
DROP TRIGGER trg_1;
16606
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16607
f_int2 = CAST(f_char1 AS SIGNED INT),
16608
f_charbig = 'just inserted'
16609
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16611
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16612
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16613
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16614
'just inserted' FROM t0_template
16615
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16616
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
16618
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16619
f_charbig = 'updated by trigger'
16620
WHERE f_int1 = new.f_int1;
16622
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16623
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
16624
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16626
# check trigger-2 success: 1
16627
DROP TRIGGER trg_1;
16628
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16629
f_int2 = CAST(f_char1 AS SIGNED INT),
16630
f_charbig = 'just inserted'
16631
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16633
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16634
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16635
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16636
'just inserted' FROM t0_template
16637
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16638
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
16640
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16641
f_charbig = 'updated by trigger'
16642
WHERE f_int1 = new.f_int1;
16644
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
16645
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16647
# check trigger-3 success: 1
16648
DROP TRIGGER trg_1;
16649
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16650
f_int2 = CAST(f_char1 AS SIGNED INT),
16651
f_charbig = 'just inserted'
16652
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16654
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16655
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16656
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16657
'just inserted' FROM t0_template
16658
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16659
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
16661
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16662
f_charbig = 'updated by trigger'
16663
WHERE f_int1 = - old.f_int1;
16665
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
16666
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16668
# check trigger-4 success: 1
16669
DROP TRIGGER trg_1;
16670
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16671
f_int2 = CAST(f_char1 AS SIGNED INT),
16672
f_charbig = 'just inserted'
16673
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16675
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16676
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16677
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16678
'just inserted' FROM t0_template
16679
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16680
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
16682
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16683
f_charbig = 'updated by trigger'
16684
WHERE f_int1 = new.f_int1;
16686
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
16687
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16689
# check trigger-5 success: 1
16690
DROP TRIGGER trg_1;
16691
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16692
f_int2 = CAST(f_char1 AS SIGNED INT),
16693
f_charbig = 'just inserted'
16694
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16696
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16697
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16698
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16699
'just inserted' FROM t0_template
16700
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16701
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
16703
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16704
f_charbig = 'updated by trigger'
16705
WHERE f_int1 = - old.f_int1;
16707
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
16708
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16710
# check trigger-6 success: 1
16711
DROP TRIGGER trg_1;
16712
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16713
f_int2 = CAST(f_char1 AS SIGNED INT),
16714
f_charbig = 'just inserted'
16715
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16717
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16718
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16719
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16720
'just inserted' FROM t0_template
16721
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16722
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
16724
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16725
f_charbig = 'updated by trigger'
16726
WHERE f_int1 = - old.f_int1;
16729
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16731
# check trigger-7 success: 1
16732
DROP TRIGGER trg_1;
16733
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16734
f_int2 = CAST(f_char1 AS SIGNED INT),
16735
f_charbig = 'just inserted'
16736
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16738
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16739
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16740
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16741
'just inserted' FROM t0_template
16742
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16743
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
16745
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16746
f_charbig = 'updated by trigger'
16747
WHERE f_int1 = - old.f_int1;
16750
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16752
# check trigger-8 success: 1
16753
DROP TRIGGER trg_1;
16754
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16755
f_int2 = CAST(f_char1 AS SIGNED INT),
16756
f_charbig = 'just inserted'
16757
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16759
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16761
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16762
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
16764
SET new.f_int1 = old.f_int1 + @max_row,
16765
new.f_int2 = old.f_int2 - @max_row,
16766
new.f_charbig = '####updated per update trigger####';
16769
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
16770
f_charbig = '####updated per update statement itself####';
16772
# check trigger-9 success: 1
16773
DROP TRIGGER trg_2;
16774
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16775
f_int2 = CAST(f_char1 AS SIGNED INT),
16776
f_charbig = CONCAT('===',f_char1,'===');
16777
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
16779
SET new.f_int1 = new.f_int1 + @max_row,
16780
new.f_int2 = new.f_int2 - @max_row,
16781
new.f_charbig = '####updated per update trigger####';
16784
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
16785
f_charbig = '####updated per update statement itself####';
16787
# check trigger-10 success: 1
16788
DROP TRIGGER trg_2;
16789
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16790
f_int2 = CAST(f_char1 AS SIGNED INT),
16791
f_charbig = CONCAT('===',f_char1,'===');
16792
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
16794
SET new.f_int1 = @my_max1 + @counter,
16795
new.f_int2 = @my_min2 - @counter,
16796
new.f_charbig = '####updated per insert trigger####';
16797
SET @counter = @counter + 1;
16800
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
16801
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16802
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
16803
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
16804
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
16806
DROP TRIGGER trg_3;
16808
# check trigger-11 success: 1
16810
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
16811
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
16812
AND f_charbig = '####updated per insert trigger####';
16813
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
16815
SET new.f_int1 = @my_max1 + @counter,
16816
new.f_int2 = @my_min2 - @counter,
16817
new.f_charbig = '####updated per insert trigger####';
16818
SET @counter = @counter + 1;
16821
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
16822
INSERT INTO t1 (f_char1, f_char2, f_charbig)
16823
SELECT CAST(f_int1 AS CHAR),
16824
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
16825
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
16827
DROP TRIGGER trg_3;
16829
# check trigger-12 success: 1
16831
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
16832
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
16833
AND f_charbig = '####updated per insert trigger####';
16835
Table Op Msg_type Msg_text
16836
test.t1 analyze status OK
16837
CHECK TABLE t1 EXTENDED;
16838
Table Op Msg_type Msg_text
16839
test.t1 check status OK
16840
CHECKSUM TABLE t1 EXTENDED;
16842
test.t1 <some_value>
16844
Table Op Msg_type Msg_text
16845
test.t1 optimize status OK
16846
# check layout success: 1
16847
REPAIR TABLE t1 EXTENDED;
16848
Table Op Msg_type Msg_text
16849
test.t1 repair status OK
16850
# check layout success: 1
16853
# check TRUNCATE success: 1
16854
# check layout success: 1
16855
# End usability test (inc/partition_check.inc)
16862
f_charbig VARCHAR(1000)
16865
PARTITION BY KEY(f_int1,f_int2) PARTITIONS 5;
16866
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
16867
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
16868
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
16869
ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
16870
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
16871
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
16872
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
16873
# Start usability test (inc/partition_check.inc)
16875
SHOW CREATE TABLE t1;
16877
t1 CREATE TABLE `t1` (
16878
`f_int1` bigint(20) DEFAULT NULL,
16879
`f_int2` bigint(20) DEFAULT NULL,
16880
`f_char1` char(20) DEFAULT NULL,
16881
`f_char2` char(20) DEFAULT NULL,
16882
`f_charbig` varchar(1000) DEFAULT NULL
16883
) ENGINE=MyISAM DEFAULT CHARSET=latin1
16884
/*!50100 PARTITION BY KEY (f_int1,f_int2)
16901
# check prerequisites-1 success: 1
16902
# check COUNT(*) success: 1
16903
# check MIN/MAX(f_int1) success: 1
16904
# check MIN/MAX(f_int2) success: 1
16905
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16906
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
16907
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
16908
WHERE f_int1 IN (2,3);
16909
# check prerequisites-3 success: 1
16910
DELETE FROM t1 WHERE f_charbig = 'delete me';
16911
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
16912
# check read via f_int1 success: 1
16913
# check read via f_int2 success: 1
16915
# check multiple-1 success: 1
16916
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
16918
# check multiple-2 success: 1
16919
INSERT INTO t1 SELECT * FROM t0_template
16920
WHERE MOD(f_int1,3) = 0;
16922
# check multiple-3 success: 1
16923
UPDATE t1 SET f_int1 = f_int1 + @max_row
16924
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
16925
AND @max_row_div2 + @max_row_div4;
16927
# check multiple-4 success: 1
16929
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
16930
AND @max_row_div2 + @max_row_div4 + @max_row;
16932
# check multiple-5 success: 1
16933
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
16935
SET f_int1 = @cur_value , f_int2 = @cur_value,
16936
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
16937
f_charbig = '#SINGLE#';
16939
# check single-1 success: 1
16940
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
16942
SET f_int1 = @cur_value , f_int2 = @cur_value,
16943
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
16944
f_charbig = '#SINGLE#';
16946
# check single-2 success: 1
16947
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
16948
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
16949
UPDATE t1 SET f_int1 = @cur_value2
16950
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
16952
# check single-3 success: 1
16953
SET @cur_value1= -1;
16954
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
16955
UPDATE t1 SET f_int1 = @cur_value1
16956
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
16958
# check single-4 success: 1
16959
SELECT MAX(f_int1) INTO @cur_value FROM t1;
16960
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
16962
# check single-5 success: 1
16963
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
16965
# check single-6 success: 1
16966
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
16968
# check single-7 success: 1
16969
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
16970
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
16971
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
16972
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
16973
f_charbig = '#NULL#';
16975
SET f_int1 = NULL , f_int2 = -@max_row,
16976
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
16977
f_charbig = '#NULL#';
16978
# check null success: 1
16980
# check null-1 success: 1
16981
UPDATE t1 SET f_int1 = -@max_row
16982
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
16983
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
16985
# check null-2 success: 1
16986
UPDATE t1 SET f_int1 = NULL
16987
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
16988
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
16990
# check null-3 success: 1
16992
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
16993
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
16995
# check null-4 success: 1
16997
WHERE f_int1 = 0 AND f_int2 = 0
16998
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
16999
AND f_charbig = '#NULL#';
17001
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17002
SELECT f_int1, f_int1, '', '', 'was inserted'
17003
FROM t0_template source_tab
17004
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
17006
# check transactions-1 success: 1
17009
# check transactions-2 success: 1
17012
# check transactions-3 success: 1
17013
DELETE FROM t1 WHERE f_charbig = 'was inserted';
17017
# check transactions-4 success: 1
17018
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17019
SELECT f_int1, f_int1, '', '', 'was inserted'
17020
FROM t0_template source_tab
17021
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
17023
# check transactions-5 success: 1
17026
Warning 1196 Some non-transactional changed tables couldn't be rolled back
17028
# check transactions-6 success: 1
17029
# INFO: Storage engine used for t1 seems to be not transactional.
17032
# check transactions-7 success: 1
17033
DELETE FROM t1 WHERE f_charbig = 'was inserted';
17035
SET @@session.sql_mode = 'traditional';
17036
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
17037
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17038
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
17039
'', '', 'was inserted' FROM t0_template
17040
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
17041
ERROR 22012: Division by 0
17044
# check transactions-8 success: 1
17045
# INFO: Storage engine used for t1 seems to be unable to revert
17046
# changes made by the failing statement.
17047
SET @@session.sql_mode = '';
17049
DELETE FROM t1 WHERE f_charbig = 'was inserted';
17051
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
17053
# check special-1 success: 1
17054
UPDATE t1 SET f_charbig = '';
17056
# check special-2 success: 1
17057
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
17058
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
17059
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
17060
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17061
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17062
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17063
'just inserted' FROM t0_template
17064
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17065
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
17067
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17068
f_charbig = 'updated by trigger'
17069
WHERE f_int1 = new.f_int1;
17071
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17072
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
17073
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17075
# check trigger-1 success: 1
17076
DROP TRIGGER trg_1;
17077
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17078
f_int2 = CAST(f_char1 AS SIGNED INT),
17079
f_charbig = 'just inserted'
17080
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17082
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17083
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17084
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17085
'just inserted' FROM t0_template
17086
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17087
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
17089
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17090
f_charbig = 'updated by trigger'
17091
WHERE f_int1 = new.f_int1;
17093
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17094
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
17095
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17097
# check trigger-2 success: 1
17098
DROP TRIGGER trg_1;
17099
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17100
f_int2 = CAST(f_char1 AS SIGNED INT),
17101
f_charbig = 'just inserted'
17102
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17104
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17105
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17106
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17107
'just inserted' FROM t0_template
17108
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17109
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
17111
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17112
f_charbig = 'updated by trigger'
17113
WHERE f_int1 = new.f_int1;
17115
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
17116
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17118
# check trigger-3 success: 1
17119
DROP TRIGGER trg_1;
17120
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17121
f_int2 = CAST(f_char1 AS SIGNED INT),
17122
f_charbig = 'just inserted'
17123
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17125
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17126
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17127
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17128
'just inserted' FROM t0_template
17129
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17130
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
17132
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17133
f_charbig = 'updated by trigger'
17134
WHERE f_int1 = - old.f_int1;
17136
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
17137
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17139
# check trigger-4 success: 1
17140
DROP TRIGGER trg_1;
17141
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17142
f_int2 = CAST(f_char1 AS SIGNED INT),
17143
f_charbig = 'just inserted'
17144
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17146
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17147
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17148
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17149
'just inserted' FROM t0_template
17150
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17151
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
17153
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17154
f_charbig = 'updated by trigger'
17155
WHERE f_int1 = new.f_int1;
17157
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
17158
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17160
# check trigger-5 success: 1
17161
DROP TRIGGER trg_1;
17162
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17163
f_int2 = CAST(f_char1 AS SIGNED INT),
17164
f_charbig = 'just inserted'
17165
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17167
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17168
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17169
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17170
'just inserted' FROM t0_template
17171
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17172
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
17174
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17175
f_charbig = 'updated by trigger'
17176
WHERE f_int1 = - old.f_int1;
17178
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
17179
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17181
# check trigger-6 success: 1
17182
DROP TRIGGER trg_1;
17183
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17184
f_int2 = CAST(f_char1 AS SIGNED INT),
17185
f_charbig = 'just inserted'
17186
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17188
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17189
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17190
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17191
'just inserted' FROM t0_template
17192
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17193
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
17195
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17196
f_charbig = 'updated by trigger'
17197
WHERE f_int1 = - old.f_int1;
17200
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17202
# check trigger-7 success: 1
17203
DROP TRIGGER trg_1;
17204
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17205
f_int2 = CAST(f_char1 AS SIGNED INT),
17206
f_charbig = 'just inserted'
17207
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17209
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17210
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17211
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17212
'just inserted' FROM t0_template
17213
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17214
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
17216
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17217
f_charbig = 'updated by trigger'
17218
WHERE f_int1 = - old.f_int1;
17221
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17223
# check trigger-8 success: 1
17224
DROP TRIGGER trg_1;
17225
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17226
f_int2 = CAST(f_char1 AS SIGNED INT),
17227
f_charbig = 'just inserted'
17228
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17230
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17232
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17233
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
17235
SET new.f_int1 = old.f_int1 + @max_row,
17236
new.f_int2 = old.f_int2 - @max_row,
17237
new.f_charbig = '####updated per update trigger####';
17240
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
17241
f_charbig = '####updated per update statement itself####';
17243
# check trigger-9 success: 1
17244
DROP TRIGGER trg_2;
17245
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17246
f_int2 = CAST(f_char1 AS SIGNED INT),
17247
f_charbig = CONCAT('===',f_char1,'===');
17248
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
17250
SET new.f_int1 = new.f_int1 + @max_row,
17251
new.f_int2 = new.f_int2 - @max_row,
17252
new.f_charbig = '####updated per update trigger####';
17255
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
17256
f_charbig = '####updated per update statement itself####';
17258
# check trigger-10 success: 1
17259
DROP TRIGGER trg_2;
17260
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17261
f_int2 = CAST(f_char1 AS SIGNED INT),
17262
f_charbig = CONCAT('===',f_char1,'===');
17263
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
17265
SET new.f_int1 = @my_max1 + @counter,
17266
new.f_int2 = @my_min2 - @counter,
17267
new.f_charbig = '####updated per insert trigger####';
17268
SET @counter = @counter + 1;
17271
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
17272
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17273
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
17274
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
17275
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
17277
DROP TRIGGER trg_3;
17279
# check trigger-11 success: 1
17281
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
17282
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
17283
AND f_charbig = '####updated per insert trigger####';
17284
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
17286
SET new.f_int1 = @my_max1 + @counter,
17287
new.f_int2 = @my_min2 - @counter,
17288
new.f_charbig = '####updated per insert trigger####';
17289
SET @counter = @counter + 1;
17292
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
17293
INSERT INTO t1 (f_char1, f_char2, f_charbig)
17294
SELECT CAST(f_int1 AS CHAR),
17295
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
17296
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
17298
DROP TRIGGER trg_3;
17300
# check trigger-12 success: 1
17302
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
17303
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
17304
AND f_charbig = '####updated per insert trigger####';
17306
Table Op Msg_type Msg_text
17307
test.t1 analyze status OK
17308
CHECK TABLE t1 EXTENDED;
17309
Table Op Msg_type Msg_text
17310
test.t1 check status OK
17311
CHECKSUM TABLE t1 EXTENDED;
17313
test.t1 <some_value>
17315
Table Op Msg_type Msg_text
17316
test.t1 optimize status OK
17317
# check layout success: 1
17318
REPAIR TABLE t1 EXTENDED;
17319
Table Op Msg_type Msg_text
17320
test.t1 repair status OK
17321
# check layout success: 1
17324
# check TRUNCATE success: 1
17325
# check layout success: 1
17326
# End usability test (inc/partition_check.inc)
17333
f_charbig VARCHAR(1000)
17336
PARTITION BY LIST(MOD(f_int1 + f_int2,4))
17337
(PARTITION part_3 VALUES IN (-3),
17338
PARTITION part_2 VALUES IN (-2),
17339
PARTITION part_1 VALUES IN (-1),
17340
PARTITION part_N VALUES IN (NULL),
17341
PARTITION part0 VALUES IN (0),
17342
PARTITION part1 VALUES IN (1),
17343
PARTITION part2 VALUES IN (2),
17344
PARTITION part3 VALUES IN (3));
17345
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
17346
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
17347
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
17348
ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
17349
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
17350
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
17351
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
17352
# Start usability test (inc/partition_check.inc)
17354
SHOW CREATE TABLE t1;
17356
t1 CREATE TABLE `t1` (
17357
`f_int1` bigint(20) DEFAULT NULL,
17358
`f_int2` bigint(20) DEFAULT NULL,
17359
`f_char1` char(20) DEFAULT NULL,
17360
`f_char2` char(20) DEFAULT NULL,
17361
`f_charbig` varchar(1000) DEFAULT NULL
17362
) ENGINE=MyISAM DEFAULT CHARSET=latin1
17363
/*!50100 PARTITION BY LIST (MOD(f_int1 + f_int2,4))
17364
(PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM,
17365
PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM,
17366
PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM,
17367
PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM,
17368
PARTITION part0 VALUES IN (0) ENGINE = MyISAM,
17369
PARTITION part1 VALUES IN (1) ENGINE = MyISAM,
17370
PARTITION part2 VALUES IN (2) ENGINE = MyISAM,
17371
PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */
17393
# check prerequisites-1 success: 1
17394
# check COUNT(*) success: 1
17395
# check MIN/MAX(f_int1) success: 1
17396
# check MIN/MAX(f_int2) success: 1
17397
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17398
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
17399
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
17400
WHERE f_int1 IN (2,3);
17401
# check prerequisites-3 success: 1
17402
DELETE FROM t1 WHERE f_charbig = 'delete me';
17403
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
17404
# check read via f_int1 success: 1
17405
# check read via f_int2 success: 1
17407
# check multiple-1 success: 1
17408
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
17410
# check multiple-2 success: 1
17411
INSERT INTO t1 SELECT * FROM t0_template
17412
WHERE MOD(f_int1,3) = 0;
17414
# check multiple-3 success: 1
17415
UPDATE t1 SET f_int1 = f_int1 + @max_row
17416
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
17417
AND @max_row_div2 + @max_row_div4;
17419
# check multiple-4 success: 1
17421
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
17422
AND @max_row_div2 + @max_row_div4 + @max_row;
17424
# check multiple-5 success: 1
17425
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
17427
SET f_int1 = @cur_value , f_int2 = @cur_value,
17428
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
17429
f_charbig = '#SINGLE#';
17431
# check single-1 success: 1
17432
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
17434
SET f_int1 = @cur_value , f_int2 = @cur_value,
17435
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
17436
f_charbig = '#SINGLE#';
17438
# check single-2 success: 1
17439
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
17440
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
17441
UPDATE t1 SET f_int1 = @cur_value2
17442
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
17444
# check single-3 success: 1
17445
SET @cur_value1= -1;
17446
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
17447
UPDATE t1 SET f_int1 = @cur_value1
17448
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
17450
# check single-4 success: 1
17451
SELECT MAX(f_int1) INTO @cur_value FROM t1;
17452
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
17454
# check single-5 success: 1
17455
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
17457
# check single-6 success: 1
17458
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
17460
# check single-7 success: 1
17461
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
17462
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
17463
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
17464
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
17465
f_charbig = '#NULL#';
17467
SET f_int1 = NULL , f_int2 = -@max_row,
17468
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
17469
f_charbig = '#NULL#';
17470
# check null success: 1
17472
# check null-1 success: 1
17473
UPDATE t1 SET f_int1 = -@max_row
17474
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
17475
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
17477
# check null-2 success: 1
17478
UPDATE t1 SET f_int1 = NULL
17479
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
17480
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
17482
# check null-3 success: 1
17484
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
17485
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
17487
# check null-4 success: 1
17489
WHERE f_int1 = 0 AND f_int2 = 0
17490
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
17491
AND f_charbig = '#NULL#';
17493
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17494
SELECT f_int1, f_int1, '', '', 'was inserted'
17495
FROM t0_template source_tab
17496
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
17498
# check transactions-1 success: 1
17501
# check transactions-2 success: 1
17504
# check transactions-3 success: 1
17505
DELETE FROM t1 WHERE f_charbig = 'was inserted';
17509
# check transactions-4 success: 1
17510
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17511
SELECT f_int1, f_int1, '', '', 'was inserted'
17512
FROM t0_template source_tab
17513
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
17515
# check transactions-5 success: 1
17518
Warning 1196 Some non-transactional changed tables couldn't be rolled back
17520
# check transactions-6 success: 1
17521
# INFO: Storage engine used for t1 seems to be not transactional.
17524
# check transactions-7 success: 1
17525
DELETE FROM t1 WHERE f_charbig = 'was inserted';
17527
SET @@session.sql_mode = 'traditional';
17528
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
17529
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17530
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
17531
'', '', 'was inserted' FROM t0_template
17532
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
17533
ERROR 22012: Division by 0
17536
# check transactions-8 success: 1
17537
# INFO: Storage engine used for t1 seems to be unable to revert
17538
# changes made by the failing statement.
17539
SET @@session.sql_mode = '';
17541
DELETE FROM t1 WHERE f_charbig = 'was inserted';
17543
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
17545
# check special-1 success: 1
17546
UPDATE t1 SET f_charbig = '';
17548
# check special-2 success: 1
17549
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
17550
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
17551
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
17552
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17553
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17554
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17555
'just inserted' FROM t0_template
17556
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17557
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
17559
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17560
f_charbig = 'updated by trigger'
17561
WHERE f_int1 = new.f_int1;
17563
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17564
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
17565
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17567
# check trigger-1 success: 1
17568
DROP TRIGGER trg_1;
17569
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17570
f_int2 = CAST(f_char1 AS SIGNED INT),
17571
f_charbig = 'just inserted'
17572
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17574
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17575
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17576
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17577
'just inserted' FROM t0_template
17578
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17579
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
17581
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17582
f_charbig = 'updated by trigger'
17583
WHERE f_int1 = new.f_int1;
17585
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17586
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
17587
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17589
# check trigger-2 success: 1
17590
DROP TRIGGER trg_1;
17591
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17592
f_int2 = CAST(f_char1 AS SIGNED INT),
17593
f_charbig = 'just inserted'
17594
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17596
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17597
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17598
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17599
'just inserted' FROM t0_template
17600
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17601
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
17603
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17604
f_charbig = 'updated by trigger'
17605
WHERE f_int1 = new.f_int1;
17607
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
17608
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17610
# check trigger-3 success: 1
17611
DROP TRIGGER trg_1;
17612
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17613
f_int2 = CAST(f_char1 AS SIGNED INT),
17614
f_charbig = 'just inserted'
17615
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17617
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17618
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17619
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17620
'just inserted' FROM t0_template
17621
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17622
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
17624
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17625
f_charbig = 'updated by trigger'
17626
WHERE f_int1 = - old.f_int1;
17628
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
17629
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17631
# check trigger-4 success: 1
17632
DROP TRIGGER trg_1;
17633
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17634
f_int2 = CAST(f_char1 AS SIGNED INT),
17635
f_charbig = 'just inserted'
17636
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17638
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17639
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17640
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17641
'just inserted' FROM t0_template
17642
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17643
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
17645
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17646
f_charbig = 'updated by trigger'
17647
WHERE f_int1 = new.f_int1;
17649
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
17650
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17652
# check trigger-5 success: 1
17653
DROP TRIGGER trg_1;
17654
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17655
f_int2 = CAST(f_char1 AS SIGNED INT),
17656
f_charbig = 'just inserted'
17657
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17659
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17660
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17661
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17662
'just inserted' FROM t0_template
17663
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17664
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
17666
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17667
f_charbig = 'updated by trigger'
17668
WHERE f_int1 = - old.f_int1;
17670
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
17671
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17673
# check trigger-6 success: 1
17674
DROP TRIGGER trg_1;
17675
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17676
f_int2 = CAST(f_char1 AS SIGNED INT),
17677
f_charbig = 'just inserted'
17678
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17680
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17681
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17682
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17683
'just inserted' FROM t0_template
17684
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17685
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
17687
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17688
f_charbig = 'updated by trigger'
17689
WHERE f_int1 = - old.f_int1;
17692
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17694
# check trigger-7 success: 1
17695
DROP TRIGGER trg_1;
17696
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17697
f_int2 = CAST(f_char1 AS SIGNED INT),
17698
f_charbig = 'just inserted'
17699
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17701
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17702
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17703
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17704
'just inserted' FROM t0_template
17705
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17706
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
17708
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17709
f_charbig = 'updated by trigger'
17710
WHERE f_int1 = - old.f_int1;
17713
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17715
# check trigger-8 success: 1
17716
DROP TRIGGER trg_1;
17717
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17718
f_int2 = CAST(f_char1 AS SIGNED INT),
17719
f_charbig = 'just inserted'
17720
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17722
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17724
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17725
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
17727
SET new.f_int1 = old.f_int1 + @max_row,
17728
new.f_int2 = old.f_int2 - @max_row,
17729
new.f_charbig = '####updated per update trigger####';
17732
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
17733
f_charbig = '####updated per update statement itself####';
17735
# check trigger-9 success: 1
17736
DROP TRIGGER trg_2;
17737
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17738
f_int2 = CAST(f_char1 AS SIGNED INT),
17739
f_charbig = CONCAT('===',f_char1,'===');
17740
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
17742
SET new.f_int1 = new.f_int1 + @max_row,
17743
new.f_int2 = new.f_int2 - @max_row,
17744
new.f_charbig = '####updated per update trigger####';
17747
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
17748
f_charbig = '####updated per update statement itself####';
17750
# check trigger-10 success: 1
17751
DROP TRIGGER trg_2;
17752
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17753
f_int2 = CAST(f_char1 AS SIGNED INT),
17754
f_charbig = CONCAT('===',f_char1,'===');
17755
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
17757
SET new.f_int1 = @my_max1 + @counter,
17758
new.f_int2 = @my_min2 - @counter,
17759
new.f_charbig = '####updated per insert trigger####';
17760
SET @counter = @counter + 1;
17763
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
17764
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17765
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
17766
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
17767
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
17769
DROP TRIGGER trg_3;
17771
# check trigger-11 success: 1
17773
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
17774
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
17775
AND f_charbig = '####updated per insert trigger####';
17776
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
17778
SET new.f_int1 = @my_max1 + @counter,
17779
new.f_int2 = @my_min2 - @counter,
17780
new.f_charbig = '####updated per insert trigger####';
17781
SET @counter = @counter + 1;
17784
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
17785
INSERT INTO t1 (f_char1, f_char2, f_charbig)
17786
SELECT CAST(f_int1 AS CHAR),
17787
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
17788
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
17790
DROP TRIGGER trg_3;
17792
# check trigger-12 success: 1
17794
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
17795
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
17796
AND f_charbig = '####updated per insert trigger####';
17798
Table Op Msg_type Msg_text
17799
test.t1 analyze status OK
17800
CHECK TABLE t1 EXTENDED;
17801
Table Op Msg_type Msg_text
17802
test.t1 check status OK
17803
CHECKSUM TABLE t1 EXTENDED;
17805
test.t1 <some_value>
17807
Table Op Msg_type Msg_text
17808
test.t1 optimize status OK
17809
# check layout success: 1
17810
REPAIR TABLE t1 EXTENDED;
17811
Table Op Msg_type Msg_text
17812
test.t1 repair status OK
17813
# check layout success: 1
17816
# check TRUNCATE success: 1
17817
# check layout success: 1
17818
# End usability test (inc/partition_check.inc)
17825
f_charbig VARCHAR(1000)
17828
PARTITION BY RANGE((f_int1 + f_int2) DIV 2)
17829
(PARTITION parta VALUES LESS THAN (0),
17830
PARTITION partb VALUES LESS THAN (5),
17831
PARTITION partc VALUES LESS THAN (10),
17832
PARTITION partd VALUES LESS THAN (10 + 5),
17833
PARTITION parte VALUES LESS THAN (20),
17834
PARTITION partf VALUES LESS THAN (2147483646));
17835
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
17836
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
17837
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
17838
ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
17839
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
17840
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
17841
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
17842
# Start usability test (inc/partition_check.inc)
17844
SHOW CREATE TABLE t1;
17846
t1 CREATE TABLE `t1` (
17847
`f_int1` bigint(20) DEFAULT NULL,
17848
`f_int2` bigint(20) DEFAULT NULL,
17849
`f_char1` char(20) DEFAULT NULL,
17850
`f_char2` char(20) DEFAULT NULL,
17851
`f_charbig` varchar(1000) DEFAULT NULL
17852
) ENGINE=MyISAM DEFAULT CHARSET=latin1
17853
/*!50100 PARTITION BY RANGE ((f_int1 + f_int2) DIV 2)
17854
(PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM,
17855
PARTITION partb VALUES LESS THAN (5) ENGINE = MyISAM,
17856
PARTITION partc VALUES LESS THAN (10) ENGINE = MyISAM,
17857
PARTITION partd VALUES LESS THAN (15) ENGINE = MyISAM,
17858
PARTITION parte VALUES LESS THAN (20) ENGINE = MyISAM,
17859
PARTITION partf VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
17877
# check prerequisites-1 success: 1
17878
# check COUNT(*) success: 1
17879
# check MIN/MAX(f_int1) success: 1
17880
# check MIN/MAX(f_int2) success: 1
17881
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17882
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
17883
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
17884
WHERE f_int1 IN (2,3);
17885
# check prerequisites-3 success: 1
17886
DELETE FROM t1 WHERE f_charbig = 'delete me';
17887
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
17888
# check read via f_int1 success: 1
17889
# check read via f_int2 success: 1
17891
# check multiple-1 success: 1
17892
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
17894
# check multiple-2 success: 1
17895
INSERT INTO t1 SELECT * FROM t0_template
17896
WHERE MOD(f_int1,3) = 0;
17898
# check multiple-3 success: 1
17899
UPDATE t1 SET f_int1 = f_int1 + @max_row
17900
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
17901
AND @max_row_div2 + @max_row_div4;
17903
# check multiple-4 success: 1
17905
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
17906
AND @max_row_div2 + @max_row_div4 + @max_row;
17908
# check multiple-5 success: 1
17909
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
17911
SET f_int1 = @cur_value , f_int2 = @cur_value,
17912
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
17913
f_charbig = '#SINGLE#';
17915
# check single-1 success: 1
17916
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
17918
SET f_int1 = @cur_value , f_int2 = @cur_value,
17919
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
17920
f_charbig = '#SINGLE#';
17922
# check single-2 success: 1
17923
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
17924
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
17925
UPDATE t1 SET f_int1 = @cur_value2
17926
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
17928
# check single-3 success: 1
17929
SET @cur_value1= -1;
17930
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
17931
UPDATE t1 SET f_int1 = @cur_value1
17932
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
17934
# check single-4 success: 1
17935
SELECT MAX(f_int1) INTO @cur_value FROM t1;
17936
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
17938
# check single-5 success: 1
17939
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
17941
# check single-6 success: 1
17942
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
17943
ERROR HY000: Table has no partition for value 2147483647
17944
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
17945
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
17946
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
17947
f_charbig = '#NULL#';
17949
SET f_int1 = NULL , f_int2 = -@max_row,
17950
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
17951
f_charbig = '#NULL#';
17952
# check null success: 1
17954
# check null-1 success: 1
17955
UPDATE t1 SET f_int1 = -@max_row
17956
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
17957
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
17959
# check null-2 success: 1
17960
UPDATE t1 SET f_int1 = NULL
17961
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
17962
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
17964
# check null-3 success: 1
17966
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
17967
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
17969
# check null-4 success: 1
17971
WHERE f_int1 = 0 AND f_int2 = 0
17972
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
17973
AND f_charbig = '#NULL#';
17975
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17976
SELECT f_int1, f_int1, '', '', 'was inserted'
17977
FROM t0_template source_tab
17978
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
17980
# check transactions-1 success: 1
17983
# check transactions-2 success: 1
17986
# check transactions-3 success: 1
17987
DELETE FROM t1 WHERE f_charbig = 'was inserted';
17991
# check transactions-4 success: 1
17992
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17993
SELECT f_int1, f_int1, '', '', 'was inserted'
17994
FROM t0_template source_tab
17995
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
17997
# check transactions-5 success: 1
18000
Warning 1196 Some non-transactional changed tables couldn't be rolled back
18002
# check transactions-6 success: 1
18003
# INFO: Storage engine used for t1 seems to be not transactional.
18006
# check transactions-7 success: 1
18007
DELETE FROM t1 WHERE f_charbig = 'was inserted';
18009
SET @@session.sql_mode = 'traditional';
18010
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
18011
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18012
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
18013
'', '', 'was inserted' FROM t0_template
18014
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
18015
ERROR 22012: Division by 0
18018
# check transactions-8 success: 1
18019
# INFO: Storage engine used for t1 seems to be unable to revert
18020
# changes made by the failing statement.
18021
SET @@session.sql_mode = '';
18023
DELETE FROM t1 WHERE f_charbig = 'was inserted';
18025
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
18027
# check special-1 success: 1
18028
UPDATE t1 SET f_charbig = '';
18030
# check special-2 success: 1
18031
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
18032
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
18033
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
18034
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18035
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18036
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18037
'just inserted' FROM t0_template
18038
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18039
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
18041
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18042
f_charbig = 'updated by trigger'
18043
WHERE f_int1 = new.f_int1;
18045
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18046
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
18047
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18049
# check trigger-1 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 INSERT 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 = new.f_int1;
18067
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18068
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
18069
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18071
# check trigger-2 success: 1
18072
DROP TRIGGER trg_1;
18073
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18074
f_int2 = CAST(f_char1 AS SIGNED INT),
18075
f_charbig = 'just inserted'
18076
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18078
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18079
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18080
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18081
'just inserted' FROM t0_template
18082
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18083
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
18085
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18086
f_charbig = 'updated by trigger'
18087
WHERE f_int1 = new.f_int1;
18089
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
18090
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18092
# check trigger-3 success: 1
18093
DROP TRIGGER trg_1;
18094
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18095
f_int2 = CAST(f_char1 AS SIGNED INT),
18096
f_charbig = 'just inserted'
18097
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18099
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18100
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18101
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18102
'just inserted' FROM t0_template
18103
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18104
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
18106
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18107
f_charbig = 'updated by trigger'
18108
WHERE f_int1 = - old.f_int1;
18110
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
18111
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18113
# check trigger-4 success: 1
18114
DROP TRIGGER trg_1;
18115
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18116
f_int2 = CAST(f_char1 AS SIGNED INT),
18117
f_charbig = 'just inserted'
18118
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18120
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18121
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18122
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18123
'just inserted' FROM t0_template
18124
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18125
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
18127
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18128
f_charbig = 'updated by trigger'
18129
WHERE f_int1 = new.f_int1;
18131
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
18132
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18134
# check trigger-5 success: 1
18135
DROP TRIGGER trg_1;
18136
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18137
f_int2 = CAST(f_char1 AS SIGNED INT),
18138
f_charbig = 'just inserted'
18139
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18141
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18142
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18143
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18144
'just inserted' FROM t0_template
18145
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18146
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
18148
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18149
f_charbig = 'updated by trigger'
18150
WHERE f_int1 = - old.f_int1;
18152
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
18153
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18155
# check trigger-6 success: 1
18156
DROP TRIGGER trg_1;
18157
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18158
f_int2 = CAST(f_char1 AS SIGNED INT),
18159
f_charbig = 'just inserted'
18160
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18162
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18163
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18164
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18165
'just inserted' FROM t0_template
18166
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18167
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
18169
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18170
f_charbig = 'updated by trigger'
18171
WHERE f_int1 = - old.f_int1;
18174
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18176
# check trigger-7 success: 1
18177
DROP TRIGGER trg_1;
18178
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18179
f_int2 = CAST(f_char1 AS SIGNED INT),
18180
f_charbig = 'just inserted'
18181
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18183
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18184
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18185
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18186
'just inserted' FROM t0_template
18187
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18188
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
18190
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18191
f_charbig = 'updated by trigger'
18192
WHERE f_int1 = - old.f_int1;
18195
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18197
# check trigger-8 success: 1
18198
DROP TRIGGER trg_1;
18199
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18200
f_int2 = CAST(f_char1 AS SIGNED INT),
18201
f_charbig = 'just inserted'
18202
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18204
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18206
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18207
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
18209
SET new.f_int1 = old.f_int1 + @max_row,
18210
new.f_int2 = old.f_int2 - @max_row,
18211
new.f_charbig = '####updated per update trigger####';
18214
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
18215
f_charbig = '####updated per update statement itself####';
18217
# check trigger-9 success: 1
18218
DROP TRIGGER trg_2;
18219
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18220
f_int2 = CAST(f_char1 AS SIGNED INT),
18221
f_charbig = CONCAT('===',f_char1,'===');
18222
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
18224
SET new.f_int1 = new.f_int1 + @max_row,
18225
new.f_int2 = new.f_int2 - @max_row,
18226
new.f_charbig = '####updated per update trigger####';
18229
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
18230
f_charbig = '####updated per update statement itself####';
18232
# check trigger-10 success: 1
18233
DROP TRIGGER trg_2;
18234
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18235
f_int2 = CAST(f_char1 AS SIGNED INT),
18236
f_charbig = CONCAT('===',f_char1,'===');
18237
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
18239
SET new.f_int1 = @my_max1 + @counter,
18240
new.f_int2 = @my_min2 - @counter,
18241
new.f_charbig = '####updated per insert trigger####';
18242
SET @counter = @counter + 1;
18245
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
18246
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18247
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
18248
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
18249
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
18251
DROP TRIGGER trg_3;
18253
# check trigger-11 success: 1
18255
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
18256
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
18257
AND f_charbig = '####updated per insert trigger####';
18258
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
18260
SET new.f_int1 = @my_max1 + @counter,
18261
new.f_int2 = @my_min2 - @counter,
18262
new.f_charbig = '####updated per insert trigger####';
18263
SET @counter = @counter + 1;
18266
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
18267
INSERT INTO t1 (f_char1, f_char2, f_charbig)
18268
SELECT CAST(f_int1 AS CHAR),
18269
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
18270
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
18272
DROP TRIGGER trg_3;
18274
# check trigger-12 success: 1
18276
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
18277
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
18278
AND f_charbig = '####updated per insert trigger####';
18280
Table Op Msg_type Msg_text
18281
test.t1 analyze status OK
18282
CHECK TABLE t1 EXTENDED;
18283
Table Op Msg_type Msg_text
18284
test.t1 check status OK
18285
CHECKSUM TABLE t1 EXTENDED;
18287
test.t1 <some_value>
18289
Table Op Msg_type Msg_text
18290
test.t1 optimize status OK
18291
# check layout success: 1
18292
REPAIR TABLE t1 EXTENDED;
18293
Table Op Msg_type Msg_text
18294
test.t1 repair status OK
18295
# check layout success: 1
18298
# check TRUNCATE success: 1
18299
# check layout success: 1
18300
# End usability test (inc/partition_check.inc)
18307
f_charbig VARCHAR(1000)
18310
PARTITION BY RANGE(f_int1) SUBPARTITION BY HASH(f_int2) SUBPARTITIONS 2
18311
(PARTITION parta VALUES LESS THAN (0),
18312
PARTITION partb VALUES LESS THAN (5),
18313
PARTITION partc VALUES LESS THAN (10),
18314
PARTITION partd VALUES LESS THAN (2147483646));
18315
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
18316
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
18317
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
18318
ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
18319
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
18320
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
18321
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
18322
# Start usability test (inc/partition_check.inc)
18324
SHOW CREATE TABLE t1;
18326
t1 CREATE TABLE `t1` (
18327
`f_int1` bigint(20) DEFAULT NULL,
18328
`f_int2` bigint(20) DEFAULT NULL,
18329
`f_char1` char(20) DEFAULT NULL,
18330
`f_char2` char(20) DEFAULT NULL,
18331
`f_charbig` varchar(1000) DEFAULT NULL
18332
) ENGINE=MyISAM DEFAULT CHARSET=latin1
18333
/*!50100 PARTITION BY RANGE (f_int1)
18334
SUBPARTITION BY HASH (f_int2)
18336
(PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM,
18337
PARTITION partb VALUES LESS THAN (5) ENGINE = MyISAM,
18338
PARTITION partc VALUES LESS THAN (10) ENGINE = MyISAM,
18339
PARTITION partd VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
18342
t1#P#parta#SP#partasp0.MYD
18343
t1#P#parta#SP#partasp0.MYI
18344
t1#P#parta#SP#partasp1.MYD
18345
t1#P#parta#SP#partasp1.MYI
18346
t1#P#partb#SP#partbsp0.MYD
18347
t1#P#partb#SP#partbsp0.MYI
18348
t1#P#partb#SP#partbsp1.MYD
18349
t1#P#partb#SP#partbsp1.MYI
18350
t1#P#partc#SP#partcsp0.MYD
18351
t1#P#partc#SP#partcsp0.MYI
18352
t1#P#partc#SP#partcsp1.MYD
18353
t1#P#partc#SP#partcsp1.MYI
18354
t1#P#partd#SP#partdsp0.MYD
18355
t1#P#partd#SP#partdsp0.MYI
18356
t1#P#partd#SP#partdsp1.MYD
18357
t1#P#partd#SP#partdsp1.MYI
18361
# check prerequisites-1 success: 1
18362
# check COUNT(*) success: 1
18363
# check MIN/MAX(f_int1) success: 1
18364
# check MIN/MAX(f_int2) success: 1
18365
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18366
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
18367
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
18368
WHERE f_int1 IN (2,3);
18369
# check prerequisites-3 success: 1
18370
DELETE FROM t1 WHERE f_charbig = 'delete me';
18371
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
18372
# check read via f_int1 success: 1
18373
# check read via f_int2 success: 1
18375
# check multiple-1 success: 1
18376
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
18378
# check multiple-2 success: 1
18379
INSERT INTO t1 SELECT * FROM t0_template
18380
WHERE MOD(f_int1,3) = 0;
18382
# check multiple-3 success: 1
18383
UPDATE t1 SET f_int1 = f_int1 + @max_row
18384
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
18385
AND @max_row_div2 + @max_row_div4;
18387
# check multiple-4 success: 1
18389
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
18390
AND @max_row_div2 + @max_row_div4 + @max_row;
18392
# check multiple-5 success: 1
18393
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
18395
SET f_int1 = @cur_value , f_int2 = @cur_value,
18396
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
18397
f_charbig = '#SINGLE#';
18399
# check single-1 success: 1
18400
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
18402
SET f_int1 = @cur_value , f_int2 = @cur_value,
18403
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
18404
f_charbig = '#SINGLE#';
18406
# check single-2 success: 1
18407
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
18408
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
18409
UPDATE t1 SET f_int1 = @cur_value2
18410
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
18412
# check single-3 success: 1
18413
SET @cur_value1= -1;
18414
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
18415
UPDATE t1 SET f_int1 = @cur_value1
18416
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
18418
# check single-4 success: 1
18419
SELECT MAX(f_int1) INTO @cur_value FROM t1;
18420
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
18422
# check single-5 success: 1
18423
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
18425
# check single-6 success: 1
18426
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
18427
ERROR HY000: Table has no partition for value 2147483647
18428
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
18429
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
18430
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
18431
f_charbig = '#NULL#';
18433
SET f_int1 = NULL , f_int2 = -@max_row,
18434
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
18435
f_charbig = '#NULL#';
18436
# check null success: 1
18438
# check null-1 success: 1
18439
UPDATE t1 SET f_int1 = -@max_row
18440
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
18441
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
18443
# check null-2 success: 1
18444
UPDATE t1 SET f_int1 = NULL
18445
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
18446
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
18448
# check null-3 success: 1
18450
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
18451
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
18453
# check null-4 success: 1
18455
WHERE f_int1 = 0 AND f_int2 = 0
18456
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
18457
AND f_charbig = '#NULL#';
18459
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18460
SELECT f_int1, f_int1, '', '', 'was inserted'
18461
FROM t0_template source_tab
18462
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
18464
# check transactions-1 success: 1
18467
# check transactions-2 success: 1
18470
# check transactions-3 success: 1
18471
DELETE FROM t1 WHERE f_charbig = 'was inserted';
18475
# check transactions-4 success: 1
18476
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18477
SELECT f_int1, f_int1, '', '', 'was inserted'
18478
FROM t0_template source_tab
18479
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
18481
# check transactions-5 success: 1
18484
Warning 1196 Some non-transactional changed tables couldn't be rolled back
18486
# check transactions-6 success: 1
18487
# INFO: Storage engine used for t1 seems to be not transactional.
18490
# check transactions-7 success: 1
18491
DELETE FROM t1 WHERE f_charbig = 'was inserted';
18493
SET @@session.sql_mode = 'traditional';
18494
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
18495
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18496
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
18497
'', '', 'was inserted' FROM t0_template
18498
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
18499
ERROR 22012: Division by 0
18502
# check transactions-8 success: 1
18503
# INFO: Storage engine used for t1 seems to be unable to revert
18504
# changes made by the failing statement.
18505
SET @@session.sql_mode = '';
18507
DELETE FROM t1 WHERE f_charbig = 'was inserted';
18509
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
18511
# check special-1 success: 1
18512
UPDATE t1 SET f_charbig = '';
18514
# check special-2 success: 1
18515
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
18516
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
18517
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
18518
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18519
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18520
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18521
'just inserted' FROM t0_template
18522
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18523
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
18525
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18526
f_charbig = 'updated by trigger'
18527
WHERE f_int1 = new.f_int1;
18529
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18530
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
18531
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18533
# check trigger-1 success: 1
18534
DROP TRIGGER trg_1;
18535
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18536
f_int2 = CAST(f_char1 AS SIGNED INT),
18537
f_charbig = 'just inserted'
18538
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18540
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18541
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18542
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18543
'just inserted' FROM t0_template
18544
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18545
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
18547
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18548
f_charbig = 'updated by trigger'
18549
WHERE f_int1 = new.f_int1;
18551
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18552
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
18553
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18555
# check trigger-2 success: 1
18556
DROP TRIGGER trg_1;
18557
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18558
f_int2 = CAST(f_char1 AS SIGNED INT),
18559
f_charbig = 'just inserted'
18560
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18562
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18563
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18564
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18565
'just inserted' FROM t0_template
18566
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18567
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
18569
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18570
f_charbig = 'updated by trigger'
18571
WHERE f_int1 = new.f_int1;
18573
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
18574
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18576
# check trigger-3 success: 1
18577
DROP TRIGGER trg_1;
18578
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18579
f_int2 = CAST(f_char1 AS SIGNED INT),
18580
f_charbig = 'just inserted'
18581
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18583
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18584
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18585
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18586
'just inserted' FROM t0_template
18587
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18588
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
18590
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18591
f_charbig = 'updated by trigger'
18592
WHERE f_int1 = - old.f_int1;
18594
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
18595
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18597
# check trigger-4 success: 1
18598
DROP TRIGGER trg_1;
18599
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18600
f_int2 = CAST(f_char1 AS SIGNED INT),
18601
f_charbig = 'just inserted'
18602
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18604
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18605
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18606
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18607
'just inserted' FROM t0_template
18608
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18609
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
18611
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18612
f_charbig = 'updated by trigger'
18613
WHERE f_int1 = new.f_int1;
18615
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
18616
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18618
# check trigger-5 success: 1
18619
DROP TRIGGER trg_1;
18620
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18621
f_int2 = CAST(f_char1 AS SIGNED INT),
18622
f_charbig = 'just inserted'
18623
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18625
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18626
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18627
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18628
'just inserted' FROM t0_template
18629
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18630
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
18632
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18633
f_charbig = 'updated by trigger'
18634
WHERE f_int1 = - old.f_int1;
18636
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
18637
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18639
# check trigger-6 success: 1
18640
DROP TRIGGER trg_1;
18641
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18642
f_int2 = CAST(f_char1 AS SIGNED INT),
18643
f_charbig = 'just inserted'
18644
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18646
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18647
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18648
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18649
'just inserted' FROM t0_template
18650
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18651
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
18653
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18654
f_charbig = 'updated by trigger'
18655
WHERE f_int1 = - old.f_int1;
18658
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18660
# check trigger-7 success: 1
18661
DROP TRIGGER trg_1;
18662
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18663
f_int2 = CAST(f_char1 AS SIGNED INT),
18664
f_charbig = 'just inserted'
18665
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18667
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18668
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18669
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18670
'just inserted' FROM t0_template
18671
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18672
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
18674
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18675
f_charbig = 'updated by trigger'
18676
WHERE f_int1 = - old.f_int1;
18679
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18681
# check trigger-8 success: 1
18682
DROP TRIGGER trg_1;
18683
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18684
f_int2 = CAST(f_char1 AS SIGNED INT),
18685
f_charbig = 'just inserted'
18686
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18688
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18690
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18691
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
18693
SET new.f_int1 = old.f_int1 + @max_row,
18694
new.f_int2 = old.f_int2 - @max_row,
18695
new.f_charbig = '####updated per update trigger####';
18698
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
18699
f_charbig = '####updated per update statement itself####';
18701
# check trigger-9 success: 1
18702
DROP TRIGGER trg_2;
18703
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18704
f_int2 = CAST(f_char1 AS SIGNED INT),
18705
f_charbig = CONCAT('===',f_char1,'===');
18706
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
18708
SET new.f_int1 = new.f_int1 + @max_row,
18709
new.f_int2 = new.f_int2 - @max_row,
18710
new.f_charbig = '####updated per update trigger####';
18713
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
18714
f_charbig = '####updated per update statement itself####';
18716
# check trigger-10 success: 1
18717
DROP TRIGGER trg_2;
18718
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18719
f_int2 = CAST(f_char1 AS SIGNED INT),
18720
f_charbig = CONCAT('===',f_char1,'===');
18721
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
18723
SET new.f_int1 = @my_max1 + @counter,
18724
new.f_int2 = @my_min2 - @counter,
18725
new.f_charbig = '####updated per insert trigger####';
18726
SET @counter = @counter + 1;
18729
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
18730
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18731
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
18732
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
18733
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
18735
DROP TRIGGER trg_3;
18737
# check trigger-11 success: 1
18739
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
18740
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
18741
AND f_charbig = '####updated per insert trigger####';
18742
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
18744
SET new.f_int1 = @my_max1 + @counter,
18745
new.f_int2 = @my_min2 - @counter,
18746
new.f_charbig = '####updated per insert trigger####';
18747
SET @counter = @counter + 1;
18750
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
18751
INSERT INTO t1 (f_char1, f_char2, f_charbig)
18752
SELECT CAST(f_int1 AS CHAR),
18753
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
18754
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
18756
DROP TRIGGER trg_3;
18758
# check trigger-12 success: 1
18760
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
18761
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
18762
AND f_charbig = '####updated per insert trigger####';
18764
Table Op Msg_type Msg_text
18765
test.t1 analyze status OK
18766
CHECK TABLE t1 EXTENDED;
18767
Table Op Msg_type Msg_text
18768
test.t1 check status OK
18769
CHECKSUM TABLE t1 EXTENDED;
18771
test.t1 <some_value>
18773
Table Op Msg_type Msg_text
18774
test.t1 optimize status OK
18775
# check layout success: 1
18776
REPAIR TABLE t1 EXTENDED;
18777
Table Op Msg_type Msg_text
18778
test.t1 repair status OK
18779
# check layout success: 1
18782
# check TRUNCATE success: 1
18783
# check layout success: 1
18784
# End usability test (inc/partition_check.inc)
18791
f_charbig VARCHAR(1000)
18794
PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int2)
18795
(PARTITION part1 VALUES LESS THAN (0)
18796
(SUBPARTITION subpart11, SUBPARTITION subpart12),
18797
PARTITION part2 VALUES LESS THAN (5)
18798
(SUBPARTITION subpart21, SUBPARTITION subpart22),
18799
PARTITION part3 VALUES LESS THAN (10)
18800
(SUBPARTITION subpart31, SUBPARTITION subpart32),
18801
PARTITION part4 VALUES LESS THAN (2147483646)
18802
(SUBPARTITION subpart41, SUBPARTITION subpart42));
18803
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
18804
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
18805
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
18806
ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
18807
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
18808
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
18809
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
18810
# Start usability test (inc/partition_check.inc)
18812
SHOW CREATE TABLE t1;
18814
t1 CREATE TABLE `t1` (
18815
`f_int1` bigint(20) DEFAULT NULL,
18816
`f_int2` bigint(20) DEFAULT NULL,
18817
`f_char1` char(20) DEFAULT NULL,
18818
`f_char2` char(20) DEFAULT NULL,
18819
`f_charbig` varchar(1000) DEFAULT NULL
18820
) ENGINE=MyISAM DEFAULT CHARSET=latin1
18821
/*!50100 PARTITION BY RANGE (f_int1)
18822
SUBPARTITION BY KEY (f_int2)
18823
(PARTITION part1 VALUES LESS THAN (0)
18824
(SUBPARTITION subpart11 ENGINE = MyISAM,
18825
SUBPARTITION subpart12 ENGINE = MyISAM),
18826
PARTITION part2 VALUES LESS THAN (5)
18827
(SUBPARTITION subpart21 ENGINE = MyISAM,
18828
SUBPARTITION subpart22 ENGINE = MyISAM),
18829
PARTITION part3 VALUES LESS THAN (10)
18830
(SUBPARTITION subpart31 ENGINE = MyISAM,
18831
SUBPARTITION subpart32 ENGINE = MyISAM),
18832
PARTITION part4 VALUES LESS THAN (2147483646)
18833
(SUBPARTITION subpart41 ENGINE = MyISAM,
18834
SUBPARTITION subpart42 ENGINE = MyISAM)) */
18837
t1#P#part1#SP#subpart11.MYD
18838
t1#P#part1#SP#subpart11.MYI
18839
t1#P#part1#SP#subpart12.MYD
18840
t1#P#part1#SP#subpart12.MYI
18841
t1#P#part2#SP#subpart21.MYD
18842
t1#P#part2#SP#subpart21.MYI
18843
t1#P#part2#SP#subpart22.MYD
18844
t1#P#part2#SP#subpart22.MYI
18845
t1#P#part3#SP#subpart31.MYD
18846
t1#P#part3#SP#subpart31.MYI
18847
t1#P#part3#SP#subpart32.MYD
18848
t1#P#part3#SP#subpart32.MYI
18849
t1#P#part4#SP#subpart41.MYD
18850
t1#P#part4#SP#subpart41.MYI
18851
t1#P#part4#SP#subpart42.MYD
18852
t1#P#part4#SP#subpart42.MYI
18856
# check prerequisites-1 success: 1
18857
# check COUNT(*) success: 1
18858
# check MIN/MAX(f_int1) success: 1
18859
# check MIN/MAX(f_int2) success: 1
18860
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18861
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
18862
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
18863
WHERE f_int1 IN (2,3);
18864
# check prerequisites-3 success: 1
18865
DELETE FROM t1 WHERE f_charbig = 'delete me';
18866
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
18867
# check read via f_int1 success: 1
18868
# check read via f_int2 success: 1
18870
# check multiple-1 success: 1
18871
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
18873
# check multiple-2 success: 1
18874
INSERT INTO t1 SELECT * FROM t0_template
18875
WHERE MOD(f_int1,3) = 0;
18877
# check multiple-3 success: 1
18878
UPDATE t1 SET f_int1 = f_int1 + @max_row
18879
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
18880
AND @max_row_div2 + @max_row_div4;
18882
# check multiple-4 success: 1
18884
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
18885
AND @max_row_div2 + @max_row_div4 + @max_row;
18887
# check multiple-5 success: 1
18888
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
18890
SET f_int1 = @cur_value , f_int2 = @cur_value,
18891
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
18892
f_charbig = '#SINGLE#';
18894
# check single-1 success: 1
18895
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
18897
SET f_int1 = @cur_value , f_int2 = @cur_value,
18898
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
18899
f_charbig = '#SINGLE#';
18901
# check single-2 success: 1
18902
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
18903
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
18904
UPDATE t1 SET f_int1 = @cur_value2
18905
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
18907
# check single-3 success: 1
18908
SET @cur_value1= -1;
18909
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
18910
UPDATE t1 SET f_int1 = @cur_value1
18911
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
18913
# check single-4 success: 1
18914
SELECT MAX(f_int1) INTO @cur_value FROM t1;
18915
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
18917
# check single-5 success: 1
18918
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
18920
# check single-6 success: 1
18921
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
18922
ERROR HY000: Table has no partition for value 2147483647
18923
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
18924
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
18925
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
18926
f_charbig = '#NULL#';
18928
SET f_int1 = NULL , f_int2 = -@max_row,
18929
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
18930
f_charbig = '#NULL#';
18931
# check null success: 1
18933
# check null-1 success: 1
18934
UPDATE t1 SET f_int1 = -@max_row
18935
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
18936
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
18938
# check null-2 success: 1
18939
UPDATE t1 SET f_int1 = NULL
18940
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
18941
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
18943
# check null-3 success: 1
18945
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
18946
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
18948
# check null-4 success: 1
18950
WHERE f_int1 = 0 AND f_int2 = 0
18951
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
18952
AND f_charbig = '#NULL#';
18954
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18955
SELECT f_int1, f_int1, '', '', 'was inserted'
18956
FROM t0_template source_tab
18957
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
18959
# check transactions-1 success: 1
18962
# check transactions-2 success: 1
18965
# check transactions-3 success: 1
18966
DELETE FROM t1 WHERE f_charbig = 'was inserted';
18970
# check transactions-4 success: 1
18971
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18972
SELECT f_int1, f_int1, '', '', 'was inserted'
18973
FROM t0_template source_tab
18974
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
18976
# check transactions-5 success: 1
18979
Warning 1196 Some non-transactional changed tables couldn't be rolled back
18981
# check transactions-6 success: 1
18982
# INFO: Storage engine used for t1 seems to be not transactional.
18985
# check transactions-7 success: 1
18986
DELETE FROM t1 WHERE f_charbig = 'was inserted';
18988
SET @@session.sql_mode = 'traditional';
18989
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
18990
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18991
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
18992
'', '', 'was inserted' FROM t0_template
18993
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
18994
ERROR 22012: Division by 0
18997
# check transactions-8 success: 1
18998
# INFO: Storage engine used for t1 seems to be unable to revert
18999
# changes made by the failing statement.
19000
SET @@session.sql_mode = '';
19002
DELETE FROM t1 WHERE f_charbig = 'was inserted';
19004
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
19006
# check special-1 success: 1
19007
UPDATE t1 SET f_charbig = '';
19009
# check special-2 success: 1
19010
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
19011
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
19012
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
19013
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19014
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19015
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19016
'just inserted' FROM t0_template
19017
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19018
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
19020
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19021
f_charbig = 'updated by trigger'
19022
WHERE f_int1 = new.f_int1;
19024
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19025
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
19026
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19028
# check trigger-1 success: 1
19029
DROP TRIGGER trg_1;
19030
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19031
f_int2 = CAST(f_char1 AS SIGNED INT),
19032
f_charbig = 'just inserted'
19033
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19035
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19036
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19037
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19038
'just inserted' FROM t0_template
19039
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19040
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
19042
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19043
f_charbig = 'updated by trigger'
19044
WHERE f_int1 = new.f_int1;
19046
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19047
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
19048
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19050
# check trigger-2 success: 1
19051
DROP TRIGGER trg_1;
19052
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19053
f_int2 = CAST(f_char1 AS SIGNED INT),
19054
f_charbig = 'just inserted'
19055
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19057
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19058
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19059
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19060
'just inserted' FROM t0_template
19061
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19062
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
19064
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19065
f_charbig = 'updated by trigger'
19066
WHERE f_int1 = new.f_int1;
19068
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
19069
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19071
# check trigger-3 success: 1
19072
DROP TRIGGER trg_1;
19073
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19074
f_int2 = CAST(f_char1 AS SIGNED INT),
19075
f_charbig = 'just inserted'
19076
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19078
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19079
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19080
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19081
'just inserted' FROM t0_template
19082
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19083
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
19085
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19086
f_charbig = 'updated by trigger'
19087
WHERE f_int1 = - old.f_int1;
19089
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
19090
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19092
# check trigger-4 success: 1
19093
DROP TRIGGER trg_1;
19094
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19095
f_int2 = CAST(f_char1 AS SIGNED INT),
19096
f_charbig = 'just inserted'
19097
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19099
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19100
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19101
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19102
'just inserted' FROM t0_template
19103
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19104
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
19106
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19107
f_charbig = 'updated by trigger'
19108
WHERE f_int1 = new.f_int1;
19110
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
19111
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19113
# check trigger-5 success: 1
19114
DROP TRIGGER trg_1;
19115
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19116
f_int2 = CAST(f_char1 AS SIGNED INT),
19117
f_charbig = 'just inserted'
19118
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19120
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19121
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19122
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19123
'just inserted' FROM t0_template
19124
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19125
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
19127
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19128
f_charbig = 'updated by trigger'
19129
WHERE f_int1 = - old.f_int1;
19131
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
19132
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19134
# check trigger-6 success: 1
19135
DROP TRIGGER trg_1;
19136
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19137
f_int2 = CAST(f_char1 AS SIGNED INT),
19138
f_charbig = 'just inserted'
19139
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19141
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19142
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19143
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19144
'just inserted' FROM t0_template
19145
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19146
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
19148
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19149
f_charbig = 'updated by trigger'
19150
WHERE f_int1 = - old.f_int1;
19153
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19155
# check trigger-7 success: 1
19156
DROP TRIGGER trg_1;
19157
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19158
f_int2 = CAST(f_char1 AS SIGNED INT),
19159
f_charbig = 'just inserted'
19160
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19162
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19163
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19164
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19165
'just inserted' FROM t0_template
19166
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19167
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
19169
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19170
f_charbig = 'updated by trigger'
19171
WHERE f_int1 = - old.f_int1;
19174
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19176
# check trigger-8 success: 1
19177
DROP TRIGGER trg_1;
19178
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19179
f_int2 = CAST(f_char1 AS SIGNED INT),
19180
f_charbig = 'just inserted'
19181
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19183
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19185
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19186
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
19188
SET new.f_int1 = old.f_int1 + @max_row,
19189
new.f_int2 = old.f_int2 - @max_row,
19190
new.f_charbig = '####updated per update trigger####';
19193
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
19194
f_charbig = '####updated per update statement itself####';
19196
# check trigger-9 success: 1
19197
DROP TRIGGER trg_2;
19198
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19199
f_int2 = CAST(f_char1 AS SIGNED INT),
19200
f_charbig = CONCAT('===',f_char1,'===');
19201
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
19203
SET new.f_int1 = new.f_int1 + @max_row,
19204
new.f_int2 = new.f_int2 - @max_row,
19205
new.f_charbig = '####updated per update trigger####';
19208
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
19209
f_charbig = '####updated per update statement itself####';
19211
# check trigger-10 success: 1
19212
DROP TRIGGER trg_2;
19213
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19214
f_int2 = CAST(f_char1 AS SIGNED INT),
19215
f_charbig = CONCAT('===',f_char1,'===');
19216
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
19218
SET new.f_int1 = @my_max1 + @counter,
19219
new.f_int2 = @my_min2 - @counter,
19220
new.f_charbig = '####updated per insert trigger####';
19221
SET @counter = @counter + 1;
19224
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
19225
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19226
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
19227
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
19228
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
19230
DROP TRIGGER trg_3;
19232
# check trigger-11 success: 1
19234
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
19235
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
19236
AND f_charbig = '####updated per insert trigger####';
19237
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
19239
SET new.f_int1 = @my_max1 + @counter,
19240
new.f_int2 = @my_min2 - @counter,
19241
new.f_charbig = '####updated per insert trigger####';
19242
SET @counter = @counter + 1;
19245
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
19246
INSERT INTO t1 (f_char1, f_char2, f_charbig)
19247
SELECT CAST(f_int1 AS CHAR),
19248
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
19249
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
19251
DROP TRIGGER trg_3;
19253
# check trigger-12 success: 1
19255
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
19256
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
19257
AND f_charbig = '####updated per insert trigger####';
19259
Table Op Msg_type Msg_text
19260
test.t1 analyze status OK
19261
CHECK TABLE t1 EXTENDED;
19262
Table Op Msg_type Msg_text
19263
test.t1 check status OK
19264
CHECKSUM TABLE t1 EXTENDED;
19266
test.t1 <some_value>
19268
Table Op Msg_type Msg_text
19269
test.t1 optimize status OK
19270
# check layout success: 1
19271
REPAIR TABLE t1 EXTENDED;
19272
Table Op Msg_type Msg_text
19273
test.t1 repair status OK
19274
# check layout success: 1
19277
# check TRUNCATE success: 1
19278
# check layout success: 1
19279
# End usability test (inc/partition_check.inc)
19286
f_charbig VARCHAR(1000)
19289
PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int2 + 1)
19290
(PARTITION part1 VALUES IN (0)
19291
(SUBPARTITION sp11, SUBPARTITION sp12),
19292
PARTITION part2 VALUES IN (1)
19293
(SUBPARTITION sp21, SUBPARTITION sp22),
19294
PARTITION part3 VALUES IN (2)
19295
(SUBPARTITION sp31, SUBPARTITION sp32),
19296
PARTITION part4 VALUES IN (NULL)
19297
(SUBPARTITION sp41, SUBPARTITION sp42));
19298
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
19299
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
19300
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
19301
ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
19302
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
19303
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
19304
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
19305
# Start usability test (inc/partition_check.inc)
19307
SHOW CREATE TABLE t1;
19309
t1 CREATE TABLE `t1` (
19310
`f_int1` bigint(20) DEFAULT NULL,
19311
`f_int2` bigint(20) DEFAULT NULL,
19312
`f_char1` char(20) DEFAULT NULL,
19313
`f_char2` char(20) DEFAULT NULL,
19314
`f_charbig` varchar(1000) DEFAULT NULL
19315
) ENGINE=MyISAM DEFAULT CHARSET=latin1
19316
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
19317
SUBPARTITION BY HASH (f_int2 + 1)
19318
(PARTITION part1 VALUES IN (0)
19319
(SUBPARTITION sp11 ENGINE = MyISAM,
19320
SUBPARTITION sp12 ENGINE = MyISAM),
19321
PARTITION part2 VALUES IN (1)
19322
(SUBPARTITION sp21 ENGINE = MyISAM,
19323
SUBPARTITION sp22 ENGINE = MyISAM),
19324
PARTITION part3 VALUES IN (2)
19325
(SUBPARTITION sp31 ENGINE = MyISAM,
19326
SUBPARTITION sp32 ENGINE = MyISAM),
19327
PARTITION part4 VALUES IN (NULL)
19328
(SUBPARTITION sp41 ENGINE = MyISAM,
19329
SUBPARTITION sp42 ENGINE = MyISAM)) */
19332
t1#P#part1#SP#sp11.MYD
19333
t1#P#part1#SP#sp11.MYI
19334
t1#P#part1#SP#sp12.MYD
19335
t1#P#part1#SP#sp12.MYI
19336
t1#P#part2#SP#sp21.MYD
19337
t1#P#part2#SP#sp21.MYI
19338
t1#P#part2#SP#sp22.MYD
19339
t1#P#part2#SP#sp22.MYI
19340
t1#P#part3#SP#sp31.MYD
19341
t1#P#part3#SP#sp31.MYI
19342
t1#P#part3#SP#sp32.MYD
19343
t1#P#part3#SP#sp32.MYI
19344
t1#P#part4#SP#sp41.MYD
19345
t1#P#part4#SP#sp41.MYI
19346
t1#P#part4#SP#sp42.MYD
19347
t1#P#part4#SP#sp42.MYI
19351
# check prerequisites-1 success: 1
19352
# check COUNT(*) success: 1
19353
# check MIN/MAX(f_int1) success: 1
19354
# check MIN/MAX(f_int2) success: 1
19355
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19356
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
19357
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
19358
WHERE f_int1 IN (2,3);
19359
# check prerequisites-3 success: 1
19360
DELETE FROM t1 WHERE f_charbig = 'delete me';
19361
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
19362
# check read via f_int1 success: 1
19363
# check read via f_int2 success: 1
19365
# check multiple-1 success: 1
19366
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
19368
# check multiple-2 success: 1
19369
INSERT INTO t1 SELECT * FROM t0_template
19370
WHERE MOD(f_int1,3) = 0;
19372
# check multiple-3 success: 1
19373
UPDATE t1 SET f_int1 = f_int1 + @max_row
19374
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
19375
AND @max_row_div2 + @max_row_div4;
19377
# check multiple-4 success: 1
19379
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
19380
AND @max_row_div2 + @max_row_div4 + @max_row;
19382
# check multiple-5 success: 1
19383
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
19385
SET f_int1 = @cur_value , f_int2 = @cur_value,
19386
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
19387
f_charbig = '#SINGLE#';
19389
# check single-1 success: 1
19390
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
19392
SET f_int1 = @cur_value , f_int2 = @cur_value,
19393
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
19394
f_charbig = '#SINGLE#';
19396
# check single-2 success: 1
19397
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
19398
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
19399
UPDATE t1 SET f_int1 = @cur_value2
19400
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
19402
# check single-3 success: 1
19403
SET @cur_value1= -1;
19404
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
19405
UPDATE t1 SET f_int1 = @cur_value1
19406
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
19408
# check single-4 success: 1
19409
SELECT MAX(f_int1) INTO @cur_value FROM t1;
19410
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
19412
# check single-5 success: 1
19413
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
19415
# check single-6 success: 1
19416
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
19418
# check single-7 success: 1
19419
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
19420
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
19421
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
19422
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
19423
f_charbig = '#NULL#';
19425
SET f_int1 = NULL , f_int2 = -@max_row,
19426
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
19427
f_charbig = '#NULL#';
19428
# check null success: 1
19430
# check null-1 success: 1
19431
UPDATE t1 SET f_int1 = -@max_row
19432
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
19433
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
19435
# check null-2 success: 1
19436
UPDATE t1 SET f_int1 = NULL
19437
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
19438
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
19440
# check null-3 success: 1
19442
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
19443
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
19445
# check null-4 success: 1
19447
WHERE f_int1 = 0 AND f_int2 = 0
19448
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
19449
AND f_charbig = '#NULL#';
19451
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19452
SELECT f_int1, f_int1, '', '', 'was inserted'
19453
FROM t0_template source_tab
19454
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
19456
# check transactions-1 success: 1
19459
# check transactions-2 success: 1
19462
# check transactions-3 success: 1
19463
DELETE FROM t1 WHERE f_charbig = 'was inserted';
19467
# check transactions-4 success: 1
19468
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19469
SELECT f_int1, f_int1, '', '', 'was inserted'
19470
FROM t0_template source_tab
19471
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
19473
# check transactions-5 success: 1
19476
Warning 1196 Some non-transactional changed tables couldn't be rolled back
19478
# check transactions-6 success: 1
19479
# INFO: Storage engine used for t1 seems to be not transactional.
19482
# check transactions-7 success: 1
19483
DELETE FROM t1 WHERE f_charbig = 'was inserted';
19485
SET @@session.sql_mode = 'traditional';
19486
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
19487
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19488
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
19489
'', '', 'was inserted' FROM t0_template
19490
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
19491
ERROR 22012: Division by 0
19494
# check transactions-8 success: 1
19495
# INFO: Storage engine used for t1 seems to be unable to revert
19496
# changes made by the failing statement.
19497
SET @@session.sql_mode = '';
19499
DELETE FROM t1 WHERE f_charbig = 'was inserted';
19501
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
19503
# check special-1 success: 1
19504
UPDATE t1 SET f_charbig = '';
19506
# check special-2 success: 1
19507
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
19508
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
19509
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
19510
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19511
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19512
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19513
'just inserted' FROM t0_template
19514
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19515
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
19517
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19518
f_charbig = 'updated by trigger'
19519
WHERE f_int1 = new.f_int1;
19521
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19522
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
19523
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19525
# check trigger-1 success: 1
19526
DROP TRIGGER trg_1;
19527
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19528
f_int2 = CAST(f_char1 AS SIGNED INT),
19529
f_charbig = 'just inserted'
19530
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19532
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19533
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19534
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19535
'just inserted' FROM t0_template
19536
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19537
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
19539
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19540
f_charbig = 'updated by trigger'
19541
WHERE f_int1 = new.f_int1;
19543
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19544
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
19545
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19547
# check trigger-2 success: 1
19548
DROP TRIGGER trg_1;
19549
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19550
f_int2 = CAST(f_char1 AS SIGNED INT),
19551
f_charbig = 'just inserted'
19552
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19554
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19555
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19556
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19557
'just inserted' FROM t0_template
19558
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19559
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
19561
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19562
f_charbig = 'updated by trigger'
19563
WHERE f_int1 = new.f_int1;
19565
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
19566
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19568
# check trigger-3 success: 1
19569
DROP TRIGGER trg_1;
19570
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19571
f_int2 = CAST(f_char1 AS SIGNED INT),
19572
f_charbig = 'just inserted'
19573
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19575
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19576
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19577
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19578
'just inserted' FROM t0_template
19579
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19580
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
19582
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19583
f_charbig = 'updated by trigger'
19584
WHERE f_int1 = - old.f_int1;
19586
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
19587
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19589
# check trigger-4 success: 1
19590
DROP TRIGGER trg_1;
19591
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19592
f_int2 = CAST(f_char1 AS SIGNED INT),
19593
f_charbig = 'just inserted'
19594
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19596
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19597
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19598
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19599
'just inserted' FROM t0_template
19600
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19601
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
19603
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19604
f_charbig = 'updated by trigger'
19605
WHERE f_int1 = new.f_int1;
19607
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
19608
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19610
# check trigger-5 success: 1
19611
DROP TRIGGER trg_1;
19612
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19613
f_int2 = CAST(f_char1 AS SIGNED INT),
19614
f_charbig = 'just inserted'
19615
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19617
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19618
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19619
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19620
'just inserted' FROM t0_template
19621
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19622
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
19624
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19625
f_charbig = 'updated by trigger'
19626
WHERE f_int1 = - old.f_int1;
19628
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
19629
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19631
# check trigger-6 success: 1
19632
DROP TRIGGER trg_1;
19633
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19634
f_int2 = CAST(f_char1 AS SIGNED INT),
19635
f_charbig = 'just inserted'
19636
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19638
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19639
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19640
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19641
'just inserted' FROM t0_template
19642
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19643
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
19645
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19646
f_charbig = 'updated by trigger'
19647
WHERE f_int1 = - old.f_int1;
19650
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19652
# check trigger-7 success: 1
19653
DROP TRIGGER trg_1;
19654
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19655
f_int2 = CAST(f_char1 AS SIGNED INT),
19656
f_charbig = 'just inserted'
19657
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19659
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19660
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19661
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19662
'just inserted' FROM t0_template
19663
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19664
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
19666
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19667
f_charbig = 'updated by trigger'
19668
WHERE f_int1 = - old.f_int1;
19671
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19673
# check trigger-8 success: 1
19674
DROP TRIGGER trg_1;
19675
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19676
f_int2 = CAST(f_char1 AS SIGNED INT),
19677
f_charbig = 'just inserted'
19678
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19680
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19682
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19683
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
19685
SET new.f_int1 = old.f_int1 + @max_row,
19686
new.f_int2 = old.f_int2 - @max_row,
19687
new.f_charbig = '####updated per update trigger####';
19690
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
19691
f_charbig = '####updated per update statement itself####';
19693
# check trigger-9 success: 1
19694
DROP TRIGGER trg_2;
19695
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19696
f_int2 = CAST(f_char1 AS SIGNED INT),
19697
f_charbig = CONCAT('===',f_char1,'===');
19698
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
19700
SET new.f_int1 = new.f_int1 + @max_row,
19701
new.f_int2 = new.f_int2 - @max_row,
19702
new.f_charbig = '####updated per update trigger####';
19705
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
19706
f_charbig = '####updated per update statement itself####';
19708
# check trigger-10 success: 1
19709
DROP TRIGGER trg_2;
19710
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19711
f_int2 = CAST(f_char1 AS SIGNED INT),
19712
f_charbig = CONCAT('===',f_char1,'===');
19713
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
19715
SET new.f_int1 = @my_max1 + @counter,
19716
new.f_int2 = @my_min2 - @counter,
19717
new.f_charbig = '####updated per insert trigger####';
19718
SET @counter = @counter + 1;
19721
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
19722
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19723
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
19724
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
19725
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
19727
DROP TRIGGER trg_3;
19729
# check trigger-11 success: 1
19731
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
19732
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
19733
AND f_charbig = '####updated per insert trigger####';
19734
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
19736
SET new.f_int1 = @my_max1 + @counter,
19737
new.f_int2 = @my_min2 - @counter,
19738
new.f_charbig = '####updated per insert trigger####';
19739
SET @counter = @counter + 1;
19742
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
19743
INSERT INTO t1 (f_char1, f_char2, f_charbig)
19744
SELECT CAST(f_int1 AS CHAR),
19745
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
19746
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
19748
DROP TRIGGER trg_3;
19750
# check trigger-12 success: 1
19752
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
19753
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
19754
AND f_charbig = '####updated per insert trigger####';
19756
Table Op Msg_type Msg_text
19757
test.t1 analyze status OK
19758
CHECK TABLE t1 EXTENDED;
19759
Table Op Msg_type Msg_text
19760
test.t1 check status OK
19761
CHECKSUM TABLE t1 EXTENDED;
19763
test.t1 <some_value>
19765
Table Op Msg_type Msg_text
19766
test.t1 optimize status OK
19767
# check layout success: 1
19768
REPAIR TABLE t1 EXTENDED;
19769
Table Op Msg_type Msg_text
19770
test.t1 repair status OK
19771
# check layout success: 1
19774
# check TRUNCATE success: 1
19775
# check layout success: 1
19776
# End usability test (inc/partition_check.inc)
19783
f_charbig VARCHAR(1000)
19786
PARTITION BY LIST(ABS(MOD(f_int1,2)))
19787
SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3
19788
(PARTITION part1 VALUES IN (0),
19789
PARTITION part2 VALUES IN (1),
19790
PARTITION part3 VALUES IN (NULL));
19791
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
19792
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
19793
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
19794
ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
19795
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
19796
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
19797
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
19798
# Start usability test (inc/partition_check.inc)
19800
SHOW CREATE TABLE t1;
19802
t1 CREATE TABLE `t1` (
19803
`f_int1` bigint(20) DEFAULT NULL,
19804
`f_int2` bigint(20) DEFAULT NULL,
19805
`f_char1` char(20) DEFAULT NULL,
19806
`f_char2` char(20) DEFAULT NULL,
19807
`f_charbig` varchar(1000) DEFAULT NULL
19808
) ENGINE=MyISAM DEFAULT CHARSET=latin1
19809
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
19810
SUBPARTITION BY KEY (f_int2)
19812
(PARTITION part1 VALUES IN (0) ENGINE = MyISAM,
19813
PARTITION part2 VALUES IN (1) ENGINE = MyISAM,
19814
PARTITION part3 VALUES IN (NULL) ENGINE = MyISAM) */
19817
t1#P#part1#SP#part1sp0.MYD
19818
t1#P#part1#SP#part1sp0.MYI
19819
t1#P#part1#SP#part1sp1.MYD
19820
t1#P#part1#SP#part1sp1.MYI
19821
t1#P#part1#SP#part1sp2.MYD
19822
t1#P#part1#SP#part1sp2.MYI
19823
t1#P#part2#SP#part2sp0.MYD
19824
t1#P#part2#SP#part2sp0.MYI
19825
t1#P#part2#SP#part2sp1.MYD
19826
t1#P#part2#SP#part2sp1.MYI
19827
t1#P#part2#SP#part2sp2.MYD
19828
t1#P#part2#SP#part2sp2.MYI
19829
t1#P#part3#SP#part3sp0.MYD
19830
t1#P#part3#SP#part3sp0.MYI
19831
t1#P#part3#SP#part3sp1.MYD
19832
t1#P#part3#SP#part3sp1.MYI
19833
t1#P#part3#SP#part3sp2.MYD
19834
t1#P#part3#SP#part3sp2.MYI
19838
# check prerequisites-1 success: 1
19839
# check COUNT(*) success: 1
19840
# check MIN/MAX(f_int1) success: 1
19841
# check MIN/MAX(f_int2) success: 1
19842
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19843
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
19844
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
19845
WHERE f_int1 IN (2,3);
19846
# check prerequisites-3 success: 1
19847
DELETE FROM t1 WHERE f_charbig = 'delete me';
19848
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
19849
# check read via f_int1 success: 1
19850
# check read via f_int2 success: 1
19852
# check multiple-1 success: 1
19853
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
19855
# check multiple-2 success: 1
19856
INSERT INTO t1 SELECT * FROM t0_template
19857
WHERE MOD(f_int1,3) = 0;
19859
# check multiple-3 success: 1
19860
UPDATE t1 SET f_int1 = f_int1 + @max_row
19861
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
19862
AND @max_row_div2 + @max_row_div4;
19864
# check multiple-4 success: 1
19866
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
19867
AND @max_row_div2 + @max_row_div4 + @max_row;
19869
# check multiple-5 success: 1
19870
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
19872
SET f_int1 = @cur_value , f_int2 = @cur_value,
19873
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
19874
f_charbig = '#SINGLE#';
19876
# check single-1 success: 1
19877
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
19879
SET f_int1 = @cur_value , f_int2 = @cur_value,
19880
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
19881
f_charbig = '#SINGLE#';
19883
# check single-2 success: 1
19884
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
19885
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
19886
UPDATE t1 SET f_int1 = @cur_value2
19887
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
19889
# check single-3 success: 1
19890
SET @cur_value1= -1;
19891
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
19892
UPDATE t1 SET f_int1 = @cur_value1
19893
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
19895
# check single-4 success: 1
19896
SELECT MAX(f_int1) INTO @cur_value FROM t1;
19897
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
19899
# check single-5 success: 1
19900
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
19902
# check single-6 success: 1
19903
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
19905
# check single-7 success: 1
19906
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
19907
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
19908
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
19909
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
19910
f_charbig = '#NULL#';
19912
SET f_int1 = NULL , f_int2 = -@max_row,
19913
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
19914
f_charbig = '#NULL#';
19915
# check null success: 1
19917
# check null-1 success: 1
19918
UPDATE t1 SET f_int1 = -@max_row
19919
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
19920
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
19922
# check null-2 success: 1
19923
UPDATE t1 SET f_int1 = NULL
19924
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
19925
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
19927
# check null-3 success: 1
19929
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
19930
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
19932
# check null-4 success: 1
19934
WHERE f_int1 = 0 AND f_int2 = 0
19935
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
19936
AND f_charbig = '#NULL#';
19938
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19939
SELECT f_int1, f_int1, '', '', 'was inserted'
19940
FROM t0_template source_tab
19941
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
19943
# check transactions-1 success: 1
19946
# check transactions-2 success: 1
19949
# check transactions-3 success: 1
19950
DELETE FROM t1 WHERE f_charbig = 'was inserted';
19954
# check transactions-4 success: 1
19955
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19956
SELECT f_int1, f_int1, '', '', 'was inserted'
19957
FROM t0_template source_tab
19958
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
19960
# check transactions-5 success: 1
19963
Warning 1196 Some non-transactional changed tables couldn't be rolled back
19965
# check transactions-6 success: 1
19966
# INFO: Storage engine used for t1 seems to be not transactional.
19969
# check transactions-7 success: 1
19970
DELETE FROM t1 WHERE f_charbig = 'was inserted';
19972
SET @@session.sql_mode = 'traditional';
19973
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
19974
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19975
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
19976
'', '', 'was inserted' FROM t0_template
19977
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
19978
ERROR 22012: Division by 0
19981
# check transactions-8 success: 1
19982
# INFO: Storage engine used for t1 seems to be unable to revert
19983
# changes made by the failing statement.
19984
SET @@session.sql_mode = '';
19986
DELETE FROM t1 WHERE f_charbig = 'was inserted';
19988
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
19990
# check special-1 success: 1
19991
UPDATE t1 SET f_charbig = '';
19993
# check special-2 success: 1
19994
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
19995
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
19996
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
19997
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19998
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19999
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20000
'just inserted' FROM t0_template
20001
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20002
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
20004
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20005
f_charbig = 'updated by trigger'
20006
WHERE f_int1 = new.f_int1;
20008
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20009
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
20010
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20012
# check trigger-1 success: 1
20013
DROP TRIGGER trg_1;
20014
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20015
f_int2 = CAST(f_char1 AS SIGNED INT),
20016
f_charbig = 'just inserted'
20017
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20019
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20020
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20021
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20022
'just inserted' FROM t0_template
20023
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20024
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
20026
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20027
f_charbig = 'updated by trigger'
20028
WHERE f_int1 = new.f_int1;
20030
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20031
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
20032
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20034
# check trigger-2 success: 1
20035
DROP TRIGGER trg_1;
20036
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20037
f_int2 = CAST(f_char1 AS SIGNED INT),
20038
f_charbig = 'just inserted'
20039
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20041
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20042
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20043
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20044
'just inserted' FROM t0_template
20045
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20046
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
20048
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20049
f_charbig = 'updated by trigger'
20050
WHERE f_int1 = new.f_int1;
20052
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
20053
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20055
# check trigger-3 success: 1
20056
DROP TRIGGER trg_1;
20057
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20058
f_int2 = CAST(f_char1 AS SIGNED INT),
20059
f_charbig = 'just inserted'
20060
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20062
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20063
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20064
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20065
'just inserted' FROM t0_template
20066
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20067
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
20069
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20070
f_charbig = 'updated by trigger'
20071
WHERE f_int1 = - old.f_int1;
20073
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
20074
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20076
# check trigger-4 success: 1
20077
DROP TRIGGER trg_1;
20078
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20079
f_int2 = CAST(f_char1 AS SIGNED INT),
20080
f_charbig = 'just inserted'
20081
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20083
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20084
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20085
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20086
'just inserted' FROM t0_template
20087
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20088
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
20090
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20091
f_charbig = 'updated by trigger'
20092
WHERE f_int1 = new.f_int1;
20094
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
20095
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20097
# check trigger-5 success: 1
20098
DROP TRIGGER trg_1;
20099
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20100
f_int2 = CAST(f_char1 AS SIGNED INT),
20101
f_charbig = 'just inserted'
20102
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20104
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20105
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20106
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20107
'just inserted' FROM t0_template
20108
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20109
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
20111
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20112
f_charbig = 'updated by trigger'
20113
WHERE f_int1 = - old.f_int1;
20115
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
20116
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20118
# check trigger-6 success: 1
20119
DROP TRIGGER trg_1;
20120
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20121
f_int2 = CAST(f_char1 AS SIGNED INT),
20122
f_charbig = 'just inserted'
20123
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20125
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20126
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20127
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20128
'just inserted' FROM t0_template
20129
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20130
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
20132
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20133
f_charbig = 'updated by trigger'
20134
WHERE f_int1 = - old.f_int1;
20137
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20139
# check trigger-7 success: 1
20140
DROP TRIGGER trg_1;
20141
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20142
f_int2 = CAST(f_char1 AS SIGNED INT),
20143
f_charbig = 'just inserted'
20144
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20146
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20147
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20148
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20149
'just inserted' FROM t0_template
20150
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20151
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
20153
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20154
f_charbig = 'updated by trigger'
20155
WHERE f_int1 = - old.f_int1;
20158
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20160
# check trigger-8 success: 1
20161
DROP TRIGGER trg_1;
20162
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20163
f_int2 = CAST(f_char1 AS SIGNED INT),
20164
f_charbig = 'just inserted'
20165
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20167
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20169
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20170
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
20172
SET new.f_int1 = old.f_int1 + @max_row,
20173
new.f_int2 = old.f_int2 - @max_row,
20174
new.f_charbig = '####updated per update trigger####';
20177
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
20178
f_charbig = '####updated per update statement itself####';
20180
# check trigger-9 success: 1
20181
DROP TRIGGER trg_2;
20182
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20183
f_int2 = CAST(f_char1 AS SIGNED INT),
20184
f_charbig = CONCAT('===',f_char1,'===');
20185
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
20187
SET new.f_int1 = new.f_int1 + @max_row,
20188
new.f_int2 = new.f_int2 - @max_row,
20189
new.f_charbig = '####updated per update trigger####';
20192
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
20193
f_charbig = '####updated per update statement itself####';
20195
# check trigger-10 success: 1
20196
DROP TRIGGER trg_2;
20197
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20198
f_int2 = CAST(f_char1 AS SIGNED INT),
20199
f_charbig = CONCAT('===',f_char1,'===');
20200
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
20202
SET new.f_int1 = @my_max1 + @counter,
20203
new.f_int2 = @my_min2 - @counter,
20204
new.f_charbig = '####updated per insert trigger####';
20205
SET @counter = @counter + 1;
20208
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
20209
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20210
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
20211
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
20212
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
20214
DROP TRIGGER trg_3;
20216
# check trigger-11 success: 1
20218
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
20219
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
20220
AND f_charbig = '####updated per insert trigger####';
20221
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
20223
SET new.f_int1 = @my_max1 + @counter,
20224
new.f_int2 = @my_min2 - @counter,
20225
new.f_charbig = '####updated per insert trigger####';
20226
SET @counter = @counter + 1;
20229
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
20230
INSERT INTO t1 (f_char1, f_char2, f_charbig)
20231
SELECT CAST(f_int1 AS CHAR),
20232
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
20233
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
20235
DROP TRIGGER trg_3;
20237
# check trigger-12 success: 1
20239
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
20240
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
20241
AND f_charbig = '####updated per insert trigger####';
20243
Table Op Msg_type Msg_text
20244
test.t1 analyze status OK
20245
CHECK TABLE t1 EXTENDED;
20246
Table Op Msg_type Msg_text
20247
test.t1 check status OK
20248
CHECKSUM TABLE t1 EXTENDED;
20250
test.t1 <some_value>
20252
Table Op Msg_type Msg_text
20253
test.t1 optimize status OK
20254
# check layout success: 1
20255
REPAIR TABLE t1 EXTENDED;
20256
Table Op Msg_type Msg_text
20257
test.t1 repair status OK
20258
# check layout success: 1
20261
# check TRUNCATE success: 1
20262
# check layout success: 1
20263
# End usability test (inc/partition_check.inc)
20265
# 1.3.3 UNIQUE INDEX exists
20266
DROP TABLE IF EXISTS t1;
20272
f_charbig VARCHAR(1000)
20273
, UNIQUE INDEX uidx (f_int1,f_int2)
20275
PARTITION BY HASH(f_int1) PARTITIONS 2;
20276
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
20277
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
20278
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
20279
ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
20280
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
20281
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
20282
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
20283
# Start usability test (inc/partition_check.inc)
20285
SHOW CREATE TABLE t1;
20287
t1 CREATE TABLE `t1` (
20288
`f_int1` bigint(20) DEFAULT NULL,
20289
`f_int2` bigint(20) DEFAULT NULL,
20290
`f_char1` char(20) DEFAULT NULL,
20291
`f_char2` char(20) DEFAULT NULL,
20292
`f_charbig` varchar(1000) DEFAULT NULL,
20293
UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
20294
) ENGINE=MyISAM DEFAULT CHARSET=latin1
20295
/*!50100 PARTITION BY HASH (f_int1)
20306
# check prerequisites-1 success: 1
20307
# check COUNT(*) success: 1
20308
# check MIN/MAX(f_int1) success: 1
20309
# check MIN/MAX(f_int2) success: 1
20310
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20311
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
20312
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
20313
WHERE f_int1 IN (2,3);
20314
ERROR 23000: Duplicate entry '2-2' for key 'uidx'
20315
# check prerequisites-3 success: 1
20316
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
20317
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20318
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
20319
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
20320
WHERE f_int1 IN (2,3);
20321
DELETE FROM t1 WHERE f_charbig = 'delete me';
20322
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20323
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
20324
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
20325
WHERE f_int1 IN (2,3);
20326
DELETE FROM t1 WHERE f_charbig = 'delete me';
20327
# check read via f_int1 success: 1
20328
# check read via f_int2 success: 1
20330
# check multiple-1 success: 1
20331
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
20333
# check multiple-2 success: 1
20334
INSERT INTO t1 SELECT * FROM t0_template
20335
WHERE MOD(f_int1,3) = 0;
20337
# check multiple-3 success: 1
20338
UPDATE t1 SET f_int1 = f_int1 + @max_row
20339
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
20340
AND @max_row_div2 + @max_row_div4;
20342
# check multiple-4 success: 1
20344
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
20345
AND @max_row_div2 + @max_row_div4 + @max_row;
20347
# check multiple-5 success: 1
20348
SELECT COUNT(*) INTO @try_count FROM t0_template
20349
WHERE MOD(f_int1,3) = 0
20350
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
20351
SELECT COUNT(*) INTO @clash_count
20352
FROM t1 INNER JOIN t0_template USING(f_int1)
20353
WHERE MOD(f_int1,3) = 0
20354
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
20355
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
20357
SET f_int1 = @cur_value , f_int2 = @cur_value,
20358
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
20359
f_charbig = '#SINGLE#';
20361
# check single-1 success: 1
20362
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
20364
SET f_int1 = @cur_value , f_int2 = @cur_value,
20365
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
20366
f_charbig = '#SINGLE#';
20368
# check single-2 success: 1
20369
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
20370
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
20371
UPDATE t1 SET f_int1 = @cur_value2
20372
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
20374
# check single-3 success: 1
20375
SET @cur_value1= -1;
20376
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
20377
UPDATE t1 SET f_int1 = @cur_value1
20378
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
20380
# check single-4 success: 1
20381
SELECT MAX(f_int1) INTO @cur_value FROM t1;
20382
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
20384
# check single-5 success: 1
20385
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
20387
# check single-6 success: 1
20388
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
20390
# check single-7 success: 1
20391
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
20392
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
20393
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
20394
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
20395
f_charbig = '#NULL#';
20397
SET f_int1 = NULL , f_int2 = -@max_row,
20398
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
20399
f_charbig = '#NULL#';
20400
# check null success: 1
20402
# check null-1 success: 1
20403
UPDATE t1 SET f_int1 = -@max_row
20404
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
20405
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
20407
# check null-2 success: 1
20408
UPDATE t1 SET f_int1 = NULL
20409
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
20410
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
20412
# check null-3 success: 1
20414
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
20415
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
20417
# check null-4 success: 1
20419
WHERE f_int1 = 0 AND f_int2 = 0
20420
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
20421
AND f_charbig = '#NULL#';
20422
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20423
SELECT f_int1, f_int1, '', '', 'was inserted'
20424
FROM t0_template source_tab
20425
WHERE MOD(f_int1,3) = 0
20426
AND f_int1 BETWEEN @max_row_div2 AND @max_row
20428
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
20429
f_int2 = 2 * @max_row + source_tab.f_int1,
20430
f_charbig = 'was updated';
20432
# check unique-1-a success: 1
20434
# check unique-1-b success: 1
20435
DELETE FROM t1 WHERE f_charbig = 'was inserted';
20436
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20437
f_int2 = CAST(f_char1 AS SIGNED INT),
20438
f_charbig = CONCAT('===',f_char1,'===')
20439
WHERE f_charbig = 'was updated';
20440
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20441
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
20442
FROM t0_template source_tab
20443
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
20445
# check replace success: 1
20447
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
20449
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
20450
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
20451
UPDATE t1 SET f_int2 = f_int1,
20452
f_char1 = CAST(f_int1 AS CHAR),
20453
f_char2 = CAST(f_int1 AS CHAR),
20454
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
20455
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
20457
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20458
SELECT f_int1, f_int1, '', '', 'was inserted'
20459
FROM t0_template source_tab
20460
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
20462
# check transactions-1 success: 1
20465
# check transactions-2 success: 1
20468
# check transactions-3 success: 1
20469
DELETE FROM t1 WHERE f_charbig = 'was inserted';
20473
# check transactions-4 success: 1
20474
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20475
SELECT f_int1, f_int1, '', '', 'was inserted'
20476
FROM t0_template source_tab
20477
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
20479
# check transactions-5 success: 1
20482
Warning 1196 Some non-transactional changed tables couldn't be rolled back
20484
# check transactions-6 success: 1
20485
# INFO: Storage engine used for t1 seems to be not transactional.
20488
# check transactions-7 success: 1
20489
DELETE FROM t1 WHERE f_charbig = 'was inserted';
20491
SET @@session.sql_mode = 'traditional';
20492
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
20493
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20494
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
20495
'', '', 'was inserted' FROM t0_template
20496
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
20497
ERROR 22012: Division by 0
20500
# check transactions-8 success: 1
20501
# INFO: Storage engine used for t1 seems to be unable to revert
20502
# changes made by the failing statement.
20503
SET @@session.sql_mode = '';
20505
DELETE FROM t1 WHERE f_charbig = 'was inserted';
20507
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
20509
# check special-1 success: 1
20510
UPDATE t1 SET f_charbig = '';
20512
# check special-2 success: 1
20513
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
20514
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
20515
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
20516
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20517
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20518
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20519
'just inserted' FROM t0_template
20520
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20521
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
20523
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20524
f_charbig = 'updated by trigger'
20525
WHERE f_int1 = new.f_int1;
20527
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20528
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
20529
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20531
# check trigger-1 success: 1
20532
DROP TRIGGER trg_1;
20533
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20534
f_int2 = CAST(f_char1 AS SIGNED INT),
20535
f_charbig = 'just inserted'
20536
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20538
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20539
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20540
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20541
'just inserted' FROM t0_template
20542
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20543
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
20545
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20546
f_charbig = 'updated by trigger'
20547
WHERE f_int1 = new.f_int1;
20549
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20550
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
20551
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20553
# check trigger-2 success: 1
20554
DROP TRIGGER trg_1;
20555
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20556
f_int2 = CAST(f_char1 AS SIGNED INT),
20557
f_charbig = 'just inserted'
20558
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20560
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20561
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20562
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20563
'just inserted' FROM t0_template
20564
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20565
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
20567
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20568
f_charbig = 'updated by trigger'
20569
WHERE f_int1 = new.f_int1;
20571
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
20572
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20574
# check trigger-3 success: 1
20575
DROP TRIGGER trg_1;
20576
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20577
f_int2 = CAST(f_char1 AS SIGNED INT),
20578
f_charbig = 'just inserted'
20579
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20581
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20582
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20583
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20584
'just inserted' FROM t0_template
20585
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20586
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
20588
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20589
f_charbig = 'updated by trigger'
20590
WHERE f_int1 = - old.f_int1;
20592
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
20593
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20595
# check trigger-4 success: 1
20596
DROP TRIGGER trg_1;
20597
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20598
f_int2 = CAST(f_char1 AS SIGNED INT),
20599
f_charbig = 'just inserted'
20600
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20602
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20603
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20604
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20605
'just inserted' FROM t0_template
20606
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20607
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
20609
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20610
f_charbig = 'updated by trigger'
20611
WHERE f_int1 = new.f_int1;
20613
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
20614
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20616
# check trigger-5 success: 1
20617
DROP TRIGGER trg_1;
20618
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20619
f_int2 = CAST(f_char1 AS SIGNED INT),
20620
f_charbig = 'just inserted'
20621
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20623
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20624
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20625
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20626
'just inserted' FROM t0_template
20627
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20628
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
20630
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20631
f_charbig = 'updated by trigger'
20632
WHERE f_int1 = - old.f_int1;
20634
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
20635
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20637
# check trigger-6 success: 1
20638
DROP TRIGGER trg_1;
20639
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20640
f_int2 = CAST(f_char1 AS SIGNED INT),
20641
f_charbig = 'just inserted'
20642
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20644
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20645
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20646
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20647
'just inserted' FROM t0_template
20648
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20649
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
20651
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20652
f_charbig = 'updated by trigger'
20653
WHERE f_int1 = - old.f_int1;
20656
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20658
# check trigger-7 success: 1
20659
DROP TRIGGER trg_1;
20660
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20661
f_int2 = CAST(f_char1 AS SIGNED INT),
20662
f_charbig = 'just inserted'
20663
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20665
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20666
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20667
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20668
'just inserted' FROM t0_template
20669
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20670
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
20672
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20673
f_charbig = 'updated by trigger'
20674
WHERE f_int1 = - old.f_int1;
20677
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20679
# check trigger-8 success: 1
20680
DROP TRIGGER trg_1;
20681
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20682
f_int2 = CAST(f_char1 AS SIGNED INT),
20683
f_charbig = 'just inserted'
20684
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20686
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20688
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20689
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
20691
SET new.f_int1 = old.f_int1 + @max_row,
20692
new.f_int2 = old.f_int2 - @max_row,
20693
new.f_charbig = '####updated per update trigger####';
20696
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
20697
f_charbig = '####updated per update statement itself####';
20699
# check trigger-9 success: 1
20700
DROP TRIGGER trg_2;
20701
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20702
f_int2 = CAST(f_char1 AS SIGNED INT),
20703
f_charbig = CONCAT('===',f_char1,'===');
20704
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
20706
SET new.f_int1 = new.f_int1 + @max_row,
20707
new.f_int2 = new.f_int2 - @max_row,
20708
new.f_charbig = '####updated per update trigger####';
20711
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
20712
f_charbig = '####updated per update statement itself####';
20714
# check trigger-10 success: 1
20715
DROP TRIGGER trg_2;
20716
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20717
f_int2 = CAST(f_char1 AS SIGNED INT),
20718
f_charbig = CONCAT('===',f_char1,'===');
20719
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
20721
SET new.f_int1 = @my_max1 + @counter,
20722
new.f_int2 = @my_min2 - @counter,
20723
new.f_charbig = '####updated per insert trigger####';
20724
SET @counter = @counter + 1;
20727
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
20728
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20729
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
20730
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
20731
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
20733
DROP TRIGGER trg_3;
20735
# check trigger-11 success: 1
20737
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
20738
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
20739
AND f_charbig = '####updated per insert trigger####';
20740
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
20742
SET new.f_int1 = @my_max1 + @counter,
20743
new.f_int2 = @my_min2 - @counter,
20744
new.f_charbig = '####updated per insert trigger####';
20745
SET @counter = @counter + 1;
20748
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
20749
INSERT INTO t1 (f_char1, f_char2, f_charbig)
20750
SELECT CAST(f_int1 AS CHAR),
20751
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
20752
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
20754
DROP TRIGGER trg_3;
20756
# check trigger-12 success: 1
20758
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
20759
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
20760
AND f_charbig = '####updated per insert trigger####';
20762
Table Op Msg_type Msg_text
20763
test.t1 analyze status OK
20764
CHECK TABLE t1 EXTENDED;
20765
Table Op Msg_type Msg_text
20766
test.t1 check status OK
20767
CHECKSUM TABLE t1 EXTENDED;
20769
test.t1 <some_value>
20771
Table Op Msg_type Msg_text
20772
test.t1 optimize status OK
20773
# check layout success: 1
20774
REPAIR TABLE t1 EXTENDED;
20775
Table Op Msg_type Msg_text
20776
test.t1 repair status OK
20777
# check layout success: 1
20780
# check TRUNCATE success: 1
20781
# check layout success: 1
20782
# End usability test (inc/partition_check.inc)
20789
f_charbig VARCHAR(1000)
20790
, UNIQUE INDEX uidx (f_int1,f_int2)
20792
PARTITION BY KEY(f_int1) PARTITIONS 5;
20793
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
20794
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
20795
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
20796
ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
20797
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
20798
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
20799
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
20800
# Start usability test (inc/partition_check.inc)
20802
SHOW CREATE TABLE t1;
20804
t1 CREATE TABLE `t1` (
20805
`f_int1` bigint(20) DEFAULT NULL,
20806
`f_int2` bigint(20) DEFAULT NULL,
20807
`f_char1` char(20) DEFAULT NULL,
20808
`f_char2` char(20) DEFAULT NULL,
20809
`f_charbig` varchar(1000) DEFAULT NULL,
20810
UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
20811
) ENGINE=MyISAM DEFAULT CHARSET=latin1
20812
/*!50100 PARTITION BY KEY (f_int1)
20829
# check prerequisites-1 success: 1
20830
# check COUNT(*) success: 1
20831
# check MIN/MAX(f_int1) success: 1
20832
# check MIN/MAX(f_int2) success: 1
20833
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20834
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
20835
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
20836
WHERE f_int1 IN (2,3);
20837
ERROR 23000: Duplicate entry '2-2' for key 'uidx'
20838
# check prerequisites-3 success: 1
20839
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
20840
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20841
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
20842
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
20843
WHERE f_int1 IN (2,3);
20844
DELETE FROM t1 WHERE f_charbig = 'delete me';
20845
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20846
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
20847
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
20848
WHERE f_int1 IN (2,3);
20849
DELETE FROM t1 WHERE f_charbig = 'delete me';
20850
# check read via f_int1 success: 1
20851
# check read via f_int2 success: 1
20853
# check multiple-1 success: 1
20854
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
20856
# check multiple-2 success: 1
20857
INSERT INTO t1 SELECT * FROM t0_template
20858
WHERE MOD(f_int1,3) = 0;
20860
# check multiple-3 success: 1
20861
UPDATE t1 SET f_int1 = f_int1 + @max_row
20862
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
20863
AND @max_row_div2 + @max_row_div4;
20865
# check multiple-4 success: 1
20867
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
20868
AND @max_row_div2 + @max_row_div4 + @max_row;
20870
# check multiple-5 success: 1
20871
SELECT COUNT(*) INTO @try_count FROM t0_template
20872
WHERE MOD(f_int1,3) = 0
20873
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
20874
SELECT COUNT(*) INTO @clash_count
20875
FROM t1 INNER JOIN t0_template USING(f_int1)
20876
WHERE MOD(f_int1,3) = 0
20877
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
20878
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
20880
SET f_int1 = @cur_value , f_int2 = @cur_value,
20881
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
20882
f_charbig = '#SINGLE#';
20884
# check single-1 success: 1
20885
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
20887
SET f_int1 = @cur_value , f_int2 = @cur_value,
20888
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
20889
f_charbig = '#SINGLE#';
20891
# check single-2 success: 1
20892
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
20893
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
20894
UPDATE t1 SET f_int1 = @cur_value2
20895
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
20897
# check single-3 success: 1
20898
SET @cur_value1= -1;
20899
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
20900
UPDATE t1 SET f_int1 = @cur_value1
20901
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
20903
# check single-4 success: 1
20904
SELECT MAX(f_int1) INTO @cur_value FROM t1;
20905
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
20907
# check single-5 success: 1
20908
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
20910
# check single-6 success: 1
20911
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
20913
# check single-7 success: 1
20914
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
20915
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
20916
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
20917
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
20918
f_charbig = '#NULL#';
20920
SET f_int1 = NULL , f_int2 = -@max_row,
20921
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
20922
f_charbig = '#NULL#';
20923
# check null success: 1
20925
# check null-1 success: 1
20926
UPDATE t1 SET f_int1 = -@max_row
20927
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
20928
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
20930
# check null-2 success: 1
20931
UPDATE t1 SET f_int1 = NULL
20932
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
20933
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
20935
# check null-3 success: 1
20937
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
20938
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
20940
# check null-4 success: 1
20942
WHERE f_int1 = 0 AND f_int2 = 0
20943
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
20944
AND f_charbig = '#NULL#';
20945
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20946
SELECT f_int1, f_int1, '', '', 'was inserted'
20947
FROM t0_template source_tab
20948
WHERE MOD(f_int1,3) = 0
20949
AND f_int1 BETWEEN @max_row_div2 AND @max_row
20951
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
20952
f_int2 = 2 * @max_row + source_tab.f_int1,
20953
f_charbig = 'was updated';
20955
# check unique-1-a success: 1
20957
# check unique-1-b success: 1
20958
DELETE FROM t1 WHERE f_charbig = 'was inserted';
20959
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20960
f_int2 = CAST(f_char1 AS SIGNED INT),
20961
f_charbig = CONCAT('===',f_char1,'===')
20962
WHERE f_charbig = 'was updated';
20963
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20964
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
20965
FROM t0_template source_tab
20966
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
20968
# check replace success: 1
20970
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
20972
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
20973
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
20974
UPDATE t1 SET f_int2 = f_int1,
20975
f_char1 = CAST(f_int1 AS CHAR),
20976
f_char2 = CAST(f_int1 AS CHAR),
20977
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
20978
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
20980
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20981
SELECT f_int1, f_int1, '', '', 'was inserted'
20982
FROM t0_template source_tab
20983
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
20985
# check transactions-1 success: 1
20988
# check transactions-2 success: 1
20991
# check transactions-3 success: 1
20992
DELETE FROM t1 WHERE f_charbig = 'was inserted';
20996
# check transactions-4 success: 1
20997
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20998
SELECT f_int1, f_int1, '', '', 'was inserted'
20999
FROM t0_template source_tab
21000
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
21002
# check transactions-5 success: 1
21005
Warning 1196 Some non-transactional changed tables couldn't be rolled back
21007
# check transactions-6 success: 1
21008
# INFO: Storage engine used for t1 seems to be not transactional.
21011
# check transactions-7 success: 1
21012
DELETE FROM t1 WHERE f_charbig = 'was inserted';
21014
SET @@session.sql_mode = 'traditional';
21015
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
21016
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21017
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
21018
'', '', 'was inserted' FROM t0_template
21019
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
21020
ERROR 22012: Division by 0
21023
# check transactions-8 success: 1
21024
# INFO: Storage engine used for t1 seems to be unable to revert
21025
# changes made by the failing statement.
21026
SET @@session.sql_mode = '';
21028
DELETE FROM t1 WHERE f_charbig = 'was inserted';
21030
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
21032
# check special-1 success: 1
21033
UPDATE t1 SET f_charbig = '';
21035
# check special-2 success: 1
21036
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
21037
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
21038
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
21039
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21040
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21041
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21042
'just inserted' FROM t0_template
21043
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21044
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
21046
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21047
f_charbig = 'updated by trigger'
21048
WHERE f_int1 = new.f_int1;
21050
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21051
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
21052
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21054
# check trigger-1 success: 1
21055
DROP TRIGGER trg_1;
21056
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21057
f_int2 = CAST(f_char1 AS SIGNED INT),
21058
f_charbig = 'just inserted'
21059
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21061
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21062
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21063
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21064
'just inserted' FROM t0_template
21065
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21066
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
21068
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21069
f_charbig = 'updated by trigger'
21070
WHERE f_int1 = new.f_int1;
21072
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21073
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
21074
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21076
# check trigger-2 success: 1
21077
DROP TRIGGER trg_1;
21078
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21079
f_int2 = CAST(f_char1 AS SIGNED INT),
21080
f_charbig = 'just inserted'
21081
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21083
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21084
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21085
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21086
'just inserted' FROM t0_template
21087
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21088
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
21090
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21091
f_charbig = 'updated by trigger'
21092
WHERE f_int1 = new.f_int1;
21094
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
21095
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21097
# check trigger-3 success: 1
21098
DROP TRIGGER trg_1;
21099
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21100
f_int2 = CAST(f_char1 AS SIGNED INT),
21101
f_charbig = 'just inserted'
21102
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21104
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21105
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21106
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21107
'just inserted' FROM t0_template
21108
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21109
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
21111
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21112
f_charbig = 'updated by trigger'
21113
WHERE f_int1 = - old.f_int1;
21115
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
21116
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21118
# check trigger-4 success: 1
21119
DROP TRIGGER trg_1;
21120
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21121
f_int2 = CAST(f_char1 AS SIGNED INT),
21122
f_charbig = 'just inserted'
21123
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21125
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21126
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21127
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21128
'just inserted' FROM t0_template
21129
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21130
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
21132
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21133
f_charbig = 'updated by trigger'
21134
WHERE f_int1 = new.f_int1;
21136
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
21137
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21139
# check trigger-5 success: 1
21140
DROP TRIGGER trg_1;
21141
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21142
f_int2 = CAST(f_char1 AS SIGNED INT),
21143
f_charbig = 'just inserted'
21144
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21146
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21147
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21148
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21149
'just inserted' FROM t0_template
21150
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21151
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
21153
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21154
f_charbig = 'updated by trigger'
21155
WHERE f_int1 = - old.f_int1;
21157
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
21158
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21160
# check trigger-6 success: 1
21161
DROP TRIGGER trg_1;
21162
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21163
f_int2 = CAST(f_char1 AS SIGNED INT),
21164
f_charbig = 'just inserted'
21165
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21167
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21168
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21169
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21170
'just inserted' FROM t0_template
21171
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21172
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
21174
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21175
f_charbig = 'updated by trigger'
21176
WHERE f_int1 = - old.f_int1;
21179
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21181
# check trigger-7 success: 1
21182
DROP TRIGGER trg_1;
21183
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21184
f_int2 = CAST(f_char1 AS SIGNED INT),
21185
f_charbig = 'just inserted'
21186
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21188
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21189
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21190
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21191
'just inserted' FROM t0_template
21192
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21193
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
21195
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21196
f_charbig = 'updated by trigger'
21197
WHERE f_int1 = - old.f_int1;
21200
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21202
# check trigger-8 success: 1
21203
DROP TRIGGER trg_1;
21204
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21205
f_int2 = CAST(f_char1 AS SIGNED INT),
21206
f_charbig = 'just inserted'
21207
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21209
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21211
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21212
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
21214
SET new.f_int1 = old.f_int1 + @max_row,
21215
new.f_int2 = old.f_int2 - @max_row,
21216
new.f_charbig = '####updated per update trigger####';
21219
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
21220
f_charbig = '####updated per update statement itself####';
21222
# check trigger-9 success: 1
21223
DROP TRIGGER trg_2;
21224
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21225
f_int2 = CAST(f_char1 AS SIGNED INT),
21226
f_charbig = CONCAT('===',f_char1,'===');
21227
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
21229
SET new.f_int1 = new.f_int1 + @max_row,
21230
new.f_int2 = new.f_int2 - @max_row,
21231
new.f_charbig = '####updated per update trigger####';
21234
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
21235
f_charbig = '####updated per update statement itself####';
21237
# check trigger-10 success: 1
21238
DROP TRIGGER trg_2;
21239
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21240
f_int2 = CAST(f_char1 AS SIGNED INT),
21241
f_charbig = CONCAT('===',f_char1,'===');
21242
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
21244
SET new.f_int1 = @my_max1 + @counter,
21245
new.f_int2 = @my_min2 - @counter,
21246
new.f_charbig = '####updated per insert trigger####';
21247
SET @counter = @counter + 1;
21250
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
21251
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21252
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
21253
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
21254
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
21256
DROP TRIGGER trg_3;
21258
# check trigger-11 success: 1
21260
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
21261
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
21262
AND f_charbig = '####updated per insert trigger####';
21263
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
21265
SET new.f_int1 = @my_max1 + @counter,
21266
new.f_int2 = @my_min2 - @counter,
21267
new.f_charbig = '####updated per insert trigger####';
21268
SET @counter = @counter + 1;
21271
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
21272
INSERT INTO t1 (f_char1, f_char2, f_charbig)
21273
SELECT CAST(f_int1 AS CHAR),
21274
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
21275
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
21277
DROP TRIGGER trg_3;
21279
# check trigger-12 success: 1
21281
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
21282
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
21283
AND f_charbig = '####updated per insert trigger####';
21285
Table Op Msg_type Msg_text
21286
test.t1 analyze status OK
21287
CHECK TABLE t1 EXTENDED;
21288
Table Op Msg_type Msg_text
21289
test.t1 check status OK
21290
CHECKSUM TABLE t1 EXTENDED;
21292
test.t1 <some_value>
21294
Table Op Msg_type Msg_text
21295
test.t1 optimize status OK
21296
# check layout success: 1
21297
REPAIR TABLE t1 EXTENDED;
21298
Table Op Msg_type Msg_text
21299
test.t1 repair status OK
21300
# check layout success: 1
21303
# check TRUNCATE success: 1
21304
# check layout success: 1
21305
# End usability test (inc/partition_check.inc)
21312
f_charbig VARCHAR(1000)
21313
, UNIQUE INDEX uidx (f_int1,f_int2)
21315
PARTITION BY LIST(MOD(f_int1,4))
21316
(PARTITION part_3 VALUES IN (-3),
21317
PARTITION part_2 VALUES IN (-2),
21318
PARTITION part_1 VALUES IN (-1),
21319
PARTITION part_N VALUES IN (NULL),
21320
PARTITION part0 VALUES IN (0),
21321
PARTITION part1 VALUES IN (1),
21322
PARTITION part2 VALUES IN (2),
21323
PARTITION part3 VALUES IN (3));
21324
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
21325
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
21326
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
21327
ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
21328
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
21329
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
21330
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
21331
# Start usability test (inc/partition_check.inc)
21333
SHOW CREATE TABLE t1;
21335
t1 CREATE TABLE `t1` (
21336
`f_int1` bigint(20) DEFAULT NULL,
21337
`f_int2` bigint(20) DEFAULT NULL,
21338
`f_char1` char(20) DEFAULT NULL,
21339
`f_char2` char(20) DEFAULT NULL,
21340
`f_charbig` varchar(1000) DEFAULT NULL,
21341
UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
21342
) ENGINE=MyISAM DEFAULT CHARSET=latin1
21343
/*!50100 PARTITION BY LIST (MOD(f_int1,4))
21344
(PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM,
21345
PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM,
21346
PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM,
21347
PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM,
21348
PARTITION part0 VALUES IN (0) ENGINE = MyISAM,
21349
PARTITION part1 VALUES IN (1) ENGINE = MyISAM,
21350
PARTITION part2 VALUES IN (2) ENGINE = MyISAM,
21351
PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */
21373
# check prerequisites-1 success: 1
21374
# check COUNT(*) success: 1
21375
# check MIN/MAX(f_int1) success: 1
21376
# check MIN/MAX(f_int2) success: 1
21377
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21378
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
21379
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
21380
WHERE f_int1 IN (2,3);
21381
ERROR 23000: Duplicate entry '2-2' for key 'uidx'
21382
# check prerequisites-3 success: 1
21383
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
21384
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21385
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
21386
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
21387
WHERE f_int1 IN (2,3);
21388
DELETE FROM t1 WHERE f_charbig = 'delete me';
21389
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21390
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
21391
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
21392
WHERE f_int1 IN (2,3);
21393
DELETE FROM t1 WHERE f_charbig = 'delete me';
21394
# check read via f_int1 success: 1
21395
# check read via f_int2 success: 1
21397
# check multiple-1 success: 1
21398
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
21400
# check multiple-2 success: 1
21401
INSERT INTO t1 SELECT * FROM t0_template
21402
WHERE MOD(f_int1,3) = 0;
21404
# check multiple-3 success: 1
21405
UPDATE t1 SET f_int1 = f_int1 + @max_row
21406
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
21407
AND @max_row_div2 + @max_row_div4;
21409
# check multiple-4 success: 1
21411
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
21412
AND @max_row_div2 + @max_row_div4 + @max_row;
21414
# check multiple-5 success: 1
21415
SELECT COUNT(*) INTO @try_count FROM t0_template
21416
WHERE MOD(f_int1,3) = 0
21417
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
21418
SELECT COUNT(*) INTO @clash_count
21419
FROM t1 INNER JOIN t0_template USING(f_int1)
21420
WHERE MOD(f_int1,3) = 0
21421
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
21422
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
21424
SET f_int1 = @cur_value , f_int2 = @cur_value,
21425
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
21426
f_charbig = '#SINGLE#';
21428
# check single-1 success: 1
21429
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
21431
SET f_int1 = @cur_value , f_int2 = @cur_value,
21432
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
21433
f_charbig = '#SINGLE#';
21435
# check single-2 success: 1
21436
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
21437
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
21438
UPDATE t1 SET f_int1 = @cur_value2
21439
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
21441
# check single-3 success: 1
21442
SET @cur_value1= -1;
21443
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
21444
UPDATE t1 SET f_int1 = @cur_value1
21445
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
21447
# check single-4 success: 1
21448
SELECT MAX(f_int1) INTO @cur_value FROM t1;
21449
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
21451
# check single-5 success: 1
21452
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
21454
# check single-6 success: 1
21455
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
21457
# check single-7 success: 1
21458
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
21459
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
21460
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
21461
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
21462
f_charbig = '#NULL#';
21464
SET f_int1 = NULL , f_int2 = -@max_row,
21465
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
21466
f_charbig = '#NULL#';
21467
# check null success: 1
21469
# check null-1 success: 1
21470
UPDATE t1 SET f_int1 = -@max_row
21471
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
21472
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
21474
# check null-2 success: 1
21475
UPDATE t1 SET f_int1 = NULL
21476
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
21477
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
21479
# check null-3 success: 1
21481
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
21482
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
21484
# check null-4 success: 1
21486
WHERE f_int1 = 0 AND f_int2 = 0
21487
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
21488
AND f_charbig = '#NULL#';
21489
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21490
SELECT f_int1, f_int1, '', '', 'was inserted'
21491
FROM t0_template source_tab
21492
WHERE MOD(f_int1,3) = 0
21493
AND f_int1 BETWEEN @max_row_div2 AND @max_row
21495
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
21496
f_int2 = 2 * @max_row + source_tab.f_int1,
21497
f_charbig = 'was updated';
21499
# check unique-1-a success: 1
21501
# check unique-1-b success: 1
21502
DELETE FROM t1 WHERE f_charbig = 'was inserted';
21503
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21504
f_int2 = CAST(f_char1 AS SIGNED INT),
21505
f_charbig = CONCAT('===',f_char1,'===')
21506
WHERE f_charbig = 'was updated';
21507
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21508
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
21509
FROM t0_template source_tab
21510
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
21512
# check replace success: 1
21514
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
21516
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
21517
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
21518
UPDATE t1 SET f_int2 = f_int1,
21519
f_char1 = CAST(f_int1 AS CHAR),
21520
f_char2 = CAST(f_int1 AS CHAR),
21521
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
21522
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
21524
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21525
SELECT f_int1, f_int1, '', '', 'was inserted'
21526
FROM t0_template source_tab
21527
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
21529
# check transactions-1 success: 1
21532
# check transactions-2 success: 1
21535
# check transactions-3 success: 1
21536
DELETE FROM t1 WHERE f_charbig = 'was inserted';
21540
# check transactions-4 success: 1
21541
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21542
SELECT f_int1, f_int1, '', '', 'was inserted'
21543
FROM t0_template source_tab
21544
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
21546
# check transactions-5 success: 1
21549
Warning 1196 Some non-transactional changed tables couldn't be rolled back
21551
# check transactions-6 success: 1
21552
# INFO: Storage engine used for t1 seems to be not transactional.
21555
# check transactions-7 success: 1
21556
DELETE FROM t1 WHERE f_charbig = 'was inserted';
21558
SET @@session.sql_mode = 'traditional';
21559
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
21560
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21561
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
21562
'', '', 'was inserted' FROM t0_template
21563
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
21564
ERROR 22012: Division by 0
21567
# check transactions-8 success: 1
21568
# INFO: Storage engine used for t1 seems to be unable to revert
21569
# changes made by the failing statement.
21570
SET @@session.sql_mode = '';
21572
DELETE FROM t1 WHERE f_charbig = 'was inserted';
21574
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
21576
# check special-1 success: 1
21577
UPDATE t1 SET f_charbig = '';
21579
# check special-2 success: 1
21580
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
21581
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
21582
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
21583
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21584
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21585
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21586
'just inserted' FROM t0_template
21587
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21588
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
21590
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21591
f_charbig = 'updated by trigger'
21592
WHERE f_int1 = new.f_int1;
21594
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21595
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
21596
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21598
# check trigger-1 success: 1
21599
DROP TRIGGER trg_1;
21600
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21601
f_int2 = CAST(f_char1 AS SIGNED INT),
21602
f_charbig = 'just inserted'
21603
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21605
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21606
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21607
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21608
'just inserted' FROM t0_template
21609
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21610
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
21612
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21613
f_charbig = 'updated by trigger'
21614
WHERE f_int1 = new.f_int1;
21616
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21617
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
21618
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21620
# check trigger-2 success: 1
21621
DROP TRIGGER trg_1;
21622
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21623
f_int2 = CAST(f_char1 AS SIGNED INT),
21624
f_charbig = 'just inserted'
21625
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21627
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21628
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21629
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21630
'just inserted' FROM t0_template
21631
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21632
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
21634
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21635
f_charbig = 'updated by trigger'
21636
WHERE f_int1 = new.f_int1;
21638
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
21639
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21641
# check trigger-3 success: 1
21642
DROP TRIGGER trg_1;
21643
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21644
f_int2 = CAST(f_char1 AS SIGNED INT),
21645
f_charbig = 'just inserted'
21646
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21648
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21649
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21650
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21651
'just inserted' FROM t0_template
21652
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21653
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
21655
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21656
f_charbig = 'updated by trigger'
21657
WHERE f_int1 = - old.f_int1;
21659
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
21660
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21662
# check trigger-4 success: 1
21663
DROP TRIGGER trg_1;
21664
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21665
f_int2 = CAST(f_char1 AS SIGNED INT),
21666
f_charbig = 'just inserted'
21667
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21669
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21670
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21671
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21672
'just inserted' FROM t0_template
21673
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21674
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
21676
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21677
f_charbig = 'updated by trigger'
21678
WHERE f_int1 = new.f_int1;
21680
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
21681
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21683
# check trigger-5 success: 1
21684
DROP TRIGGER trg_1;
21685
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21686
f_int2 = CAST(f_char1 AS SIGNED INT),
21687
f_charbig = 'just inserted'
21688
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21690
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21691
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21692
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21693
'just inserted' FROM t0_template
21694
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21695
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
21697
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21698
f_charbig = 'updated by trigger'
21699
WHERE f_int1 = - old.f_int1;
21701
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
21702
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21704
# check trigger-6 success: 1
21705
DROP TRIGGER trg_1;
21706
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21707
f_int2 = CAST(f_char1 AS SIGNED INT),
21708
f_charbig = 'just inserted'
21709
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21711
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21712
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21713
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21714
'just inserted' FROM t0_template
21715
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21716
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
21718
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21719
f_charbig = 'updated by trigger'
21720
WHERE f_int1 = - old.f_int1;
21723
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21725
# check trigger-7 success: 1
21726
DROP TRIGGER trg_1;
21727
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21728
f_int2 = CAST(f_char1 AS SIGNED INT),
21729
f_charbig = 'just inserted'
21730
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21732
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21733
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21734
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21735
'just inserted' FROM t0_template
21736
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21737
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
21739
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21740
f_charbig = 'updated by trigger'
21741
WHERE f_int1 = - old.f_int1;
21744
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21746
# check trigger-8 success: 1
21747
DROP TRIGGER trg_1;
21748
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21749
f_int2 = CAST(f_char1 AS SIGNED INT),
21750
f_charbig = 'just inserted'
21751
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21753
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21755
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21756
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
21758
SET new.f_int1 = old.f_int1 + @max_row,
21759
new.f_int2 = old.f_int2 - @max_row,
21760
new.f_charbig = '####updated per update trigger####';
21763
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
21764
f_charbig = '####updated per update statement itself####';
21766
# check trigger-9 success: 1
21767
DROP TRIGGER trg_2;
21768
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21769
f_int2 = CAST(f_char1 AS SIGNED INT),
21770
f_charbig = CONCAT('===',f_char1,'===');
21771
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
21773
SET new.f_int1 = new.f_int1 + @max_row,
21774
new.f_int2 = new.f_int2 - @max_row,
21775
new.f_charbig = '####updated per update trigger####';
21778
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
21779
f_charbig = '####updated per update statement itself####';
21781
# check trigger-10 success: 1
21782
DROP TRIGGER trg_2;
21783
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21784
f_int2 = CAST(f_char1 AS SIGNED INT),
21785
f_charbig = CONCAT('===',f_char1,'===');
21786
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
21788
SET new.f_int1 = @my_max1 + @counter,
21789
new.f_int2 = @my_min2 - @counter,
21790
new.f_charbig = '####updated per insert trigger####';
21791
SET @counter = @counter + 1;
21794
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
21795
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21796
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
21797
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
21798
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
21800
DROP TRIGGER trg_3;
21802
# check trigger-11 success: 1
21804
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
21805
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
21806
AND f_charbig = '####updated per insert trigger####';
21807
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
21809
SET new.f_int1 = @my_max1 + @counter,
21810
new.f_int2 = @my_min2 - @counter,
21811
new.f_charbig = '####updated per insert trigger####';
21812
SET @counter = @counter + 1;
21815
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
21816
INSERT INTO t1 (f_char1, f_char2, f_charbig)
21817
SELECT CAST(f_int1 AS CHAR),
21818
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
21819
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
21821
DROP TRIGGER trg_3;
21823
# check trigger-12 success: 1
21825
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
21826
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
21827
AND f_charbig = '####updated per insert trigger####';
21829
Table Op Msg_type Msg_text
21830
test.t1 analyze status OK
21831
CHECK TABLE t1 EXTENDED;
21832
Table Op Msg_type Msg_text
21833
test.t1 check status OK
21834
CHECKSUM TABLE t1 EXTENDED;
21836
test.t1 <some_value>
21838
Table Op Msg_type Msg_text
21839
test.t1 optimize status OK
21840
# check layout success: 1
21841
REPAIR TABLE t1 EXTENDED;
21842
Table Op Msg_type Msg_text
21843
test.t1 repair status OK
21844
# check layout success: 1
21847
# check TRUNCATE success: 1
21848
# check layout success: 1
21849
# End usability test (inc/partition_check.inc)
21856
f_charbig VARCHAR(1000)
21857
, UNIQUE INDEX uidx (f_int1,f_int2)
21859
PARTITION BY RANGE(f_int1)
21860
(PARTITION parta VALUES LESS THAN (0),
21861
PARTITION partb VALUES LESS THAN (5),
21862
PARTITION partc VALUES LESS THAN (10),
21863
PARTITION partd VALUES LESS THAN (10 + 5),
21864
PARTITION parte VALUES LESS THAN (20),
21865
PARTITION partf VALUES LESS THAN (2147483646));
21866
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
21867
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
21868
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
21869
ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
21870
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
21871
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
21872
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
21873
# Start usability test (inc/partition_check.inc)
21875
SHOW CREATE TABLE t1;
21877
t1 CREATE TABLE `t1` (
21878
`f_int1` bigint(20) DEFAULT NULL,
21879
`f_int2` bigint(20) DEFAULT NULL,
21880
`f_char1` char(20) DEFAULT NULL,
21881
`f_char2` char(20) DEFAULT NULL,
21882
`f_charbig` varchar(1000) DEFAULT NULL,
21883
UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
21884
) ENGINE=MyISAM DEFAULT CHARSET=latin1
21885
/*!50100 PARTITION BY RANGE (f_int1)
21886
(PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM,
21887
PARTITION partb VALUES LESS THAN (5) ENGINE = MyISAM,
21888
PARTITION partc VALUES LESS THAN (10) ENGINE = MyISAM,
21889
PARTITION partd VALUES LESS THAN (15) ENGINE = MyISAM,
21890
PARTITION parte VALUES LESS THAN (20) ENGINE = MyISAM,
21891
PARTITION partf VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
21909
# check prerequisites-1 success: 1
21910
# check COUNT(*) success: 1
21911
# check MIN/MAX(f_int1) success: 1
21912
# check MIN/MAX(f_int2) success: 1
21913
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21914
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
21915
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
21916
WHERE f_int1 IN (2,3);
21917
ERROR 23000: Duplicate entry '2-2' for key 'uidx'
21918
# check prerequisites-3 success: 1
21919
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
21920
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21921
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
21922
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
21923
WHERE f_int1 IN (2,3);
21924
DELETE FROM t1 WHERE f_charbig = 'delete me';
21925
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21926
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
21927
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
21928
WHERE f_int1 IN (2,3);
21929
DELETE FROM t1 WHERE f_charbig = 'delete me';
21930
# check read via f_int1 success: 1
21931
# check read via f_int2 success: 1
21933
# check multiple-1 success: 1
21934
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
21936
# check multiple-2 success: 1
21937
INSERT INTO t1 SELECT * FROM t0_template
21938
WHERE MOD(f_int1,3) = 0;
21940
# check multiple-3 success: 1
21941
UPDATE t1 SET f_int1 = f_int1 + @max_row
21942
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
21943
AND @max_row_div2 + @max_row_div4;
21945
# check multiple-4 success: 1
21947
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
21948
AND @max_row_div2 + @max_row_div4 + @max_row;
21950
# check multiple-5 success: 1
21951
SELECT COUNT(*) INTO @try_count FROM t0_template
21952
WHERE MOD(f_int1,3) = 0
21953
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
21954
SELECT COUNT(*) INTO @clash_count
21955
FROM t1 INNER JOIN t0_template USING(f_int1)
21956
WHERE MOD(f_int1,3) = 0
21957
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
21958
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
21960
SET f_int1 = @cur_value , f_int2 = @cur_value,
21961
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
21962
f_charbig = '#SINGLE#';
21964
# check single-1 success: 1
21965
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
21967
SET f_int1 = @cur_value , f_int2 = @cur_value,
21968
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
21969
f_charbig = '#SINGLE#';
21971
# check single-2 success: 1
21972
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
21973
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
21974
UPDATE t1 SET f_int1 = @cur_value2
21975
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
21977
# check single-3 success: 1
21978
SET @cur_value1= -1;
21979
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
21980
UPDATE t1 SET f_int1 = @cur_value1
21981
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
21983
# check single-4 success: 1
21984
SELECT MAX(f_int1) INTO @cur_value FROM t1;
21985
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
21987
# check single-5 success: 1
21988
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
21990
# check single-6 success: 1
21991
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
21992
ERROR HY000: Table has no partition for value 2147483647
21993
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
21994
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
21995
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
21996
f_charbig = '#NULL#';
21998
SET f_int1 = NULL , f_int2 = -@max_row,
21999
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
22000
f_charbig = '#NULL#';
22001
# check null success: 1
22003
# check null-1 success: 1
22004
UPDATE t1 SET f_int1 = -@max_row
22005
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
22006
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
22008
# check null-2 success: 1
22009
UPDATE t1 SET f_int1 = NULL
22010
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
22011
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
22013
# check null-3 success: 1
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-4 success: 1
22020
WHERE f_int1 = 0 AND f_int2 = 0
22021
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
22022
AND f_charbig = '#NULL#';
22023
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22024
SELECT f_int1, f_int1, '', '', 'was inserted'
22025
FROM t0_template source_tab
22026
WHERE MOD(f_int1,3) = 0
22027
AND f_int1 BETWEEN @max_row_div2 AND @max_row
22029
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
22030
f_int2 = 2 * @max_row + source_tab.f_int1,
22031
f_charbig = 'was updated';
22033
# check unique-1-a success: 1
22035
# check unique-1-b success: 1
22036
DELETE FROM t1 WHERE f_charbig = 'was inserted';
22037
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22038
f_int2 = CAST(f_char1 AS SIGNED INT),
22039
f_charbig = CONCAT('===',f_char1,'===')
22040
WHERE f_charbig = 'was updated';
22041
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22042
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
22043
FROM t0_template source_tab
22044
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
22046
# check replace success: 1
22048
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
22050
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
22051
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
22052
UPDATE t1 SET f_int2 = f_int1,
22053
f_char1 = CAST(f_int1 AS CHAR),
22054
f_char2 = CAST(f_int1 AS CHAR),
22055
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
22056
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
22058
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22059
SELECT f_int1, f_int1, '', '', 'was inserted'
22060
FROM t0_template source_tab
22061
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
22063
# check transactions-1 success: 1
22066
# check transactions-2 success: 1
22069
# check transactions-3 success: 1
22070
DELETE FROM t1 WHERE f_charbig = 'was inserted';
22074
# check transactions-4 success: 1
22075
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22076
SELECT f_int1, f_int1, '', '', 'was inserted'
22077
FROM t0_template source_tab
22078
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
22080
# check transactions-5 success: 1
22083
Warning 1196 Some non-transactional changed tables couldn't be rolled back
22085
# check transactions-6 success: 1
22086
# INFO: Storage engine used for t1 seems to be not transactional.
22089
# check transactions-7 success: 1
22090
DELETE FROM t1 WHERE f_charbig = 'was inserted';
22092
SET @@session.sql_mode = 'traditional';
22093
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
22094
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22095
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
22096
'', '', 'was inserted' FROM t0_template
22097
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
22098
ERROR 22012: Division by 0
22101
# check transactions-8 success: 1
22102
# INFO: Storage engine used for t1 seems to be unable to revert
22103
# changes made by the failing statement.
22104
SET @@session.sql_mode = '';
22106
DELETE FROM t1 WHERE f_charbig = 'was inserted';
22108
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
22110
# check special-1 success: 1
22111
UPDATE t1 SET f_charbig = '';
22113
# check special-2 success: 1
22114
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
22115
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
22116
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
22117
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22118
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22119
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22120
'just inserted' FROM t0_template
22121
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22122
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
22124
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22125
f_charbig = 'updated by trigger'
22126
WHERE f_int1 = new.f_int1;
22128
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22129
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
22130
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22132
# check trigger-1 success: 1
22133
DROP TRIGGER trg_1;
22134
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22135
f_int2 = CAST(f_char1 AS SIGNED INT),
22136
f_charbig = 'just inserted'
22137
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22139
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22140
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22141
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22142
'just inserted' FROM t0_template
22143
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22144
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
22146
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22147
f_charbig = 'updated by trigger'
22148
WHERE f_int1 = new.f_int1;
22150
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22151
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
22152
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22154
# check trigger-2 success: 1
22155
DROP TRIGGER trg_1;
22156
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22157
f_int2 = CAST(f_char1 AS SIGNED INT),
22158
f_charbig = 'just inserted'
22159
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22161
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22162
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22163
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22164
'just inserted' FROM t0_template
22165
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22166
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
22168
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22169
f_charbig = 'updated by trigger'
22170
WHERE f_int1 = new.f_int1;
22172
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
22173
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22175
# check trigger-3 success: 1
22176
DROP TRIGGER trg_1;
22177
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22178
f_int2 = CAST(f_char1 AS SIGNED INT),
22179
f_charbig = 'just inserted'
22180
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22182
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22183
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22184
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22185
'just inserted' FROM t0_template
22186
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22187
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
22189
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22190
f_charbig = 'updated by trigger'
22191
WHERE f_int1 = - old.f_int1;
22193
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
22194
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22196
# check trigger-4 success: 1
22197
DROP TRIGGER trg_1;
22198
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22199
f_int2 = CAST(f_char1 AS SIGNED INT),
22200
f_charbig = 'just inserted'
22201
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22203
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22204
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22205
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22206
'just inserted' FROM t0_template
22207
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22208
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
22210
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22211
f_charbig = 'updated by trigger'
22212
WHERE f_int1 = new.f_int1;
22214
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
22215
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22217
# check trigger-5 success: 1
22218
DROP TRIGGER trg_1;
22219
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22220
f_int2 = CAST(f_char1 AS SIGNED INT),
22221
f_charbig = 'just inserted'
22222
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22224
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22225
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22226
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22227
'just inserted' FROM t0_template
22228
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22229
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
22231
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22232
f_charbig = 'updated by trigger'
22233
WHERE f_int1 = - old.f_int1;
22235
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
22236
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22238
# check trigger-6 success: 1
22239
DROP TRIGGER trg_1;
22240
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22241
f_int2 = CAST(f_char1 AS SIGNED INT),
22242
f_charbig = 'just inserted'
22243
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22245
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22246
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22247
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22248
'just inserted' FROM t0_template
22249
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22250
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
22252
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22253
f_charbig = 'updated by trigger'
22254
WHERE f_int1 = - old.f_int1;
22257
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22259
# check trigger-7 success: 1
22260
DROP TRIGGER trg_1;
22261
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22262
f_int2 = CAST(f_char1 AS SIGNED INT),
22263
f_charbig = 'just inserted'
22264
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22266
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22267
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22268
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22269
'just inserted' FROM t0_template
22270
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22271
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
22273
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22274
f_charbig = 'updated by trigger'
22275
WHERE f_int1 = - old.f_int1;
22278
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22280
# check trigger-8 success: 1
22281
DROP TRIGGER trg_1;
22282
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22283
f_int2 = CAST(f_char1 AS SIGNED INT),
22284
f_charbig = 'just inserted'
22285
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22287
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22289
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22290
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
22292
SET new.f_int1 = old.f_int1 + @max_row,
22293
new.f_int2 = old.f_int2 - @max_row,
22294
new.f_charbig = '####updated per update trigger####';
22297
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
22298
f_charbig = '####updated per update statement itself####';
22300
# check trigger-9 success: 1
22301
DROP TRIGGER trg_2;
22302
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22303
f_int2 = CAST(f_char1 AS SIGNED INT),
22304
f_charbig = CONCAT('===',f_char1,'===');
22305
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
22307
SET new.f_int1 = new.f_int1 + @max_row,
22308
new.f_int2 = new.f_int2 - @max_row,
22309
new.f_charbig = '####updated per update trigger####';
22312
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
22313
f_charbig = '####updated per update statement itself####';
22315
# check trigger-10 success: 1
22316
DROP TRIGGER trg_2;
22317
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22318
f_int2 = CAST(f_char1 AS SIGNED INT),
22319
f_charbig = CONCAT('===',f_char1,'===');
22320
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
22322
SET new.f_int1 = @my_max1 + @counter,
22323
new.f_int2 = @my_min2 - @counter,
22324
new.f_charbig = '####updated per insert trigger####';
22325
SET @counter = @counter + 1;
22328
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
22329
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22330
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
22331
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
22332
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
22334
DROP TRIGGER trg_3;
22336
# check trigger-11 success: 1
22338
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
22339
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
22340
AND f_charbig = '####updated per insert trigger####';
22341
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
22343
SET new.f_int1 = @my_max1 + @counter,
22344
new.f_int2 = @my_min2 - @counter,
22345
new.f_charbig = '####updated per insert trigger####';
22346
SET @counter = @counter + 1;
22349
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
22350
INSERT INTO t1 (f_char1, f_char2, f_charbig)
22351
SELECT CAST(f_int1 AS CHAR),
22352
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
22353
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
22355
DROP TRIGGER trg_3;
22357
# check trigger-12 success: 1
22359
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
22360
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
22361
AND f_charbig = '####updated per insert trigger####';
22363
Table Op Msg_type Msg_text
22364
test.t1 analyze status OK
22365
CHECK TABLE t1 EXTENDED;
22366
Table Op Msg_type Msg_text
22367
test.t1 check status OK
22368
CHECKSUM TABLE t1 EXTENDED;
22370
test.t1 <some_value>
22372
Table Op Msg_type Msg_text
22373
test.t1 optimize status OK
22374
# check layout success: 1
22375
REPAIR TABLE t1 EXTENDED;
22376
Table Op Msg_type Msg_text
22377
test.t1 repair status OK
22378
# check layout success: 1
22381
# check TRUNCATE success: 1
22382
# check layout success: 1
22383
# End usability test (inc/partition_check.inc)
22390
f_charbig VARCHAR(1000)
22391
, UNIQUE INDEX uidx (f_int1,f_int2)
22393
PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
22394
(PARTITION parta VALUES LESS THAN (0),
22395
PARTITION partb VALUES LESS THAN (5),
22396
PARTITION partc VALUES LESS THAN (10),
22397
PARTITION partd VALUES LESS THAN (2147483646));
22398
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
22399
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
22400
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
22401
ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
22402
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
22403
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
22404
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
22405
# Start usability test (inc/partition_check.inc)
22407
SHOW CREATE TABLE t1;
22409
t1 CREATE TABLE `t1` (
22410
`f_int1` bigint(20) DEFAULT NULL,
22411
`f_int2` bigint(20) DEFAULT NULL,
22412
`f_char1` char(20) DEFAULT NULL,
22413
`f_char2` char(20) DEFAULT NULL,
22414
`f_charbig` varchar(1000) DEFAULT NULL,
22415
UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
22416
) ENGINE=MyISAM DEFAULT CHARSET=latin1
22417
/*!50100 PARTITION BY RANGE (f_int1 DIV 2)
22418
SUBPARTITION BY HASH (f_int1)
22420
(PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM,
22421
PARTITION partb VALUES LESS THAN (5) ENGINE = MyISAM,
22422
PARTITION partc VALUES LESS THAN (10) ENGINE = MyISAM,
22423
PARTITION partd VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
22426
t1#P#parta#SP#partasp0.MYD
22427
t1#P#parta#SP#partasp0.MYI
22428
t1#P#parta#SP#partasp1.MYD
22429
t1#P#parta#SP#partasp1.MYI
22430
t1#P#partb#SP#partbsp0.MYD
22431
t1#P#partb#SP#partbsp0.MYI
22432
t1#P#partb#SP#partbsp1.MYD
22433
t1#P#partb#SP#partbsp1.MYI
22434
t1#P#partc#SP#partcsp0.MYD
22435
t1#P#partc#SP#partcsp0.MYI
22436
t1#P#partc#SP#partcsp1.MYD
22437
t1#P#partc#SP#partcsp1.MYI
22438
t1#P#partd#SP#partdsp0.MYD
22439
t1#P#partd#SP#partdsp0.MYI
22440
t1#P#partd#SP#partdsp1.MYD
22441
t1#P#partd#SP#partdsp1.MYI
22445
# check prerequisites-1 success: 1
22446
# check COUNT(*) success: 1
22447
# check MIN/MAX(f_int1) success: 1
22448
# check MIN/MAX(f_int2) success: 1
22449
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22450
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
22451
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
22452
WHERE f_int1 IN (2,3);
22453
ERROR 23000: Duplicate entry '2-2' for key 'uidx'
22454
# check prerequisites-3 success: 1
22455
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
22456
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22457
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
22458
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
22459
WHERE f_int1 IN (2,3);
22460
DELETE FROM t1 WHERE f_charbig = 'delete me';
22461
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22462
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
22463
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
22464
WHERE f_int1 IN (2,3);
22465
DELETE FROM t1 WHERE f_charbig = 'delete me';
22466
# check read via f_int1 success: 1
22467
# check read via f_int2 success: 1
22469
# check multiple-1 success: 1
22470
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
22472
# check multiple-2 success: 1
22473
INSERT INTO t1 SELECT * FROM t0_template
22474
WHERE MOD(f_int1,3) = 0;
22476
# check multiple-3 success: 1
22477
UPDATE t1 SET f_int1 = f_int1 + @max_row
22478
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
22479
AND @max_row_div2 + @max_row_div4;
22481
# check multiple-4 success: 1
22483
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
22484
AND @max_row_div2 + @max_row_div4 + @max_row;
22486
# check multiple-5 success: 1
22487
SELECT COUNT(*) INTO @try_count FROM t0_template
22488
WHERE MOD(f_int1,3) = 0
22489
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
22490
SELECT COUNT(*) INTO @clash_count
22491
FROM t1 INNER JOIN t0_template USING(f_int1)
22492
WHERE MOD(f_int1,3) = 0
22493
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
22494
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
22496
SET f_int1 = @cur_value , f_int2 = @cur_value,
22497
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
22498
f_charbig = '#SINGLE#';
22500
# check single-1 success: 1
22501
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
22503
SET f_int1 = @cur_value , f_int2 = @cur_value,
22504
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
22505
f_charbig = '#SINGLE#';
22507
# check single-2 success: 1
22508
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
22509
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
22510
UPDATE t1 SET f_int1 = @cur_value2
22511
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
22513
# check single-3 success: 1
22514
SET @cur_value1= -1;
22515
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
22516
UPDATE t1 SET f_int1 = @cur_value1
22517
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
22519
# check single-4 success: 1
22520
SELECT MAX(f_int1) INTO @cur_value FROM t1;
22521
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
22523
# check single-5 success: 1
22524
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
22526
# check single-6 success: 1
22527
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
22529
# check single-7 success: 1
22530
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
22531
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
22532
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
22533
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
22534
f_charbig = '#NULL#';
22536
SET f_int1 = NULL , f_int2 = -@max_row,
22537
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
22538
f_charbig = '#NULL#';
22539
# check null success: 1
22541
# check null-1 success: 1
22542
UPDATE t1 SET f_int1 = -@max_row
22543
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
22544
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
22546
# check null-2 success: 1
22547
UPDATE t1 SET f_int1 = NULL
22548
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
22549
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
22551
# check null-3 success: 1
22553
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
22554
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
22556
# check null-4 success: 1
22558
WHERE f_int1 = 0 AND f_int2 = 0
22559
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
22560
AND f_charbig = '#NULL#';
22561
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22562
SELECT f_int1, f_int1, '', '', 'was inserted'
22563
FROM t0_template source_tab
22564
WHERE MOD(f_int1,3) = 0
22565
AND f_int1 BETWEEN @max_row_div2 AND @max_row
22567
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
22568
f_int2 = 2 * @max_row + source_tab.f_int1,
22569
f_charbig = 'was updated';
22571
# check unique-1-a success: 1
22573
# check unique-1-b success: 1
22574
DELETE FROM t1 WHERE f_charbig = 'was inserted';
22575
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22576
f_int2 = CAST(f_char1 AS SIGNED INT),
22577
f_charbig = CONCAT('===',f_char1,'===')
22578
WHERE f_charbig = 'was updated';
22579
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22580
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
22581
FROM t0_template source_tab
22582
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
22584
# check replace success: 1
22586
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
22588
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
22589
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
22590
UPDATE t1 SET f_int2 = f_int1,
22591
f_char1 = CAST(f_int1 AS CHAR),
22592
f_char2 = CAST(f_int1 AS CHAR),
22593
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
22594
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
22596
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22597
SELECT f_int1, f_int1, '', '', 'was inserted'
22598
FROM t0_template source_tab
22599
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
22601
# check transactions-1 success: 1
22604
# check transactions-2 success: 1
22607
# check transactions-3 success: 1
22608
DELETE FROM t1 WHERE f_charbig = 'was inserted';
22612
# check transactions-4 success: 1
22613
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22614
SELECT f_int1, f_int1, '', '', 'was inserted'
22615
FROM t0_template source_tab
22616
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
22618
# check transactions-5 success: 1
22621
Warning 1196 Some non-transactional changed tables couldn't be rolled back
22623
# check transactions-6 success: 1
22624
# INFO: Storage engine used for t1 seems to be not transactional.
22627
# check transactions-7 success: 1
22628
DELETE FROM t1 WHERE f_charbig = 'was inserted';
22630
SET @@session.sql_mode = 'traditional';
22631
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
22632
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22633
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
22634
'', '', 'was inserted' FROM t0_template
22635
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
22636
ERROR 22012: Division by 0
22639
# check transactions-8 success: 1
22640
# INFO: Storage engine used for t1 seems to be unable to revert
22641
# changes made by the failing statement.
22642
SET @@session.sql_mode = '';
22644
DELETE FROM t1 WHERE f_charbig = 'was inserted';
22646
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
22648
# check special-1 success: 1
22649
UPDATE t1 SET f_charbig = '';
22651
# check special-2 success: 1
22652
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
22653
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
22654
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
22655
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22656
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22657
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22658
'just inserted' FROM t0_template
22659
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22660
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
22662
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22663
f_charbig = 'updated by trigger'
22664
WHERE f_int1 = new.f_int1;
22666
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22667
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
22668
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22670
# check trigger-1 success: 1
22671
DROP TRIGGER trg_1;
22672
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22673
f_int2 = CAST(f_char1 AS SIGNED INT),
22674
f_charbig = 'just inserted'
22675
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22677
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22678
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22679
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22680
'just inserted' FROM t0_template
22681
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22682
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
22684
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22685
f_charbig = 'updated by trigger'
22686
WHERE f_int1 = new.f_int1;
22688
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22689
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
22690
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22692
# check trigger-2 success: 1
22693
DROP TRIGGER trg_1;
22694
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22695
f_int2 = CAST(f_char1 AS SIGNED INT),
22696
f_charbig = 'just inserted'
22697
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22699
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22700
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22701
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22702
'just inserted' FROM t0_template
22703
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22704
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
22706
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22707
f_charbig = 'updated by trigger'
22708
WHERE f_int1 = new.f_int1;
22710
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
22711
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22713
# check trigger-3 success: 1
22714
DROP TRIGGER trg_1;
22715
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22716
f_int2 = CAST(f_char1 AS SIGNED INT),
22717
f_charbig = 'just inserted'
22718
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22720
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22721
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22722
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22723
'just inserted' FROM t0_template
22724
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22725
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
22727
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22728
f_charbig = 'updated by trigger'
22729
WHERE f_int1 = - old.f_int1;
22731
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
22732
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22734
# check trigger-4 success: 1
22735
DROP TRIGGER trg_1;
22736
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22737
f_int2 = CAST(f_char1 AS SIGNED INT),
22738
f_charbig = 'just inserted'
22739
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22741
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22742
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22743
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22744
'just inserted' FROM t0_template
22745
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22746
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
22748
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22749
f_charbig = 'updated by trigger'
22750
WHERE f_int1 = new.f_int1;
22752
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
22753
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22755
# check trigger-5 success: 1
22756
DROP TRIGGER trg_1;
22757
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22758
f_int2 = CAST(f_char1 AS SIGNED INT),
22759
f_charbig = 'just inserted'
22760
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22762
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22763
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22764
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22765
'just inserted' FROM t0_template
22766
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22767
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
22769
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22770
f_charbig = 'updated by trigger'
22771
WHERE f_int1 = - old.f_int1;
22773
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
22774
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22776
# check trigger-6 success: 1
22777
DROP TRIGGER trg_1;
22778
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22779
f_int2 = CAST(f_char1 AS SIGNED INT),
22780
f_charbig = 'just inserted'
22781
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22783
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22784
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22785
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22786
'just inserted' FROM t0_template
22787
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22788
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
22790
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22791
f_charbig = 'updated by trigger'
22792
WHERE f_int1 = - old.f_int1;
22795
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22797
# check trigger-7 success: 1
22798
DROP TRIGGER trg_1;
22799
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22800
f_int2 = CAST(f_char1 AS SIGNED INT),
22801
f_charbig = 'just inserted'
22802
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22804
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22805
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22806
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22807
'just inserted' FROM t0_template
22808
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22809
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
22811
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22812
f_charbig = 'updated by trigger'
22813
WHERE f_int1 = - old.f_int1;
22816
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22818
# check trigger-8 success: 1
22819
DROP TRIGGER trg_1;
22820
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22821
f_int2 = CAST(f_char1 AS SIGNED INT),
22822
f_charbig = 'just inserted'
22823
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22825
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22827
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22828
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
22830
SET new.f_int1 = old.f_int1 + @max_row,
22831
new.f_int2 = old.f_int2 - @max_row,
22832
new.f_charbig = '####updated per update trigger####';
22835
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
22836
f_charbig = '####updated per update statement itself####';
22838
# check trigger-9 success: 1
22839
DROP TRIGGER trg_2;
22840
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22841
f_int2 = CAST(f_char1 AS SIGNED INT),
22842
f_charbig = CONCAT('===',f_char1,'===');
22843
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
22845
SET new.f_int1 = new.f_int1 + @max_row,
22846
new.f_int2 = new.f_int2 - @max_row,
22847
new.f_charbig = '####updated per update trigger####';
22850
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
22851
f_charbig = '####updated per update statement itself####';
22853
# check trigger-10 success: 1
22854
DROP TRIGGER trg_2;
22855
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22856
f_int2 = CAST(f_char1 AS SIGNED INT),
22857
f_charbig = CONCAT('===',f_char1,'===');
22858
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
22860
SET new.f_int1 = @my_max1 + @counter,
22861
new.f_int2 = @my_min2 - @counter,
22862
new.f_charbig = '####updated per insert trigger####';
22863
SET @counter = @counter + 1;
22866
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
22867
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22868
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
22869
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
22870
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
22872
DROP TRIGGER trg_3;
22874
# check trigger-11 success: 1
22876
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
22877
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
22878
AND f_charbig = '####updated per insert trigger####';
22879
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
22881
SET new.f_int1 = @my_max1 + @counter,
22882
new.f_int2 = @my_min2 - @counter,
22883
new.f_charbig = '####updated per insert trigger####';
22884
SET @counter = @counter + 1;
22887
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
22888
INSERT INTO t1 (f_char1, f_char2, f_charbig)
22889
SELECT CAST(f_int1 AS CHAR),
22890
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
22891
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
22893
DROP TRIGGER trg_3;
22895
# check trigger-12 success: 1
22897
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
22898
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
22899
AND f_charbig = '####updated per insert trigger####';
22901
Table Op Msg_type Msg_text
22902
test.t1 analyze status OK
22903
CHECK TABLE t1 EXTENDED;
22904
Table Op Msg_type Msg_text
22905
test.t1 check status OK
22906
CHECKSUM TABLE t1 EXTENDED;
22908
test.t1 <some_value>
22910
Table Op Msg_type Msg_text
22911
test.t1 optimize status OK
22912
# check layout success: 1
22913
REPAIR TABLE t1 EXTENDED;
22914
Table Op Msg_type Msg_text
22915
test.t1 repair status OK
22916
# check layout success: 1
22919
# check TRUNCATE success: 1
22920
# check layout success: 1
22921
# End usability test (inc/partition_check.inc)
22928
f_charbig VARCHAR(1000)
22929
, UNIQUE INDEX uidx (f_int1,f_int2)
22931
PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
22932
(PARTITION part1 VALUES LESS THAN (0)
22933
(SUBPARTITION subpart11, SUBPARTITION subpart12),
22934
PARTITION part2 VALUES LESS THAN (5)
22935
(SUBPARTITION subpart21, SUBPARTITION subpart22),
22936
PARTITION part3 VALUES LESS THAN (10)
22937
(SUBPARTITION subpart31, SUBPARTITION subpart32),
22938
PARTITION part4 VALUES LESS THAN (2147483646)
22939
(SUBPARTITION subpart41, SUBPARTITION subpart42));
22940
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
22941
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
22942
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
22943
ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
22944
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
22945
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
22946
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
22947
# Start usability test (inc/partition_check.inc)
22949
SHOW CREATE TABLE t1;
22951
t1 CREATE TABLE `t1` (
22952
`f_int1` bigint(20) DEFAULT NULL,
22953
`f_int2` bigint(20) DEFAULT NULL,
22954
`f_char1` char(20) DEFAULT NULL,
22955
`f_char2` char(20) DEFAULT NULL,
22956
`f_charbig` varchar(1000) DEFAULT NULL,
22957
UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
22958
) ENGINE=MyISAM DEFAULT CHARSET=latin1
22959
/*!50100 PARTITION BY RANGE (f_int1)
22960
SUBPARTITION BY KEY (f_int1)
22961
(PARTITION part1 VALUES LESS THAN (0)
22962
(SUBPARTITION subpart11 ENGINE = MyISAM,
22963
SUBPARTITION subpart12 ENGINE = MyISAM),
22964
PARTITION part2 VALUES LESS THAN (5)
22965
(SUBPARTITION subpart21 ENGINE = MyISAM,
22966
SUBPARTITION subpart22 ENGINE = MyISAM),
22967
PARTITION part3 VALUES LESS THAN (10)
22968
(SUBPARTITION subpart31 ENGINE = MyISAM,
22969
SUBPARTITION subpart32 ENGINE = MyISAM),
22970
PARTITION part4 VALUES LESS THAN (2147483646)
22971
(SUBPARTITION subpart41 ENGINE = MyISAM,
22972
SUBPARTITION subpart42 ENGINE = MyISAM)) */
22975
t1#P#part1#SP#subpart11.MYD
22976
t1#P#part1#SP#subpart11.MYI
22977
t1#P#part1#SP#subpart12.MYD
22978
t1#P#part1#SP#subpart12.MYI
22979
t1#P#part2#SP#subpart21.MYD
22980
t1#P#part2#SP#subpart21.MYI
22981
t1#P#part2#SP#subpart22.MYD
22982
t1#P#part2#SP#subpart22.MYI
22983
t1#P#part3#SP#subpart31.MYD
22984
t1#P#part3#SP#subpart31.MYI
22985
t1#P#part3#SP#subpart32.MYD
22986
t1#P#part3#SP#subpart32.MYI
22987
t1#P#part4#SP#subpart41.MYD
22988
t1#P#part4#SP#subpart41.MYI
22989
t1#P#part4#SP#subpart42.MYD
22990
t1#P#part4#SP#subpart42.MYI
22994
# check prerequisites-1 success: 1
22995
# check COUNT(*) success: 1
22996
# check MIN/MAX(f_int1) success: 1
22997
# check MIN/MAX(f_int2) success: 1
22998
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22999
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
23000
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
23001
WHERE f_int1 IN (2,3);
23002
ERROR 23000: Duplicate entry '2-2' for key 'uidx'
23003
# check prerequisites-3 success: 1
23004
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
23005
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23006
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
23007
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
23008
WHERE f_int1 IN (2,3);
23009
DELETE FROM t1 WHERE f_charbig = 'delete me';
23010
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23011
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
23012
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
23013
WHERE f_int1 IN (2,3);
23014
DELETE FROM t1 WHERE f_charbig = 'delete me';
23015
# check read via f_int1 success: 1
23016
# check read via f_int2 success: 1
23018
# check multiple-1 success: 1
23019
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
23021
# check multiple-2 success: 1
23022
INSERT INTO t1 SELECT * FROM t0_template
23023
WHERE MOD(f_int1,3) = 0;
23025
# check multiple-3 success: 1
23026
UPDATE t1 SET f_int1 = f_int1 + @max_row
23027
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
23028
AND @max_row_div2 + @max_row_div4;
23030
# check multiple-4 success: 1
23032
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
23033
AND @max_row_div2 + @max_row_div4 + @max_row;
23035
# check multiple-5 success: 1
23036
SELECT COUNT(*) INTO @try_count FROM t0_template
23037
WHERE MOD(f_int1,3) = 0
23038
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
23039
SELECT COUNT(*) INTO @clash_count
23040
FROM t1 INNER JOIN t0_template USING(f_int1)
23041
WHERE MOD(f_int1,3) = 0
23042
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
23043
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
23045
SET f_int1 = @cur_value , f_int2 = @cur_value,
23046
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
23047
f_charbig = '#SINGLE#';
23049
# check single-1 success: 1
23050
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
23052
SET f_int1 = @cur_value , f_int2 = @cur_value,
23053
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
23054
f_charbig = '#SINGLE#';
23056
# check single-2 success: 1
23057
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
23058
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
23059
UPDATE t1 SET f_int1 = @cur_value2
23060
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
23062
# check single-3 success: 1
23063
SET @cur_value1= -1;
23064
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
23065
UPDATE t1 SET f_int1 = @cur_value1
23066
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
23068
# check single-4 success: 1
23069
SELECT MAX(f_int1) INTO @cur_value FROM t1;
23070
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
23072
# check single-5 success: 1
23073
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
23075
# check single-6 success: 1
23076
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
23077
ERROR HY000: Table has no partition for value 2147483647
23078
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
23079
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
23080
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
23081
f_charbig = '#NULL#';
23083
SET f_int1 = NULL , f_int2 = -@max_row,
23084
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
23085
f_charbig = '#NULL#';
23086
# check null success: 1
23088
# check null-1 success: 1
23089
UPDATE t1 SET f_int1 = -@max_row
23090
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
23091
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
23093
# check null-2 success: 1
23094
UPDATE t1 SET f_int1 = NULL
23095
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
23096
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
23098
# check null-3 success: 1
23100
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
23101
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
23103
# check null-4 success: 1
23105
WHERE f_int1 = 0 AND f_int2 = 0
23106
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
23107
AND f_charbig = '#NULL#';
23108
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23109
SELECT f_int1, f_int1, '', '', 'was inserted'
23110
FROM t0_template source_tab
23111
WHERE MOD(f_int1,3) = 0
23112
AND f_int1 BETWEEN @max_row_div2 AND @max_row
23114
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
23115
f_int2 = 2 * @max_row + source_tab.f_int1,
23116
f_charbig = 'was updated';
23118
# check unique-1-a success: 1
23120
# check unique-1-b success: 1
23121
DELETE FROM t1 WHERE f_charbig = 'was inserted';
23122
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23123
f_int2 = CAST(f_char1 AS SIGNED INT),
23124
f_charbig = CONCAT('===',f_char1,'===')
23125
WHERE f_charbig = 'was updated';
23126
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23127
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
23128
FROM t0_template source_tab
23129
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
23131
# check replace success: 1
23133
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
23135
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
23136
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
23137
UPDATE t1 SET f_int2 = f_int1,
23138
f_char1 = CAST(f_int1 AS CHAR),
23139
f_char2 = CAST(f_int1 AS CHAR),
23140
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
23141
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
23143
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23144
SELECT f_int1, f_int1, '', '', 'was inserted'
23145
FROM t0_template source_tab
23146
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
23148
# check transactions-1 success: 1
23151
# check transactions-2 success: 1
23154
# check transactions-3 success: 1
23155
DELETE FROM t1 WHERE f_charbig = 'was inserted';
23159
# check transactions-4 success: 1
23160
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23161
SELECT f_int1, f_int1, '', '', 'was inserted'
23162
FROM t0_template source_tab
23163
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
23165
# check transactions-5 success: 1
23168
Warning 1196 Some non-transactional changed tables couldn't be rolled back
23170
# check transactions-6 success: 1
23171
# INFO: Storage engine used for t1 seems to be not transactional.
23174
# check transactions-7 success: 1
23175
DELETE FROM t1 WHERE f_charbig = 'was inserted';
23177
SET @@session.sql_mode = 'traditional';
23178
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
23179
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23180
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
23181
'', '', 'was inserted' FROM t0_template
23182
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
23183
ERROR 22012: Division by 0
23186
# check transactions-8 success: 1
23187
# INFO: Storage engine used for t1 seems to be unable to revert
23188
# changes made by the failing statement.
23189
SET @@session.sql_mode = '';
23191
DELETE FROM t1 WHERE f_charbig = 'was inserted';
23193
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
23195
# check special-1 success: 1
23196
UPDATE t1 SET f_charbig = '';
23198
# check special-2 success: 1
23199
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
23200
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
23201
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
23202
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23203
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23204
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23205
'just inserted' FROM t0_template
23206
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23207
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
23209
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23210
f_charbig = 'updated by trigger'
23211
WHERE f_int1 = new.f_int1;
23213
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23214
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
23215
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23217
# check trigger-1 success: 1
23218
DROP TRIGGER trg_1;
23219
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23220
f_int2 = CAST(f_char1 AS SIGNED INT),
23221
f_charbig = 'just inserted'
23222
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23224
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23225
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23226
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23227
'just inserted' FROM t0_template
23228
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23229
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
23231
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23232
f_charbig = 'updated by trigger'
23233
WHERE f_int1 = new.f_int1;
23235
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23236
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
23237
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23239
# check trigger-2 success: 1
23240
DROP TRIGGER trg_1;
23241
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23242
f_int2 = CAST(f_char1 AS SIGNED INT),
23243
f_charbig = 'just inserted'
23244
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23246
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23247
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23248
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23249
'just inserted' FROM t0_template
23250
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23251
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
23253
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23254
f_charbig = 'updated by trigger'
23255
WHERE f_int1 = new.f_int1;
23257
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
23258
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23260
# check trigger-3 success: 1
23261
DROP TRIGGER trg_1;
23262
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23263
f_int2 = CAST(f_char1 AS SIGNED INT),
23264
f_charbig = 'just inserted'
23265
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23267
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23268
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23269
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23270
'just inserted' FROM t0_template
23271
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23272
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
23274
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23275
f_charbig = 'updated by trigger'
23276
WHERE f_int1 = - old.f_int1;
23278
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
23279
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23281
# check trigger-4 success: 1
23282
DROP TRIGGER trg_1;
23283
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23284
f_int2 = CAST(f_char1 AS SIGNED INT),
23285
f_charbig = 'just inserted'
23286
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23288
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23289
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23290
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23291
'just inserted' FROM t0_template
23292
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23293
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
23295
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23296
f_charbig = 'updated by trigger'
23297
WHERE f_int1 = new.f_int1;
23299
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
23300
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23302
# check trigger-5 success: 1
23303
DROP TRIGGER trg_1;
23304
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23305
f_int2 = CAST(f_char1 AS SIGNED INT),
23306
f_charbig = 'just inserted'
23307
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23309
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23310
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23311
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23312
'just inserted' FROM t0_template
23313
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23314
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
23316
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23317
f_charbig = 'updated by trigger'
23318
WHERE f_int1 = - old.f_int1;
23320
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
23321
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23323
# check trigger-6 success: 1
23324
DROP TRIGGER trg_1;
23325
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23326
f_int2 = CAST(f_char1 AS SIGNED INT),
23327
f_charbig = 'just inserted'
23328
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23330
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23331
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23332
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23333
'just inserted' FROM t0_template
23334
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23335
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
23337
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23338
f_charbig = 'updated by trigger'
23339
WHERE f_int1 = - old.f_int1;
23342
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23344
# check trigger-7 success: 1
23345
DROP TRIGGER trg_1;
23346
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23347
f_int2 = CAST(f_char1 AS SIGNED INT),
23348
f_charbig = 'just inserted'
23349
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23351
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23352
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23353
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23354
'just inserted' FROM t0_template
23355
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23356
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
23358
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23359
f_charbig = 'updated by trigger'
23360
WHERE f_int1 = - old.f_int1;
23363
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23365
# check trigger-8 success: 1
23366
DROP TRIGGER trg_1;
23367
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23368
f_int2 = CAST(f_char1 AS SIGNED INT),
23369
f_charbig = 'just inserted'
23370
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23372
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23374
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23375
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
23377
SET new.f_int1 = old.f_int1 + @max_row,
23378
new.f_int2 = old.f_int2 - @max_row,
23379
new.f_charbig = '####updated per update trigger####';
23382
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
23383
f_charbig = '####updated per update statement itself####';
23385
# check trigger-9 success: 1
23386
DROP TRIGGER trg_2;
23387
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23388
f_int2 = CAST(f_char1 AS SIGNED INT),
23389
f_charbig = CONCAT('===',f_char1,'===');
23390
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
23392
SET new.f_int1 = new.f_int1 + @max_row,
23393
new.f_int2 = new.f_int2 - @max_row,
23394
new.f_charbig = '####updated per update trigger####';
23397
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
23398
f_charbig = '####updated per update statement itself####';
23400
# check trigger-10 success: 1
23401
DROP TRIGGER trg_2;
23402
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23403
f_int2 = CAST(f_char1 AS SIGNED INT),
23404
f_charbig = CONCAT('===',f_char1,'===');
23405
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
23407
SET new.f_int1 = @my_max1 + @counter,
23408
new.f_int2 = @my_min2 - @counter,
23409
new.f_charbig = '####updated per insert trigger####';
23410
SET @counter = @counter + 1;
23413
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
23414
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23415
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
23416
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
23417
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
23419
DROP TRIGGER trg_3;
23421
# check trigger-11 success: 1
23423
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
23424
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
23425
AND f_charbig = '####updated per insert trigger####';
23426
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
23428
SET new.f_int1 = @my_max1 + @counter,
23429
new.f_int2 = @my_min2 - @counter,
23430
new.f_charbig = '####updated per insert trigger####';
23431
SET @counter = @counter + 1;
23434
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
23435
INSERT INTO t1 (f_char1, f_char2, f_charbig)
23436
SELECT CAST(f_int1 AS CHAR),
23437
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
23438
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
23440
DROP TRIGGER trg_3;
23442
# check trigger-12 success: 1
23444
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
23445
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
23446
AND f_charbig = '####updated per insert trigger####';
23448
Table Op Msg_type Msg_text
23449
test.t1 analyze status OK
23450
CHECK TABLE t1 EXTENDED;
23451
Table Op Msg_type Msg_text
23452
test.t1 check status OK
23453
CHECKSUM TABLE t1 EXTENDED;
23455
test.t1 <some_value>
23457
Table Op Msg_type Msg_text
23458
test.t1 optimize status OK
23459
# check layout success: 1
23460
REPAIR TABLE t1 EXTENDED;
23461
Table Op Msg_type Msg_text
23462
test.t1 repair status OK
23463
# check layout success: 1
23466
# check TRUNCATE success: 1
23467
# check layout success: 1
23468
# End usability test (inc/partition_check.inc)
23475
f_charbig VARCHAR(1000)
23476
, UNIQUE INDEX uidx (f_int1,f_int2)
23478
PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
23479
(PARTITION part1 VALUES IN (0)
23480
(SUBPARTITION sp11, SUBPARTITION sp12),
23481
PARTITION part2 VALUES IN (1)
23482
(SUBPARTITION sp21, SUBPARTITION sp22),
23483
PARTITION part3 VALUES IN (2)
23484
(SUBPARTITION sp31, SUBPARTITION sp32),
23485
PARTITION part4 VALUES IN (NULL)
23486
(SUBPARTITION sp41, SUBPARTITION sp42));
23487
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
23488
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
23489
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
23490
ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
23491
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
23492
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
23493
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
23494
# Start usability test (inc/partition_check.inc)
23496
SHOW CREATE TABLE t1;
23498
t1 CREATE TABLE `t1` (
23499
`f_int1` bigint(20) DEFAULT NULL,
23500
`f_int2` bigint(20) DEFAULT NULL,
23501
`f_char1` char(20) DEFAULT NULL,
23502
`f_char2` char(20) DEFAULT NULL,
23503
`f_charbig` varchar(1000) DEFAULT NULL,
23504
UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
23505
) ENGINE=MyISAM DEFAULT CHARSET=latin1
23506
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
23507
SUBPARTITION BY HASH (f_int1 + 1)
23508
(PARTITION part1 VALUES IN (0)
23509
(SUBPARTITION sp11 ENGINE = MyISAM,
23510
SUBPARTITION sp12 ENGINE = MyISAM),
23511
PARTITION part2 VALUES IN (1)
23512
(SUBPARTITION sp21 ENGINE = MyISAM,
23513
SUBPARTITION sp22 ENGINE = MyISAM),
23514
PARTITION part3 VALUES IN (2)
23515
(SUBPARTITION sp31 ENGINE = MyISAM,
23516
SUBPARTITION sp32 ENGINE = MyISAM),
23517
PARTITION part4 VALUES IN (NULL)
23518
(SUBPARTITION sp41 ENGINE = MyISAM,
23519
SUBPARTITION sp42 ENGINE = MyISAM)) */
23522
t1#P#part1#SP#sp11.MYD
23523
t1#P#part1#SP#sp11.MYI
23524
t1#P#part1#SP#sp12.MYD
23525
t1#P#part1#SP#sp12.MYI
23526
t1#P#part2#SP#sp21.MYD
23527
t1#P#part2#SP#sp21.MYI
23528
t1#P#part2#SP#sp22.MYD
23529
t1#P#part2#SP#sp22.MYI
23530
t1#P#part3#SP#sp31.MYD
23531
t1#P#part3#SP#sp31.MYI
23532
t1#P#part3#SP#sp32.MYD
23533
t1#P#part3#SP#sp32.MYI
23534
t1#P#part4#SP#sp41.MYD
23535
t1#P#part4#SP#sp41.MYI
23536
t1#P#part4#SP#sp42.MYD
23537
t1#P#part4#SP#sp42.MYI
23541
# check prerequisites-1 success: 1
23542
# check COUNT(*) success: 1
23543
# check MIN/MAX(f_int1) success: 1
23544
# check MIN/MAX(f_int2) success: 1
23545
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23546
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
23547
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
23548
WHERE f_int1 IN (2,3);
23549
ERROR 23000: Duplicate entry '2-2' for key 'uidx'
23550
# check prerequisites-3 success: 1
23551
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
23552
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23553
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
23554
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
23555
WHERE f_int1 IN (2,3);
23556
DELETE FROM t1 WHERE f_charbig = 'delete me';
23557
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23558
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
23559
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
23560
WHERE f_int1 IN (2,3);
23561
DELETE FROM t1 WHERE f_charbig = 'delete me';
23562
# check read via f_int1 success: 1
23563
# check read via f_int2 success: 1
23565
# check multiple-1 success: 1
23566
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
23568
# check multiple-2 success: 1
23569
INSERT INTO t1 SELECT * FROM t0_template
23570
WHERE MOD(f_int1,3) = 0;
23572
# check multiple-3 success: 1
23573
UPDATE t1 SET f_int1 = f_int1 + @max_row
23574
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
23575
AND @max_row_div2 + @max_row_div4;
23577
# check multiple-4 success: 1
23579
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
23580
AND @max_row_div2 + @max_row_div4 + @max_row;
23582
# check multiple-5 success: 1
23583
SELECT COUNT(*) INTO @try_count FROM t0_template
23584
WHERE MOD(f_int1,3) = 0
23585
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
23586
SELECT COUNT(*) INTO @clash_count
23587
FROM t1 INNER JOIN t0_template USING(f_int1)
23588
WHERE MOD(f_int1,3) = 0
23589
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
23590
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
23592
SET f_int1 = @cur_value , f_int2 = @cur_value,
23593
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
23594
f_charbig = '#SINGLE#';
23596
# check single-1 success: 1
23597
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
23599
SET f_int1 = @cur_value , f_int2 = @cur_value,
23600
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
23601
f_charbig = '#SINGLE#';
23603
# check single-2 success: 1
23604
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
23605
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
23606
UPDATE t1 SET f_int1 = @cur_value2
23607
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
23609
# check single-3 success: 1
23610
SET @cur_value1= -1;
23611
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
23612
UPDATE t1 SET f_int1 = @cur_value1
23613
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
23615
# check single-4 success: 1
23616
SELECT MAX(f_int1) INTO @cur_value FROM t1;
23617
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
23619
# check single-5 success: 1
23620
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
23622
# check single-6 success: 1
23623
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
23625
# check single-7 success: 1
23626
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
23627
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
23628
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
23629
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
23630
f_charbig = '#NULL#';
23632
SET f_int1 = NULL , f_int2 = -@max_row,
23633
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
23634
f_charbig = '#NULL#';
23635
# check null success: 1
23637
# check null-1 success: 1
23638
UPDATE t1 SET f_int1 = -@max_row
23639
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
23640
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
23642
# check null-2 success: 1
23643
UPDATE t1 SET f_int1 = NULL
23644
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
23645
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
23647
# check null-3 success: 1
23649
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
23650
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
23652
# check null-4 success: 1
23654
WHERE f_int1 = 0 AND f_int2 = 0
23655
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
23656
AND f_charbig = '#NULL#';
23657
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23658
SELECT f_int1, f_int1, '', '', 'was inserted'
23659
FROM t0_template source_tab
23660
WHERE MOD(f_int1,3) = 0
23661
AND f_int1 BETWEEN @max_row_div2 AND @max_row
23663
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
23664
f_int2 = 2 * @max_row + source_tab.f_int1,
23665
f_charbig = 'was updated';
23667
# check unique-1-a success: 1
23669
# check unique-1-b success: 1
23670
DELETE FROM t1 WHERE f_charbig = 'was inserted';
23671
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23672
f_int2 = CAST(f_char1 AS SIGNED INT),
23673
f_charbig = CONCAT('===',f_char1,'===')
23674
WHERE f_charbig = 'was updated';
23675
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23676
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
23677
FROM t0_template source_tab
23678
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
23680
# check replace success: 1
23682
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
23684
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
23685
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
23686
UPDATE t1 SET f_int2 = f_int1,
23687
f_char1 = CAST(f_int1 AS CHAR),
23688
f_char2 = CAST(f_int1 AS CHAR),
23689
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
23690
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
23692
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23693
SELECT f_int1, f_int1, '', '', 'was inserted'
23694
FROM t0_template source_tab
23695
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
23697
# check transactions-1 success: 1
23700
# check transactions-2 success: 1
23703
# check transactions-3 success: 1
23704
DELETE FROM t1 WHERE f_charbig = 'was inserted';
23708
# check transactions-4 success: 1
23709
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23710
SELECT f_int1, f_int1, '', '', 'was inserted'
23711
FROM t0_template source_tab
23712
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
23714
# check transactions-5 success: 1
23717
Warning 1196 Some non-transactional changed tables couldn't be rolled back
23719
# check transactions-6 success: 1
23720
# INFO: Storage engine used for t1 seems to be not transactional.
23723
# check transactions-7 success: 1
23724
DELETE FROM t1 WHERE f_charbig = 'was inserted';
23726
SET @@session.sql_mode = 'traditional';
23727
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
23728
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23729
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
23730
'', '', 'was inserted' FROM t0_template
23731
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
23732
ERROR 22012: Division by 0
23735
# check transactions-8 success: 1
23736
# INFO: Storage engine used for t1 seems to be unable to revert
23737
# changes made by the failing statement.
23738
SET @@session.sql_mode = '';
23740
DELETE FROM t1 WHERE f_charbig = 'was inserted';
23742
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
23744
# check special-1 success: 1
23745
UPDATE t1 SET f_charbig = '';
23747
# check special-2 success: 1
23748
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
23749
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
23750
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
23751
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23752
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23753
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23754
'just inserted' FROM t0_template
23755
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23756
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
23758
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23759
f_charbig = 'updated by trigger'
23760
WHERE f_int1 = new.f_int1;
23762
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23763
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
23764
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23766
# check trigger-1 success: 1
23767
DROP TRIGGER trg_1;
23768
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23769
f_int2 = CAST(f_char1 AS SIGNED INT),
23770
f_charbig = 'just inserted'
23771
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23773
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23774
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23775
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23776
'just inserted' FROM t0_template
23777
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23778
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
23780
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23781
f_charbig = 'updated by trigger'
23782
WHERE f_int1 = new.f_int1;
23784
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23785
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
23786
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23788
# check trigger-2 success: 1
23789
DROP TRIGGER trg_1;
23790
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23791
f_int2 = CAST(f_char1 AS SIGNED INT),
23792
f_charbig = 'just inserted'
23793
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23795
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23796
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23797
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23798
'just inserted' FROM t0_template
23799
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23800
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
23802
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23803
f_charbig = 'updated by trigger'
23804
WHERE f_int1 = new.f_int1;
23806
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
23807
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23809
# check trigger-3 success: 1
23810
DROP TRIGGER trg_1;
23811
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23812
f_int2 = CAST(f_char1 AS SIGNED INT),
23813
f_charbig = 'just inserted'
23814
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23816
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23817
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23818
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23819
'just inserted' FROM t0_template
23820
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23821
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
23823
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23824
f_charbig = 'updated by trigger'
23825
WHERE f_int1 = - old.f_int1;
23827
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
23828
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23830
# check trigger-4 success: 1
23831
DROP TRIGGER trg_1;
23832
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23833
f_int2 = CAST(f_char1 AS SIGNED INT),
23834
f_charbig = 'just inserted'
23835
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23837
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23838
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23839
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23840
'just inserted' FROM t0_template
23841
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23842
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
23844
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23845
f_charbig = 'updated by trigger'
23846
WHERE f_int1 = new.f_int1;
23848
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
23849
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23851
# check trigger-5 success: 1
23852
DROP TRIGGER trg_1;
23853
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23854
f_int2 = CAST(f_char1 AS SIGNED INT),
23855
f_charbig = 'just inserted'
23856
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23858
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23859
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23860
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23861
'just inserted' FROM t0_template
23862
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23863
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
23865
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23866
f_charbig = 'updated by trigger'
23867
WHERE f_int1 = - old.f_int1;
23869
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
23870
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23872
# check trigger-6 success: 1
23873
DROP TRIGGER trg_1;
23874
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23875
f_int2 = CAST(f_char1 AS SIGNED INT),
23876
f_charbig = 'just inserted'
23877
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23879
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23880
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23881
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23882
'just inserted' FROM t0_template
23883
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23884
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
23886
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23887
f_charbig = 'updated by trigger'
23888
WHERE f_int1 = - old.f_int1;
23891
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23893
# check trigger-7 success: 1
23894
DROP TRIGGER trg_1;
23895
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23896
f_int2 = CAST(f_char1 AS SIGNED INT),
23897
f_charbig = 'just inserted'
23898
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23900
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23901
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23902
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23903
'just inserted' FROM t0_template
23904
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23905
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
23907
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23908
f_charbig = 'updated by trigger'
23909
WHERE f_int1 = - old.f_int1;
23912
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23914
# check trigger-8 success: 1
23915
DROP TRIGGER trg_1;
23916
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23917
f_int2 = CAST(f_char1 AS SIGNED INT),
23918
f_charbig = 'just inserted'
23919
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23921
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23923
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23924
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
23926
SET new.f_int1 = old.f_int1 + @max_row,
23927
new.f_int2 = old.f_int2 - @max_row,
23928
new.f_charbig = '####updated per update trigger####';
23931
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
23932
f_charbig = '####updated per update statement itself####';
23934
# check trigger-9 success: 1
23935
DROP TRIGGER trg_2;
23936
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23937
f_int2 = CAST(f_char1 AS SIGNED INT),
23938
f_charbig = CONCAT('===',f_char1,'===');
23939
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
23941
SET new.f_int1 = new.f_int1 + @max_row,
23942
new.f_int2 = new.f_int2 - @max_row,
23943
new.f_charbig = '####updated per update trigger####';
23946
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
23947
f_charbig = '####updated per update statement itself####';
23949
# check trigger-10 success: 1
23950
DROP TRIGGER trg_2;
23951
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23952
f_int2 = CAST(f_char1 AS SIGNED INT),
23953
f_charbig = CONCAT('===',f_char1,'===');
23954
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
23956
SET new.f_int1 = @my_max1 + @counter,
23957
new.f_int2 = @my_min2 - @counter,
23958
new.f_charbig = '####updated per insert trigger####';
23959
SET @counter = @counter + 1;
23962
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
23963
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23964
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
23965
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
23966
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
23968
DROP TRIGGER trg_3;
23970
# check trigger-11 success: 1
23972
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
23973
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
23974
AND f_charbig = '####updated per insert trigger####';
23975
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
23977
SET new.f_int1 = @my_max1 + @counter,
23978
new.f_int2 = @my_min2 - @counter,
23979
new.f_charbig = '####updated per insert trigger####';
23980
SET @counter = @counter + 1;
23983
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
23984
INSERT INTO t1 (f_char1, f_char2, f_charbig)
23985
SELECT CAST(f_int1 AS CHAR),
23986
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
23987
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
23989
DROP TRIGGER trg_3;
23991
# check trigger-12 success: 1
23993
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
23994
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
23995
AND f_charbig = '####updated per insert trigger####';
23997
Table Op Msg_type Msg_text
23998
test.t1 analyze status OK
23999
CHECK TABLE t1 EXTENDED;
24000
Table Op Msg_type Msg_text
24001
test.t1 check status OK
24002
CHECKSUM TABLE t1 EXTENDED;
24004
test.t1 <some_value>
24006
Table Op Msg_type Msg_text
24007
test.t1 optimize status OK
24008
# check layout success: 1
24009
REPAIR TABLE t1 EXTENDED;
24010
Table Op Msg_type Msg_text
24011
test.t1 repair status OK
24012
# check layout success: 1
24015
# check TRUNCATE success: 1
24016
# check layout success: 1
24017
# End usability test (inc/partition_check.inc)
24024
f_charbig VARCHAR(1000)
24025
, UNIQUE INDEX uidx (f_int1,f_int2)
24027
PARTITION BY LIST(ABS(MOD(f_int1,2)))
24028
SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
24029
(PARTITION part1 VALUES IN (0),
24030
PARTITION part2 VALUES IN (1),
24031
PARTITION part3 VALUES IN (NULL));
24032
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
24033
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
24034
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
24035
ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
24036
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
24037
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
24038
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
24039
# Start usability test (inc/partition_check.inc)
24041
SHOW CREATE TABLE t1;
24043
t1 CREATE TABLE `t1` (
24044
`f_int1` bigint(20) DEFAULT NULL,
24045
`f_int2` bigint(20) DEFAULT NULL,
24046
`f_char1` char(20) DEFAULT NULL,
24047
`f_char2` char(20) DEFAULT NULL,
24048
`f_charbig` varchar(1000) DEFAULT NULL,
24049
UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
24050
) ENGINE=MyISAM DEFAULT CHARSET=latin1
24051
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
24052
SUBPARTITION BY KEY (f_int1)
24054
(PARTITION part1 VALUES IN (0) ENGINE = MyISAM,
24055
PARTITION part2 VALUES IN (1) ENGINE = MyISAM,
24056
PARTITION part3 VALUES IN (NULL) ENGINE = MyISAM) */
24059
t1#P#part1#SP#part1sp0.MYD
24060
t1#P#part1#SP#part1sp0.MYI
24061
t1#P#part1#SP#part1sp1.MYD
24062
t1#P#part1#SP#part1sp1.MYI
24063
t1#P#part1#SP#part1sp2.MYD
24064
t1#P#part1#SP#part1sp2.MYI
24065
t1#P#part2#SP#part2sp0.MYD
24066
t1#P#part2#SP#part2sp0.MYI
24067
t1#P#part2#SP#part2sp1.MYD
24068
t1#P#part2#SP#part2sp1.MYI
24069
t1#P#part2#SP#part2sp2.MYD
24070
t1#P#part2#SP#part2sp2.MYI
24071
t1#P#part3#SP#part3sp0.MYD
24072
t1#P#part3#SP#part3sp0.MYI
24073
t1#P#part3#SP#part3sp1.MYD
24074
t1#P#part3#SP#part3sp1.MYI
24075
t1#P#part3#SP#part3sp2.MYD
24076
t1#P#part3#SP#part3sp2.MYI
24080
# check prerequisites-1 success: 1
24081
# check COUNT(*) success: 1
24082
# check MIN/MAX(f_int1) success: 1
24083
# check MIN/MAX(f_int2) success: 1
24084
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24085
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
24086
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
24087
WHERE f_int1 IN (2,3);
24088
ERROR 23000: Duplicate entry '2-2' for key 'uidx'
24089
# check prerequisites-3 success: 1
24090
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
24091
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24092
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
24093
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
24094
WHERE f_int1 IN (2,3);
24095
DELETE FROM t1 WHERE f_charbig = 'delete me';
24096
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24097
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
24098
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
24099
WHERE f_int1 IN (2,3);
24100
DELETE FROM t1 WHERE f_charbig = 'delete me';
24101
# check read via f_int1 success: 1
24102
# check read via f_int2 success: 1
24104
# check multiple-1 success: 1
24105
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
24107
# check multiple-2 success: 1
24108
INSERT INTO t1 SELECT * FROM t0_template
24109
WHERE MOD(f_int1,3) = 0;
24111
# check multiple-3 success: 1
24112
UPDATE t1 SET f_int1 = f_int1 + @max_row
24113
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
24114
AND @max_row_div2 + @max_row_div4;
24116
# check multiple-4 success: 1
24118
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
24119
AND @max_row_div2 + @max_row_div4 + @max_row;
24121
# check multiple-5 success: 1
24122
SELECT COUNT(*) INTO @try_count FROM t0_template
24123
WHERE MOD(f_int1,3) = 0
24124
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
24125
SELECT COUNT(*) INTO @clash_count
24126
FROM t1 INNER JOIN t0_template USING(f_int1)
24127
WHERE MOD(f_int1,3) = 0
24128
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
24129
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
24131
SET f_int1 = @cur_value , f_int2 = @cur_value,
24132
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
24133
f_charbig = '#SINGLE#';
24135
# check single-1 success: 1
24136
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
24138
SET f_int1 = @cur_value , f_int2 = @cur_value,
24139
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
24140
f_charbig = '#SINGLE#';
24142
# check single-2 success: 1
24143
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
24144
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
24145
UPDATE t1 SET f_int1 = @cur_value2
24146
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
24148
# check single-3 success: 1
24149
SET @cur_value1= -1;
24150
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
24151
UPDATE t1 SET f_int1 = @cur_value1
24152
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
24154
# check single-4 success: 1
24155
SELECT MAX(f_int1) INTO @cur_value FROM t1;
24156
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
24158
# check single-5 success: 1
24159
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
24161
# check single-6 success: 1
24162
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
24164
# check single-7 success: 1
24165
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
24166
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
24167
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
24168
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
24169
f_charbig = '#NULL#';
24171
SET f_int1 = NULL , f_int2 = -@max_row,
24172
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
24173
f_charbig = '#NULL#';
24174
# check null success: 1
24176
# check null-1 success: 1
24177
UPDATE t1 SET f_int1 = -@max_row
24178
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
24179
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
24181
# check null-2 success: 1
24182
UPDATE t1 SET f_int1 = NULL
24183
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
24184
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
24186
# check null-3 success: 1
24188
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
24189
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
24191
# check null-4 success: 1
24193
WHERE f_int1 = 0 AND f_int2 = 0
24194
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
24195
AND f_charbig = '#NULL#';
24196
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24197
SELECT f_int1, f_int1, '', '', 'was inserted'
24198
FROM t0_template source_tab
24199
WHERE MOD(f_int1,3) = 0
24200
AND f_int1 BETWEEN @max_row_div2 AND @max_row
24202
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
24203
f_int2 = 2 * @max_row + source_tab.f_int1,
24204
f_charbig = 'was updated';
24206
# check unique-1-a success: 1
24208
# check unique-1-b success: 1
24209
DELETE FROM t1 WHERE f_charbig = 'was inserted';
24210
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24211
f_int2 = CAST(f_char1 AS SIGNED INT),
24212
f_charbig = CONCAT('===',f_char1,'===')
24213
WHERE f_charbig = 'was updated';
24214
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24215
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
24216
FROM t0_template source_tab
24217
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
24219
# check replace success: 1
24221
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
24223
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
24224
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
24225
UPDATE t1 SET f_int2 = f_int1,
24226
f_char1 = CAST(f_int1 AS CHAR),
24227
f_char2 = CAST(f_int1 AS CHAR),
24228
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
24229
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
24231
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24232
SELECT f_int1, f_int1, '', '', 'was inserted'
24233
FROM t0_template source_tab
24234
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
24236
# check transactions-1 success: 1
24239
# check transactions-2 success: 1
24242
# check transactions-3 success: 1
24243
DELETE FROM t1 WHERE f_charbig = 'was inserted';
24247
# check transactions-4 success: 1
24248
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24249
SELECT f_int1, f_int1, '', '', 'was inserted'
24250
FROM t0_template source_tab
24251
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
24253
# check transactions-5 success: 1
24256
Warning 1196 Some non-transactional changed tables couldn't be rolled back
24258
# check transactions-6 success: 1
24259
# INFO: Storage engine used for t1 seems to be not transactional.
24262
# check transactions-7 success: 1
24263
DELETE FROM t1 WHERE f_charbig = 'was inserted';
24265
SET @@session.sql_mode = 'traditional';
24266
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
24267
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24268
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
24269
'', '', 'was inserted' FROM t0_template
24270
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
24271
ERROR 22012: Division by 0
24274
# check transactions-8 success: 1
24275
# INFO: Storage engine used for t1 seems to be unable to revert
24276
# changes made by the failing statement.
24277
SET @@session.sql_mode = '';
24279
DELETE FROM t1 WHERE f_charbig = 'was inserted';
24281
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
24283
# check special-1 success: 1
24284
UPDATE t1 SET f_charbig = '';
24286
# check special-2 success: 1
24287
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
24288
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
24289
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
24290
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24291
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24292
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24293
'just inserted' FROM t0_template
24294
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24295
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
24297
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24298
f_charbig = 'updated by trigger'
24299
WHERE f_int1 = new.f_int1;
24301
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24302
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
24303
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24305
# check trigger-1 success: 1
24306
DROP TRIGGER trg_1;
24307
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24308
f_int2 = CAST(f_char1 AS SIGNED INT),
24309
f_charbig = 'just inserted'
24310
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24312
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24313
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24314
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24315
'just inserted' FROM t0_template
24316
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24317
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
24319
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24320
f_charbig = 'updated by trigger'
24321
WHERE f_int1 = new.f_int1;
24323
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24324
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
24325
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24327
# check trigger-2 success: 1
24328
DROP TRIGGER trg_1;
24329
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24330
f_int2 = CAST(f_char1 AS SIGNED INT),
24331
f_charbig = 'just inserted'
24332
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24334
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24335
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24336
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24337
'just inserted' FROM t0_template
24338
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24339
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
24341
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24342
f_charbig = 'updated by trigger'
24343
WHERE f_int1 = new.f_int1;
24345
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
24346
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24348
# check trigger-3 success: 1
24349
DROP TRIGGER trg_1;
24350
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24351
f_int2 = CAST(f_char1 AS SIGNED INT),
24352
f_charbig = 'just inserted'
24353
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24355
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24356
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24357
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24358
'just inserted' FROM t0_template
24359
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24360
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
24362
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24363
f_charbig = 'updated by trigger'
24364
WHERE f_int1 = - old.f_int1;
24366
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
24367
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24369
# check trigger-4 success: 1
24370
DROP TRIGGER trg_1;
24371
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24372
f_int2 = CAST(f_char1 AS SIGNED INT),
24373
f_charbig = 'just inserted'
24374
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24376
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24377
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24378
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24379
'just inserted' FROM t0_template
24380
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24381
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
24383
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24384
f_charbig = 'updated by trigger'
24385
WHERE f_int1 = new.f_int1;
24387
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
24388
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24390
# check trigger-5 success: 1
24391
DROP TRIGGER trg_1;
24392
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24393
f_int2 = CAST(f_char1 AS SIGNED INT),
24394
f_charbig = 'just inserted'
24395
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24397
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24398
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24399
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24400
'just inserted' FROM t0_template
24401
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24402
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
24404
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24405
f_charbig = 'updated by trigger'
24406
WHERE f_int1 = - old.f_int1;
24408
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
24409
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24411
# check trigger-6 success: 1
24412
DROP TRIGGER trg_1;
24413
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24414
f_int2 = CAST(f_char1 AS SIGNED INT),
24415
f_charbig = 'just inserted'
24416
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24418
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24419
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24420
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24421
'just inserted' FROM t0_template
24422
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24423
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
24425
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24426
f_charbig = 'updated by trigger'
24427
WHERE f_int1 = - old.f_int1;
24430
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24432
# check trigger-7 success: 1
24433
DROP TRIGGER trg_1;
24434
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24435
f_int2 = CAST(f_char1 AS SIGNED INT),
24436
f_charbig = 'just inserted'
24437
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24439
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24440
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24441
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24442
'just inserted' FROM t0_template
24443
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24444
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
24446
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24447
f_charbig = 'updated by trigger'
24448
WHERE f_int1 = - old.f_int1;
24451
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24453
# check trigger-8 success: 1
24454
DROP TRIGGER trg_1;
24455
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24456
f_int2 = CAST(f_char1 AS SIGNED INT),
24457
f_charbig = 'just inserted'
24458
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24460
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24462
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24463
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
24465
SET new.f_int1 = old.f_int1 + @max_row,
24466
new.f_int2 = old.f_int2 - @max_row,
24467
new.f_charbig = '####updated per update trigger####';
24470
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
24471
f_charbig = '####updated per update statement itself####';
24473
# check trigger-9 success: 1
24474
DROP TRIGGER trg_2;
24475
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24476
f_int2 = CAST(f_char1 AS SIGNED INT),
24477
f_charbig = CONCAT('===',f_char1,'===');
24478
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
24480
SET new.f_int1 = new.f_int1 + @max_row,
24481
new.f_int2 = new.f_int2 - @max_row,
24482
new.f_charbig = '####updated per update trigger####';
24485
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
24486
f_charbig = '####updated per update statement itself####';
24488
# check trigger-10 success: 1
24489
DROP TRIGGER trg_2;
24490
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24491
f_int2 = CAST(f_char1 AS SIGNED INT),
24492
f_charbig = CONCAT('===',f_char1,'===');
24493
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
24495
SET new.f_int1 = @my_max1 + @counter,
24496
new.f_int2 = @my_min2 - @counter,
24497
new.f_charbig = '####updated per insert trigger####';
24498
SET @counter = @counter + 1;
24501
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
24502
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24503
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
24504
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
24505
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
24507
DROP TRIGGER trg_3;
24509
# check trigger-11 success: 1
24511
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
24512
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
24513
AND f_charbig = '####updated per insert trigger####';
24514
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
24516
SET new.f_int1 = @my_max1 + @counter,
24517
new.f_int2 = @my_min2 - @counter,
24518
new.f_charbig = '####updated per insert trigger####';
24519
SET @counter = @counter + 1;
24522
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
24523
INSERT INTO t1 (f_char1, f_char2, f_charbig)
24524
SELECT CAST(f_int1 AS CHAR),
24525
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
24526
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
24528
DROP TRIGGER trg_3;
24530
# check trigger-12 success: 1
24532
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
24533
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
24534
AND f_charbig = '####updated per insert trigger####';
24536
Table Op Msg_type Msg_text
24537
test.t1 analyze status OK
24538
CHECK TABLE t1 EXTENDED;
24539
Table Op Msg_type Msg_text
24540
test.t1 check status OK
24541
CHECKSUM TABLE t1 EXTENDED;
24543
test.t1 <some_value>
24545
Table Op Msg_type Msg_text
24546
test.t1 optimize status OK
24547
# check layout success: 1
24548
REPAIR TABLE t1 EXTENDED;
24549
Table Op Msg_type Msg_text
24550
test.t1 repair status OK
24551
# check layout success: 1
24554
# check TRUNCATE success: 1
24555
# check layout success: 1
24556
# End usability test (inc/partition_check.inc)
24558
DROP TABLE IF EXISTS t1;
24564
f_charbig VARCHAR(1000)
24565
, UNIQUE INDEX uidx (f_int1,f_int2)
24567
PARTITION BY HASH(f_int1 + f_int2) PARTITIONS 2;
24568
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
24569
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
24570
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
24571
ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
24572
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
24573
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
24574
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
24575
# Start usability test (inc/partition_check.inc)
24577
SHOW CREATE TABLE t1;
24579
t1 CREATE TABLE `t1` (
24580
`f_int1` bigint(20) DEFAULT NULL,
24581
`f_int2` bigint(20) DEFAULT NULL,
24582
`f_char1` char(20) DEFAULT NULL,
24583
`f_char2` char(20) DEFAULT NULL,
24584
`f_charbig` varchar(1000) DEFAULT NULL,
24585
UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
24586
) ENGINE=MyISAM DEFAULT CHARSET=latin1
24587
/*!50100 PARTITION BY HASH (f_int1 + f_int2)
24598
# check prerequisites-1 success: 1
24599
# check COUNT(*) success: 1
24600
# check MIN/MAX(f_int1) success: 1
24601
# check MIN/MAX(f_int2) success: 1
24602
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24603
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
24604
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
24605
WHERE f_int1 IN (2,3);
24606
ERROR 23000: Duplicate entry '2-2' for key 'uidx'
24607
# check prerequisites-3 success: 1
24608
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
24609
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24610
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
24611
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
24612
WHERE f_int1 IN (2,3);
24613
DELETE FROM t1 WHERE f_charbig = 'delete me';
24614
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24615
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
24616
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
24617
WHERE f_int1 IN (2,3);
24618
DELETE FROM t1 WHERE f_charbig = 'delete me';
24619
# check read via f_int1 success: 1
24620
# check read via f_int2 success: 1
24622
# check multiple-1 success: 1
24623
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
24625
# check multiple-2 success: 1
24626
INSERT INTO t1 SELECT * FROM t0_template
24627
WHERE MOD(f_int1,3) = 0;
24629
# check multiple-3 success: 1
24630
UPDATE t1 SET f_int1 = f_int1 + @max_row
24631
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
24632
AND @max_row_div2 + @max_row_div4;
24634
# check multiple-4 success: 1
24636
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
24637
AND @max_row_div2 + @max_row_div4 + @max_row;
24639
# check multiple-5 success: 1
24640
SELECT COUNT(*) INTO @try_count FROM t0_template
24641
WHERE MOD(f_int1,3) = 0
24642
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
24643
SELECT COUNT(*) INTO @clash_count
24644
FROM t1 INNER JOIN t0_template USING(f_int1)
24645
WHERE MOD(f_int1,3) = 0
24646
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
24647
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
24649
SET f_int1 = @cur_value , f_int2 = @cur_value,
24650
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
24651
f_charbig = '#SINGLE#';
24653
# check single-1 success: 1
24654
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
24656
SET f_int1 = @cur_value , f_int2 = @cur_value,
24657
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
24658
f_charbig = '#SINGLE#';
24660
# check single-2 success: 1
24661
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
24662
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
24663
UPDATE t1 SET f_int1 = @cur_value2
24664
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
24666
# check single-3 success: 1
24667
SET @cur_value1= -1;
24668
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
24669
UPDATE t1 SET f_int1 = @cur_value1
24670
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
24672
# check single-4 success: 1
24673
SELECT MAX(f_int1) INTO @cur_value FROM t1;
24674
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
24676
# check single-5 success: 1
24677
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
24679
# check single-6 success: 1
24680
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
24682
# check single-7 success: 1
24683
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
24684
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
24685
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
24686
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
24687
f_charbig = '#NULL#';
24689
SET f_int1 = NULL , f_int2 = -@max_row,
24690
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
24691
f_charbig = '#NULL#';
24692
# check null success: 1
24694
# check null-1 success: 1
24695
UPDATE t1 SET f_int1 = -@max_row
24696
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
24697
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
24699
# check null-2 success: 1
24700
UPDATE t1 SET f_int1 = NULL
24701
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
24702
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
24704
# check null-3 success: 1
24706
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
24707
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
24709
# check null-4 success: 1
24711
WHERE f_int1 = 0 AND f_int2 = 0
24712
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
24713
AND f_charbig = '#NULL#';
24714
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24715
SELECT f_int1, f_int1, '', '', 'was inserted'
24716
FROM t0_template source_tab
24717
WHERE MOD(f_int1,3) = 0
24718
AND f_int1 BETWEEN @max_row_div2 AND @max_row
24720
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
24721
f_int2 = 2 * @max_row + source_tab.f_int1,
24722
f_charbig = 'was updated';
24724
# check unique-1-a success: 1
24726
# check unique-1-b success: 1
24727
DELETE FROM t1 WHERE f_charbig = 'was inserted';
24728
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24729
f_int2 = CAST(f_char1 AS SIGNED INT),
24730
f_charbig = CONCAT('===',f_char1,'===')
24731
WHERE f_charbig = 'was updated';
24732
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24733
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
24734
FROM t0_template source_tab
24735
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
24737
# check replace success: 1
24739
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
24741
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
24742
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
24743
UPDATE t1 SET f_int2 = f_int1,
24744
f_char1 = CAST(f_int1 AS CHAR),
24745
f_char2 = CAST(f_int1 AS CHAR),
24746
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
24747
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
24749
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24750
SELECT f_int1, f_int1, '', '', 'was inserted'
24751
FROM t0_template source_tab
24752
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
24754
# check transactions-1 success: 1
24757
# check transactions-2 success: 1
24760
# check transactions-3 success: 1
24761
DELETE FROM t1 WHERE f_charbig = 'was inserted';
24765
# check transactions-4 success: 1
24766
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24767
SELECT f_int1, f_int1, '', '', 'was inserted'
24768
FROM t0_template source_tab
24769
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
24771
# check transactions-5 success: 1
24774
Warning 1196 Some non-transactional changed tables couldn't be rolled back
24776
# check transactions-6 success: 1
24777
# INFO: Storage engine used for t1 seems to be not transactional.
24780
# check transactions-7 success: 1
24781
DELETE FROM t1 WHERE f_charbig = 'was inserted';
24783
SET @@session.sql_mode = 'traditional';
24784
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
24785
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24786
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
24787
'', '', 'was inserted' FROM t0_template
24788
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
24789
ERROR 22012: Division by 0
24792
# check transactions-8 success: 1
24793
# INFO: Storage engine used for t1 seems to be unable to revert
24794
# changes made by the failing statement.
24795
SET @@session.sql_mode = '';
24797
DELETE FROM t1 WHERE f_charbig = 'was inserted';
24799
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
24801
# check special-1 success: 1
24802
UPDATE t1 SET f_charbig = '';
24804
# check special-2 success: 1
24805
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
24806
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
24807
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
24808
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24809
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24810
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24811
'just inserted' FROM t0_template
24812
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24813
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
24815
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24816
f_charbig = 'updated by trigger'
24817
WHERE f_int1 = new.f_int1;
24819
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24820
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
24821
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24823
# check trigger-1 success: 1
24824
DROP TRIGGER trg_1;
24825
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24826
f_int2 = CAST(f_char1 AS SIGNED INT),
24827
f_charbig = 'just inserted'
24828
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24830
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24831
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24832
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24833
'just inserted' FROM t0_template
24834
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24835
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
24837
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24838
f_charbig = 'updated by trigger'
24839
WHERE f_int1 = new.f_int1;
24841
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24842
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
24843
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24845
# check trigger-2 success: 1
24846
DROP TRIGGER trg_1;
24847
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24848
f_int2 = CAST(f_char1 AS SIGNED INT),
24849
f_charbig = 'just inserted'
24850
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24852
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24853
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24854
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24855
'just inserted' FROM t0_template
24856
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24857
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
24859
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24860
f_charbig = 'updated by trigger'
24861
WHERE f_int1 = new.f_int1;
24863
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
24864
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24866
# check trigger-3 success: 1
24867
DROP TRIGGER trg_1;
24868
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24869
f_int2 = CAST(f_char1 AS SIGNED INT),
24870
f_charbig = 'just inserted'
24871
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24873
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24874
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24875
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24876
'just inserted' FROM t0_template
24877
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24878
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
24880
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24881
f_charbig = 'updated by trigger'
24882
WHERE f_int1 = - old.f_int1;
24884
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
24885
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24887
# check trigger-4 success: 1
24888
DROP TRIGGER trg_1;
24889
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24890
f_int2 = CAST(f_char1 AS SIGNED INT),
24891
f_charbig = 'just inserted'
24892
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24894
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24895
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24896
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24897
'just inserted' FROM t0_template
24898
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24899
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
24901
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24902
f_charbig = 'updated by trigger'
24903
WHERE f_int1 = new.f_int1;
24905
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
24906
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24908
# check trigger-5 success: 1
24909
DROP TRIGGER trg_1;
24910
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24911
f_int2 = CAST(f_char1 AS SIGNED INT),
24912
f_charbig = 'just inserted'
24913
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24915
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24916
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24917
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24918
'just inserted' FROM t0_template
24919
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24920
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
24922
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24923
f_charbig = 'updated by trigger'
24924
WHERE f_int1 = - old.f_int1;
24926
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
24927
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24929
# check trigger-6 success: 1
24930
DROP TRIGGER trg_1;
24931
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24932
f_int2 = CAST(f_char1 AS SIGNED INT),
24933
f_charbig = 'just inserted'
24934
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24936
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24937
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24938
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24939
'just inserted' FROM t0_template
24940
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24941
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
24943
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24944
f_charbig = 'updated by trigger'
24945
WHERE f_int1 = - old.f_int1;
24948
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24950
# check trigger-7 success: 1
24951
DROP TRIGGER trg_1;
24952
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24953
f_int2 = CAST(f_char1 AS SIGNED INT),
24954
f_charbig = 'just inserted'
24955
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24957
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24958
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24959
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24960
'just inserted' FROM t0_template
24961
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24962
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
24964
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24965
f_charbig = 'updated by trigger'
24966
WHERE f_int1 = - old.f_int1;
24969
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24971
# check trigger-8 success: 1
24972
DROP TRIGGER trg_1;
24973
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24974
f_int2 = CAST(f_char1 AS SIGNED INT),
24975
f_charbig = 'just inserted'
24976
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24978
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24980
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24981
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
24983
SET new.f_int1 = old.f_int1 + @max_row,
24984
new.f_int2 = old.f_int2 - @max_row,
24985
new.f_charbig = '####updated per update trigger####';
24988
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
24989
f_charbig = '####updated per update statement itself####';
24991
# check trigger-9 success: 1
24992
DROP TRIGGER trg_2;
24993
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24994
f_int2 = CAST(f_char1 AS SIGNED INT),
24995
f_charbig = CONCAT('===',f_char1,'===');
24996
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
24998
SET new.f_int1 = new.f_int1 + @max_row,
24999
new.f_int2 = new.f_int2 - @max_row,
25000
new.f_charbig = '####updated per update trigger####';
25003
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
25004
f_charbig = '####updated per update statement itself####';
25006
# check trigger-10 success: 1
25007
DROP TRIGGER trg_2;
25008
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25009
f_int2 = CAST(f_char1 AS SIGNED INT),
25010
f_charbig = CONCAT('===',f_char1,'===');
25011
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
25013
SET new.f_int1 = @my_max1 + @counter,
25014
new.f_int2 = @my_min2 - @counter,
25015
new.f_charbig = '####updated per insert trigger####';
25016
SET @counter = @counter + 1;
25019
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
25020
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25021
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
25022
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
25023
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
25025
DROP TRIGGER trg_3;
25027
# check trigger-11 success: 1
25029
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
25030
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
25031
AND f_charbig = '####updated per insert trigger####';
25032
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
25034
SET new.f_int1 = @my_max1 + @counter,
25035
new.f_int2 = @my_min2 - @counter,
25036
new.f_charbig = '####updated per insert trigger####';
25037
SET @counter = @counter + 1;
25040
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
25041
INSERT INTO t1 (f_char1, f_char2, f_charbig)
25042
SELECT CAST(f_int1 AS CHAR),
25043
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
25044
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
25046
DROP TRIGGER trg_3;
25048
# check trigger-12 success: 1
25050
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
25051
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
25052
AND f_charbig = '####updated per insert trigger####';
25054
Table Op Msg_type Msg_text
25055
test.t1 analyze status OK
25056
CHECK TABLE t1 EXTENDED;
25057
Table Op Msg_type Msg_text
25058
test.t1 check status OK
25059
CHECKSUM TABLE t1 EXTENDED;
25061
test.t1 <some_value>
25063
Table Op Msg_type Msg_text
25064
test.t1 optimize status OK
25065
# check layout success: 1
25066
REPAIR TABLE t1 EXTENDED;
25067
Table Op Msg_type Msg_text
25068
test.t1 repair status OK
25069
# check layout success: 1
25072
# check TRUNCATE success: 1
25073
# check layout success: 1
25074
# End usability test (inc/partition_check.inc)
25081
f_charbig VARCHAR(1000)
25082
, UNIQUE INDEX uidx (f_int1,f_int2)
25084
PARTITION BY KEY(f_int1,f_int2) PARTITIONS 5;
25085
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
25086
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
25087
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
25088
ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
25089
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
25090
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
25091
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
25092
# Start usability test (inc/partition_check.inc)
25094
SHOW CREATE TABLE t1;
25096
t1 CREATE TABLE `t1` (
25097
`f_int1` bigint(20) DEFAULT NULL,
25098
`f_int2` bigint(20) DEFAULT NULL,
25099
`f_char1` char(20) DEFAULT NULL,
25100
`f_char2` char(20) DEFAULT NULL,
25101
`f_charbig` varchar(1000) DEFAULT NULL,
25102
UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
25103
) ENGINE=MyISAM DEFAULT CHARSET=latin1
25104
/*!50100 PARTITION BY KEY (f_int1,f_int2)
25121
# check prerequisites-1 success: 1
25122
# check COUNT(*) success: 1
25123
# check MIN/MAX(f_int1) success: 1
25124
# check MIN/MAX(f_int2) success: 1
25125
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25126
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
25127
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
25128
WHERE f_int1 IN (2,3);
25129
ERROR 23000: Duplicate entry '2-2' for key 'uidx'
25130
# check prerequisites-3 success: 1
25131
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
25132
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25133
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
25134
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
25135
WHERE f_int1 IN (2,3);
25136
DELETE FROM t1 WHERE f_charbig = 'delete me';
25137
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25138
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
25139
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
25140
WHERE f_int1 IN (2,3);
25141
DELETE FROM t1 WHERE f_charbig = 'delete me';
25142
# check read via f_int1 success: 1
25143
# check read via f_int2 success: 1
25145
# check multiple-1 success: 1
25146
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
25148
# check multiple-2 success: 1
25149
INSERT INTO t1 SELECT * FROM t0_template
25150
WHERE MOD(f_int1,3) = 0;
25152
# check multiple-3 success: 1
25153
UPDATE t1 SET f_int1 = f_int1 + @max_row
25154
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
25155
AND @max_row_div2 + @max_row_div4;
25157
# check multiple-4 success: 1
25159
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
25160
AND @max_row_div2 + @max_row_div4 + @max_row;
25162
# check multiple-5 success: 1
25163
SELECT COUNT(*) INTO @try_count FROM t0_template
25164
WHERE MOD(f_int1,3) = 0
25165
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
25166
SELECT COUNT(*) INTO @clash_count
25167
FROM t1 INNER JOIN t0_template USING(f_int1)
25168
WHERE MOD(f_int1,3) = 0
25169
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
25170
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
25172
SET f_int1 = @cur_value , f_int2 = @cur_value,
25173
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
25174
f_charbig = '#SINGLE#';
25176
# check single-1 success: 1
25177
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
25179
SET f_int1 = @cur_value , f_int2 = @cur_value,
25180
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
25181
f_charbig = '#SINGLE#';
25183
# check single-2 success: 1
25184
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
25185
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
25186
UPDATE t1 SET f_int1 = @cur_value2
25187
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
25189
# check single-3 success: 1
25190
SET @cur_value1= -1;
25191
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
25192
UPDATE t1 SET f_int1 = @cur_value1
25193
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
25195
# check single-4 success: 1
25196
SELECT MAX(f_int1) INTO @cur_value FROM t1;
25197
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
25199
# check single-5 success: 1
25200
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
25202
# check single-6 success: 1
25203
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
25205
# check single-7 success: 1
25206
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
25207
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
25208
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
25209
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
25210
f_charbig = '#NULL#';
25212
SET f_int1 = NULL , f_int2 = -@max_row,
25213
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
25214
f_charbig = '#NULL#';
25215
# check null success: 1
25217
# check null-1 success: 1
25218
UPDATE t1 SET f_int1 = -@max_row
25219
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
25220
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
25222
# check null-2 success: 1
25223
UPDATE t1 SET f_int1 = NULL
25224
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
25225
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
25227
# check null-3 success: 1
25229
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
25230
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
25232
# check null-4 success: 1
25234
WHERE f_int1 = 0 AND f_int2 = 0
25235
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
25236
AND f_charbig = '#NULL#';
25237
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25238
SELECT f_int1, f_int1, '', '', 'was inserted'
25239
FROM t0_template source_tab
25240
WHERE MOD(f_int1,3) = 0
25241
AND f_int1 BETWEEN @max_row_div2 AND @max_row
25243
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
25244
f_int2 = 2 * @max_row + source_tab.f_int1,
25245
f_charbig = 'was updated';
25247
# check unique-1-a success: 1
25249
# check unique-1-b success: 1
25250
DELETE FROM t1 WHERE f_charbig = 'was inserted';
25251
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25252
f_int2 = CAST(f_char1 AS SIGNED INT),
25253
f_charbig = CONCAT('===',f_char1,'===')
25254
WHERE f_charbig = 'was updated';
25255
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25256
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
25257
FROM t0_template source_tab
25258
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
25260
# check replace success: 1
25262
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
25264
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
25265
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
25266
UPDATE t1 SET f_int2 = f_int1,
25267
f_char1 = CAST(f_int1 AS CHAR),
25268
f_char2 = CAST(f_int1 AS CHAR),
25269
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
25270
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
25272
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25273
SELECT f_int1, f_int1, '', '', 'was inserted'
25274
FROM t0_template source_tab
25275
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
25277
# check transactions-1 success: 1
25280
# check transactions-2 success: 1
25283
# check transactions-3 success: 1
25284
DELETE FROM t1 WHERE f_charbig = 'was inserted';
25288
# check transactions-4 success: 1
25289
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25290
SELECT f_int1, f_int1, '', '', 'was inserted'
25291
FROM t0_template source_tab
25292
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
25294
# check transactions-5 success: 1
25297
Warning 1196 Some non-transactional changed tables couldn't be rolled back
25299
# check transactions-6 success: 1
25300
# INFO: Storage engine used for t1 seems to be not transactional.
25303
# check transactions-7 success: 1
25304
DELETE FROM t1 WHERE f_charbig = 'was inserted';
25306
SET @@session.sql_mode = 'traditional';
25307
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
25308
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25309
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
25310
'', '', 'was inserted' FROM t0_template
25311
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
25312
ERROR 22012: Division by 0
25315
# check transactions-8 success: 1
25316
# INFO: Storage engine used for t1 seems to be unable to revert
25317
# changes made by the failing statement.
25318
SET @@session.sql_mode = '';
25320
DELETE FROM t1 WHERE f_charbig = 'was inserted';
25322
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
25324
# check special-1 success: 1
25325
UPDATE t1 SET f_charbig = '';
25327
# check special-2 success: 1
25328
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
25329
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
25330
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
25331
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25332
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25333
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25334
'just inserted' FROM t0_template
25335
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25336
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
25338
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25339
f_charbig = 'updated by trigger'
25340
WHERE f_int1 = new.f_int1;
25342
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25343
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
25344
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25346
# check trigger-1 success: 1
25347
DROP TRIGGER trg_1;
25348
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25349
f_int2 = CAST(f_char1 AS SIGNED INT),
25350
f_charbig = 'just inserted'
25351
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25353
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25354
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25355
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25356
'just inserted' FROM t0_template
25357
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25358
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
25360
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25361
f_charbig = 'updated by trigger'
25362
WHERE f_int1 = new.f_int1;
25364
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25365
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
25366
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25368
# check trigger-2 success: 1
25369
DROP TRIGGER trg_1;
25370
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25371
f_int2 = CAST(f_char1 AS SIGNED INT),
25372
f_charbig = 'just inserted'
25373
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25375
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25376
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25377
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25378
'just inserted' FROM t0_template
25379
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25380
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
25382
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25383
f_charbig = 'updated by trigger'
25384
WHERE f_int1 = new.f_int1;
25386
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
25387
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25389
# check trigger-3 success: 1
25390
DROP TRIGGER trg_1;
25391
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25392
f_int2 = CAST(f_char1 AS SIGNED INT),
25393
f_charbig = 'just inserted'
25394
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25396
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25397
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25398
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25399
'just inserted' FROM t0_template
25400
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25401
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
25403
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25404
f_charbig = 'updated by trigger'
25405
WHERE f_int1 = - old.f_int1;
25407
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
25408
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25410
# check trigger-4 success: 1
25411
DROP TRIGGER trg_1;
25412
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25413
f_int2 = CAST(f_char1 AS SIGNED INT),
25414
f_charbig = 'just inserted'
25415
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25417
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25418
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25419
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25420
'just inserted' FROM t0_template
25421
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25422
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
25424
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25425
f_charbig = 'updated by trigger'
25426
WHERE f_int1 = new.f_int1;
25428
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
25429
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25431
# check trigger-5 success: 1
25432
DROP TRIGGER trg_1;
25433
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25434
f_int2 = CAST(f_char1 AS SIGNED INT),
25435
f_charbig = 'just inserted'
25436
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25438
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25439
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25440
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25441
'just inserted' FROM t0_template
25442
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25443
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
25445
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25446
f_charbig = 'updated by trigger'
25447
WHERE f_int1 = - old.f_int1;
25449
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
25450
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25452
# check trigger-6 success: 1
25453
DROP TRIGGER trg_1;
25454
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25455
f_int2 = CAST(f_char1 AS SIGNED INT),
25456
f_charbig = 'just inserted'
25457
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25459
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25460
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25461
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25462
'just inserted' FROM t0_template
25463
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25464
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
25466
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25467
f_charbig = 'updated by trigger'
25468
WHERE f_int1 = - old.f_int1;
25471
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25473
# check trigger-7 success: 1
25474
DROP TRIGGER trg_1;
25475
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25476
f_int2 = CAST(f_char1 AS SIGNED INT),
25477
f_charbig = 'just inserted'
25478
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25480
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25481
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25482
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25483
'just inserted' FROM t0_template
25484
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25485
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
25487
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25488
f_charbig = 'updated by trigger'
25489
WHERE f_int1 = - old.f_int1;
25492
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25494
# check trigger-8 success: 1
25495
DROP TRIGGER trg_1;
25496
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25497
f_int2 = CAST(f_char1 AS SIGNED INT),
25498
f_charbig = 'just inserted'
25499
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25501
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25503
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25504
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
25506
SET new.f_int1 = old.f_int1 + @max_row,
25507
new.f_int2 = old.f_int2 - @max_row,
25508
new.f_charbig = '####updated per update trigger####';
25511
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
25512
f_charbig = '####updated per update statement itself####';
25514
# check trigger-9 success: 1
25515
DROP TRIGGER trg_2;
25516
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25517
f_int2 = CAST(f_char1 AS SIGNED INT),
25518
f_charbig = CONCAT('===',f_char1,'===');
25519
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
25521
SET new.f_int1 = new.f_int1 + @max_row,
25522
new.f_int2 = new.f_int2 - @max_row,
25523
new.f_charbig = '####updated per update trigger####';
25526
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
25527
f_charbig = '####updated per update statement itself####';
25529
# check trigger-10 success: 1
25530
DROP TRIGGER trg_2;
25531
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25532
f_int2 = CAST(f_char1 AS SIGNED INT),
25533
f_charbig = CONCAT('===',f_char1,'===');
25534
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
25536
SET new.f_int1 = @my_max1 + @counter,
25537
new.f_int2 = @my_min2 - @counter,
25538
new.f_charbig = '####updated per insert trigger####';
25539
SET @counter = @counter + 1;
25542
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
25543
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25544
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
25545
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
25546
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
25548
DROP TRIGGER trg_3;
25550
# check trigger-11 success: 1
25552
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
25553
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
25554
AND f_charbig = '####updated per insert trigger####';
25555
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
25557
SET new.f_int1 = @my_max1 + @counter,
25558
new.f_int2 = @my_min2 - @counter,
25559
new.f_charbig = '####updated per insert trigger####';
25560
SET @counter = @counter + 1;
25563
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
25564
INSERT INTO t1 (f_char1, f_char2, f_charbig)
25565
SELECT CAST(f_int1 AS CHAR),
25566
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
25567
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
25569
DROP TRIGGER trg_3;
25571
# check trigger-12 success: 1
25573
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
25574
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
25575
AND f_charbig = '####updated per insert trigger####';
25577
Table Op Msg_type Msg_text
25578
test.t1 analyze status OK
25579
CHECK TABLE t1 EXTENDED;
25580
Table Op Msg_type Msg_text
25581
test.t1 check status OK
25582
CHECKSUM TABLE t1 EXTENDED;
25584
test.t1 <some_value>
25586
Table Op Msg_type Msg_text
25587
test.t1 optimize status OK
25588
# check layout success: 1
25589
REPAIR TABLE t1 EXTENDED;
25590
Table Op Msg_type Msg_text
25591
test.t1 repair status OK
25592
# check layout success: 1
25595
# check TRUNCATE success: 1
25596
# check layout success: 1
25597
# End usability test (inc/partition_check.inc)
25604
f_charbig VARCHAR(1000)
25605
, UNIQUE INDEX uidx (f_int1,f_int2)
25607
PARTITION BY LIST(MOD(f_int1 + f_int2,4))
25608
(PARTITION part_3 VALUES IN (-3),
25609
PARTITION part_2 VALUES IN (-2),
25610
PARTITION part_1 VALUES IN (-1),
25611
PARTITION part_N VALUES IN (NULL),
25612
PARTITION part0 VALUES IN (0),
25613
PARTITION part1 VALUES IN (1),
25614
PARTITION part2 VALUES IN (2),
25615
PARTITION part3 VALUES IN (3));
25616
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
25617
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
25618
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
25619
ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
25620
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
25621
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
25622
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
25623
# Start usability test (inc/partition_check.inc)
25625
SHOW CREATE TABLE t1;
25627
t1 CREATE TABLE `t1` (
25628
`f_int1` bigint(20) DEFAULT NULL,
25629
`f_int2` bigint(20) DEFAULT NULL,
25630
`f_char1` char(20) DEFAULT NULL,
25631
`f_char2` char(20) DEFAULT NULL,
25632
`f_charbig` varchar(1000) DEFAULT NULL,
25633
UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
25634
) ENGINE=MyISAM DEFAULT CHARSET=latin1
25635
/*!50100 PARTITION BY LIST (MOD(f_int1 + f_int2,4))
25636
(PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM,
25637
PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM,
25638
PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM,
25639
PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM,
25640
PARTITION part0 VALUES IN (0) ENGINE = MyISAM,
25641
PARTITION part1 VALUES IN (1) ENGINE = MyISAM,
25642
PARTITION part2 VALUES IN (2) ENGINE = MyISAM,
25643
PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */
25665
# check prerequisites-1 success: 1
25666
# check COUNT(*) success: 1
25667
# check MIN/MAX(f_int1) success: 1
25668
# check MIN/MAX(f_int2) success: 1
25669
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25670
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
25671
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
25672
WHERE f_int1 IN (2,3);
25673
ERROR 23000: Duplicate entry '2-2' for key 'uidx'
25674
# check prerequisites-3 success: 1
25675
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
25676
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25677
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
25678
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
25679
WHERE f_int1 IN (2,3);
25680
DELETE FROM t1 WHERE f_charbig = 'delete me';
25681
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25682
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
25683
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
25684
WHERE f_int1 IN (2,3);
25685
DELETE FROM t1 WHERE f_charbig = 'delete me';
25686
# check read via f_int1 success: 1
25687
# check read via f_int2 success: 1
25689
# check multiple-1 success: 1
25690
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
25692
# check multiple-2 success: 1
25693
INSERT INTO t1 SELECT * FROM t0_template
25694
WHERE MOD(f_int1,3) = 0;
25696
# check multiple-3 success: 1
25697
UPDATE t1 SET f_int1 = f_int1 + @max_row
25698
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
25699
AND @max_row_div2 + @max_row_div4;
25701
# check multiple-4 success: 1
25703
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
25704
AND @max_row_div2 + @max_row_div4 + @max_row;
25706
# check multiple-5 success: 1
25707
SELECT COUNT(*) INTO @try_count FROM t0_template
25708
WHERE MOD(f_int1,3) = 0
25709
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
25710
SELECT COUNT(*) INTO @clash_count
25711
FROM t1 INNER JOIN t0_template USING(f_int1)
25712
WHERE MOD(f_int1,3) = 0
25713
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
25714
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
25716
SET f_int1 = @cur_value , f_int2 = @cur_value,
25717
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
25718
f_charbig = '#SINGLE#';
25720
# check single-1 success: 1
25721
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
25723
SET f_int1 = @cur_value , f_int2 = @cur_value,
25724
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
25725
f_charbig = '#SINGLE#';
25727
# check single-2 success: 1
25728
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
25729
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
25730
UPDATE t1 SET f_int1 = @cur_value2
25731
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
25733
# check single-3 success: 1
25734
SET @cur_value1= -1;
25735
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
25736
UPDATE t1 SET f_int1 = @cur_value1
25737
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
25739
# check single-4 success: 1
25740
SELECT MAX(f_int1) INTO @cur_value FROM t1;
25741
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
25743
# check single-5 success: 1
25744
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
25746
# check single-6 success: 1
25747
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
25749
# check single-7 success: 1
25750
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
25751
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
25752
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
25753
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
25754
f_charbig = '#NULL#';
25756
SET f_int1 = NULL , f_int2 = -@max_row,
25757
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
25758
f_charbig = '#NULL#';
25759
# check null success: 1
25761
# check null-1 success: 1
25762
UPDATE t1 SET f_int1 = -@max_row
25763
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
25764
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
25766
# check null-2 success: 1
25767
UPDATE t1 SET f_int1 = NULL
25768
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
25769
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
25771
# check null-3 success: 1
25773
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
25774
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
25776
# check null-4 success: 1
25778
WHERE f_int1 = 0 AND f_int2 = 0
25779
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
25780
AND f_charbig = '#NULL#';
25781
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25782
SELECT f_int1, f_int1, '', '', 'was inserted'
25783
FROM t0_template source_tab
25784
WHERE MOD(f_int1,3) = 0
25785
AND f_int1 BETWEEN @max_row_div2 AND @max_row
25787
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
25788
f_int2 = 2 * @max_row + source_tab.f_int1,
25789
f_charbig = 'was updated';
25791
# check unique-1-a success: 1
25793
# check unique-1-b success: 1
25794
DELETE FROM t1 WHERE f_charbig = 'was inserted';
25795
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25796
f_int2 = CAST(f_char1 AS SIGNED INT),
25797
f_charbig = CONCAT('===',f_char1,'===')
25798
WHERE f_charbig = 'was updated';
25799
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25800
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
25801
FROM t0_template source_tab
25802
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
25804
# check replace success: 1
25806
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
25808
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
25809
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
25810
UPDATE t1 SET f_int2 = f_int1,
25811
f_char1 = CAST(f_int1 AS CHAR),
25812
f_char2 = CAST(f_int1 AS CHAR),
25813
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
25814
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
25816
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25817
SELECT f_int1, f_int1, '', '', 'was inserted'
25818
FROM t0_template source_tab
25819
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
25821
# check transactions-1 success: 1
25824
# check transactions-2 success: 1
25827
# check transactions-3 success: 1
25828
DELETE FROM t1 WHERE f_charbig = 'was inserted';
25832
# check transactions-4 success: 1
25833
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25834
SELECT f_int1, f_int1, '', '', 'was inserted'
25835
FROM t0_template source_tab
25836
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
25838
# check transactions-5 success: 1
25841
Warning 1196 Some non-transactional changed tables couldn't be rolled back
25843
# check transactions-6 success: 1
25844
# INFO: Storage engine used for t1 seems to be not transactional.
25847
# check transactions-7 success: 1
25848
DELETE FROM t1 WHERE f_charbig = 'was inserted';
25850
SET @@session.sql_mode = 'traditional';
25851
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
25852
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25853
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
25854
'', '', 'was inserted' FROM t0_template
25855
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
25856
ERROR 22012: Division by 0
25859
# check transactions-8 success: 1
25860
# INFO: Storage engine used for t1 seems to be unable to revert
25861
# changes made by the failing statement.
25862
SET @@session.sql_mode = '';
25864
DELETE FROM t1 WHERE f_charbig = 'was inserted';
25866
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
25868
# check special-1 success: 1
25869
UPDATE t1 SET f_charbig = '';
25871
# check special-2 success: 1
25872
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
25873
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
25874
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
25875
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25876
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25877
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25878
'just inserted' FROM t0_template
25879
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25880
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
25882
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25883
f_charbig = 'updated by trigger'
25884
WHERE f_int1 = new.f_int1;
25886
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25887
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
25888
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25890
# check trigger-1 success: 1
25891
DROP TRIGGER trg_1;
25892
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25893
f_int2 = CAST(f_char1 AS SIGNED INT),
25894
f_charbig = 'just inserted'
25895
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25897
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25898
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25899
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25900
'just inserted' FROM t0_template
25901
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25902
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
25904
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25905
f_charbig = 'updated by trigger'
25906
WHERE f_int1 = new.f_int1;
25908
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25909
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
25910
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25912
# check trigger-2 success: 1
25913
DROP TRIGGER trg_1;
25914
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25915
f_int2 = CAST(f_char1 AS SIGNED INT),
25916
f_charbig = 'just inserted'
25917
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25919
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25920
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25921
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25922
'just inserted' FROM t0_template
25923
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25924
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
25926
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25927
f_charbig = 'updated by trigger'
25928
WHERE f_int1 = new.f_int1;
25930
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
25931
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25933
# check trigger-3 success: 1
25934
DROP TRIGGER trg_1;
25935
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25936
f_int2 = CAST(f_char1 AS SIGNED INT),
25937
f_charbig = 'just inserted'
25938
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25940
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25941
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25942
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25943
'just inserted' FROM t0_template
25944
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25945
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
25947
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25948
f_charbig = 'updated by trigger'
25949
WHERE f_int1 = - old.f_int1;
25951
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
25952
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25954
# check trigger-4 success: 1
25955
DROP TRIGGER trg_1;
25956
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25957
f_int2 = CAST(f_char1 AS SIGNED INT),
25958
f_charbig = 'just inserted'
25959
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25961
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25962
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25963
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25964
'just inserted' FROM t0_template
25965
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25966
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
25968
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25969
f_charbig = 'updated by trigger'
25970
WHERE f_int1 = new.f_int1;
25972
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
25973
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25975
# check trigger-5 success: 1
25976
DROP TRIGGER trg_1;
25977
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25978
f_int2 = CAST(f_char1 AS SIGNED INT),
25979
f_charbig = 'just inserted'
25980
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25982
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25983
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25984
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25985
'just inserted' FROM t0_template
25986
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25987
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
25989
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25990
f_charbig = 'updated by trigger'
25991
WHERE f_int1 = - old.f_int1;
25993
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
25994
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25996
# check trigger-6 success: 1
25997
DROP TRIGGER trg_1;
25998
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25999
f_int2 = CAST(f_char1 AS SIGNED INT),
26000
f_charbig = 'just inserted'
26001
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26003
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26004
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26005
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26006
'just inserted' FROM t0_template
26007
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26008
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
26010
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26011
f_charbig = 'updated by trigger'
26012
WHERE f_int1 = - old.f_int1;
26015
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26017
# check trigger-7 success: 1
26018
DROP TRIGGER trg_1;
26019
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26020
f_int2 = CAST(f_char1 AS SIGNED INT),
26021
f_charbig = 'just inserted'
26022
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26024
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26025
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26026
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26027
'just inserted' FROM t0_template
26028
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26029
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
26031
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26032
f_charbig = 'updated by trigger'
26033
WHERE f_int1 = - old.f_int1;
26036
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26038
# check trigger-8 success: 1
26039
DROP TRIGGER trg_1;
26040
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26041
f_int2 = CAST(f_char1 AS SIGNED INT),
26042
f_charbig = 'just inserted'
26043
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26045
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26047
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26048
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
26050
SET new.f_int1 = old.f_int1 + @max_row,
26051
new.f_int2 = old.f_int2 - @max_row,
26052
new.f_charbig = '####updated per update trigger####';
26055
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
26056
f_charbig = '####updated per update statement itself####';
26058
# check trigger-9 success: 1
26059
DROP TRIGGER trg_2;
26060
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26061
f_int2 = CAST(f_char1 AS SIGNED INT),
26062
f_charbig = CONCAT('===',f_char1,'===');
26063
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
26065
SET new.f_int1 = new.f_int1 + @max_row,
26066
new.f_int2 = new.f_int2 - @max_row,
26067
new.f_charbig = '####updated per update trigger####';
26070
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
26071
f_charbig = '####updated per update statement itself####';
26073
# check trigger-10 success: 1
26074
DROP TRIGGER trg_2;
26075
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26076
f_int2 = CAST(f_char1 AS SIGNED INT),
26077
f_charbig = CONCAT('===',f_char1,'===');
26078
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
26080
SET new.f_int1 = @my_max1 + @counter,
26081
new.f_int2 = @my_min2 - @counter,
26082
new.f_charbig = '####updated per insert trigger####';
26083
SET @counter = @counter + 1;
26086
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
26087
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26088
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
26089
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
26090
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
26092
DROP TRIGGER trg_3;
26094
# check trigger-11 success: 1
26096
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
26097
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
26098
AND f_charbig = '####updated per insert trigger####';
26099
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
26101
SET new.f_int1 = @my_max1 + @counter,
26102
new.f_int2 = @my_min2 - @counter,
26103
new.f_charbig = '####updated per insert trigger####';
26104
SET @counter = @counter + 1;
26107
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
26108
INSERT INTO t1 (f_char1, f_char2, f_charbig)
26109
SELECT CAST(f_int1 AS CHAR),
26110
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
26111
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
26113
DROP TRIGGER trg_3;
26115
# check trigger-12 success: 1
26117
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
26118
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
26119
AND f_charbig = '####updated per insert trigger####';
26121
Table Op Msg_type Msg_text
26122
test.t1 analyze status OK
26123
CHECK TABLE t1 EXTENDED;
26124
Table Op Msg_type Msg_text
26125
test.t1 check status OK
26126
CHECKSUM TABLE t1 EXTENDED;
26128
test.t1 <some_value>
26130
Table Op Msg_type Msg_text
26131
test.t1 optimize status OK
26132
# check layout success: 1
26133
REPAIR TABLE t1 EXTENDED;
26134
Table Op Msg_type Msg_text
26135
test.t1 repair status OK
26136
# check layout success: 1
26139
# check TRUNCATE success: 1
26140
# check layout success: 1
26141
# End usability test (inc/partition_check.inc)
26148
f_charbig VARCHAR(1000)
26149
, UNIQUE INDEX uidx (f_int1,f_int2)
26151
PARTITION BY RANGE((f_int1 + f_int2) DIV 2)
26152
(PARTITION parta VALUES LESS THAN (0),
26153
PARTITION partb VALUES LESS THAN (5),
26154
PARTITION partc VALUES LESS THAN (10),
26155
PARTITION partd VALUES LESS THAN (10 + 5),
26156
PARTITION parte VALUES LESS THAN (20),
26157
PARTITION partf VALUES LESS THAN (2147483646));
26158
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
26159
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
26160
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
26161
ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
26162
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
26163
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
26164
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
26165
# Start usability test (inc/partition_check.inc)
26167
SHOW CREATE TABLE t1;
26169
t1 CREATE TABLE `t1` (
26170
`f_int1` bigint(20) DEFAULT NULL,
26171
`f_int2` bigint(20) DEFAULT NULL,
26172
`f_char1` char(20) DEFAULT NULL,
26173
`f_char2` char(20) DEFAULT NULL,
26174
`f_charbig` varchar(1000) DEFAULT NULL,
26175
UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
26176
) ENGINE=MyISAM DEFAULT CHARSET=latin1
26177
/*!50100 PARTITION BY RANGE ((f_int1 + f_int2) DIV 2)
26178
(PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM,
26179
PARTITION partb VALUES LESS THAN (5) ENGINE = MyISAM,
26180
PARTITION partc VALUES LESS THAN (10) ENGINE = MyISAM,
26181
PARTITION partd VALUES LESS THAN (15) ENGINE = MyISAM,
26182
PARTITION parte VALUES LESS THAN (20) ENGINE = MyISAM,
26183
PARTITION partf VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
26201
# check prerequisites-1 success: 1
26202
# check COUNT(*) success: 1
26203
# check MIN/MAX(f_int1) success: 1
26204
# check MIN/MAX(f_int2) success: 1
26205
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26206
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
26207
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
26208
WHERE f_int1 IN (2,3);
26209
ERROR 23000: Duplicate entry '2-2' for key 'uidx'
26210
# check prerequisites-3 success: 1
26211
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
26212
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26213
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
26214
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
26215
WHERE f_int1 IN (2,3);
26216
DELETE FROM t1 WHERE f_charbig = 'delete me';
26217
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26218
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
26219
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
26220
WHERE f_int1 IN (2,3);
26221
DELETE FROM t1 WHERE f_charbig = 'delete me';
26222
# check read via f_int1 success: 1
26223
# check read via f_int2 success: 1
26225
# check multiple-1 success: 1
26226
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
26228
# check multiple-2 success: 1
26229
INSERT INTO t1 SELECT * FROM t0_template
26230
WHERE MOD(f_int1,3) = 0;
26232
# check multiple-3 success: 1
26233
UPDATE t1 SET f_int1 = f_int1 + @max_row
26234
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
26235
AND @max_row_div2 + @max_row_div4;
26237
# check multiple-4 success: 1
26239
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
26240
AND @max_row_div2 + @max_row_div4 + @max_row;
26242
# check multiple-5 success: 1
26243
SELECT COUNT(*) INTO @try_count FROM t0_template
26244
WHERE MOD(f_int1,3) = 0
26245
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
26246
SELECT COUNT(*) INTO @clash_count
26247
FROM t1 INNER JOIN t0_template USING(f_int1)
26248
WHERE MOD(f_int1,3) = 0
26249
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
26250
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
26252
SET f_int1 = @cur_value , f_int2 = @cur_value,
26253
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
26254
f_charbig = '#SINGLE#';
26256
# check single-1 success: 1
26257
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
26259
SET f_int1 = @cur_value , f_int2 = @cur_value,
26260
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
26261
f_charbig = '#SINGLE#';
26263
# check single-2 success: 1
26264
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
26265
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
26266
UPDATE t1 SET f_int1 = @cur_value2
26267
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
26269
# check single-3 success: 1
26270
SET @cur_value1= -1;
26271
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
26272
UPDATE t1 SET f_int1 = @cur_value1
26273
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
26275
# check single-4 success: 1
26276
SELECT MAX(f_int1) INTO @cur_value FROM t1;
26277
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
26279
# check single-5 success: 1
26280
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
26282
# check single-6 success: 1
26283
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
26284
ERROR HY000: Table has no partition for value 2147483647
26285
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
26286
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
26287
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
26288
f_charbig = '#NULL#';
26290
SET f_int1 = NULL , f_int2 = -@max_row,
26291
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
26292
f_charbig = '#NULL#';
26293
# check null success: 1
26295
# check null-1 success: 1
26296
UPDATE t1 SET f_int1 = -@max_row
26297
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
26298
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
26300
# check null-2 success: 1
26301
UPDATE t1 SET f_int1 = NULL
26302
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
26303
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
26305
# check null-3 success: 1
26307
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
26308
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
26310
# check null-4 success: 1
26312
WHERE f_int1 = 0 AND f_int2 = 0
26313
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
26314
AND f_charbig = '#NULL#';
26315
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26316
SELECT f_int1, f_int1, '', '', 'was inserted'
26317
FROM t0_template source_tab
26318
WHERE MOD(f_int1,3) = 0
26319
AND f_int1 BETWEEN @max_row_div2 AND @max_row
26321
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
26322
f_int2 = 2 * @max_row + source_tab.f_int1,
26323
f_charbig = 'was updated';
26325
# check unique-1-a success: 1
26327
# check unique-1-b success: 1
26328
DELETE FROM t1 WHERE f_charbig = 'was inserted';
26329
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26330
f_int2 = CAST(f_char1 AS SIGNED INT),
26331
f_charbig = CONCAT('===',f_char1,'===')
26332
WHERE f_charbig = 'was updated';
26333
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26334
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
26335
FROM t0_template source_tab
26336
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
26338
# check replace success: 1
26340
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
26342
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
26343
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
26344
UPDATE t1 SET f_int2 = f_int1,
26345
f_char1 = CAST(f_int1 AS CHAR),
26346
f_char2 = CAST(f_int1 AS CHAR),
26347
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
26348
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
26350
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26351
SELECT f_int1, f_int1, '', '', 'was inserted'
26352
FROM t0_template source_tab
26353
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
26355
# check transactions-1 success: 1
26358
# check transactions-2 success: 1
26361
# check transactions-3 success: 1
26362
DELETE FROM t1 WHERE f_charbig = 'was inserted';
26366
# check transactions-4 success: 1
26367
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26368
SELECT f_int1, f_int1, '', '', 'was inserted'
26369
FROM t0_template source_tab
26370
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
26372
# check transactions-5 success: 1
26375
Warning 1196 Some non-transactional changed tables couldn't be rolled back
26377
# check transactions-6 success: 1
26378
# INFO: Storage engine used for t1 seems to be not transactional.
26381
# check transactions-7 success: 1
26382
DELETE FROM t1 WHERE f_charbig = 'was inserted';
26384
SET @@session.sql_mode = 'traditional';
26385
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
26386
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26387
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
26388
'', '', 'was inserted' FROM t0_template
26389
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
26390
ERROR 22012: Division by 0
26393
# check transactions-8 success: 1
26394
# INFO: Storage engine used for t1 seems to be unable to revert
26395
# changes made by the failing statement.
26396
SET @@session.sql_mode = '';
26398
DELETE FROM t1 WHERE f_charbig = 'was inserted';
26400
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
26402
# check special-1 success: 1
26403
UPDATE t1 SET f_charbig = '';
26405
# check special-2 success: 1
26406
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
26407
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
26408
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
26409
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26410
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26411
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26412
'just inserted' FROM t0_template
26413
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26414
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
26416
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26417
f_charbig = 'updated by trigger'
26418
WHERE f_int1 = new.f_int1;
26420
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26421
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
26422
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26424
# check trigger-1 success: 1
26425
DROP TRIGGER trg_1;
26426
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26427
f_int2 = CAST(f_char1 AS SIGNED INT),
26428
f_charbig = 'just inserted'
26429
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26431
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26432
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26433
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26434
'just inserted' FROM t0_template
26435
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26436
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
26438
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26439
f_charbig = 'updated by trigger'
26440
WHERE f_int1 = new.f_int1;
26442
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26443
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
26444
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26446
# check trigger-2 success: 1
26447
DROP TRIGGER trg_1;
26448
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26449
f_int2 = CAST(f_char1 AS SIGNED INT),
26450
f_charbig = 'just inserted'
26451
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26453
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26454
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26455
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26456
'just inserted' FROM t0_template
26457
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26458
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
26460
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26461
f_charbig = 'updated by trigger'
26462
WHERE f_int1 = new.f_int1;
26464
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
26465
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26467
# check trigger-3 success: 1
26468
DROP TRIGGER trg_1;
26469
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26470
f_int2 = CAST(f_char1 AS SIGNED INT),
26471
f_charbig = 'just inserted'
26472
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26474
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26475
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26476
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26477
'just inserted' FROM t0_template
26478
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26479
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
26481
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26482
f_charbig = 'updated by trigger'
26483
WHERE f_int1 = - old.f_int1;
26485
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
26486
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26488
# check trigger-4 success: 1
26489
DROP TRIGGER trg_1;
26490
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26491
f_int2 = CAST(f_char1 AS SIGNED INT),
26492
f_charbig = 'just inserted'
26493
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26495
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26496
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26497
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26498
'just inserted' FROM t0_template
26499
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26500
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
26502
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26503
f_charbig = 'updated by trigger'
26504
WHERE f_int1 = new.f_int1;
26506
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
26507
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26509
# check trigger-5 success: 1
26510
DROP TRIGGER trg_1;
26511
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26512
f_int2 = CAST(f_char1 AS SIGNED INT),
26513
f_charbig = 'just inserted'
26514
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26516
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26517
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26518
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26519
'just inserted' FROM t0_template
26520
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26521
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
26523
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26524
f_charbig = 'updated by trigger'
26525
WHERE f_int1 = - old.f_int1;
26527
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
26528
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26530
# check trigger-6 success: 1
26531
DROP TRIGGER trg_1;
26532
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26533
f_int2 = CAST(f_char1 AS SIGNED INT),
26534
f_charbig = 'just inserted'
26535
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26537
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26538
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26539
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26540
'just inserted' FROM t0_template
26541
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26542
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
26544
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26545
f_charbig = 'updated by trigger'
26546
WHERE f_int1 = - old.f_int1;
26549
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26551
# check trigger-7 success: 1
26552
DROP TRIGGER trg_1;
26553
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26554
f_int2 = CAST(f_char1 AS SIGNED INT),
26555
f_charbig = 'just inserted'
26556
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26558
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26559
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26560
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26561
'just inserted' FROM t0_template
26562
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26563
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
26565
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26566
f_charbig = 'updated by trigger'
26567
WHERE f_int1 = - old.f_int1;
26570
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26572
# check trigger-8 success: 1
26573
DROP TRIGGER trg_1;
26574
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26575
f_int2 = CAST(f_char1 AS SIGNED INT),
26576
f_charbig = 'just inserted'
26577
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26579
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26581
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26582
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
26584
SET new.f_int1 = old.f_int1 + @max_row,
26585
new.f_int2 = old.f_int2 - @max_row,
26586
new.f_charbig = '####updated per update trigger####';
26589
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
26590
f_charbig = '####updated per update statement itself####';
26592
# check trigger-9 success: 1
26593
DROP TRIGGER trg_2;
26594
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26595
f_int2 = CAST(f_char1 AS SIGNED INT),
26596
f_charbig = CONCAT('===',f_char1,'===');
26597
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
26599
SET new.f_int1 = new.f_int1 + @max_row,
26600
new.f_int2 = new.f_int2 - @max_row,
26601
new.f_charbig = '####updated per update trigger####';
26604
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
26605
f_charbig = '####updated per update statement itself####';
26607
# check trigger-10 success: 1
26608
DROP TRIGGER trg_2;
26609
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26610
f_int2 = CAST(f_char1 AS SIGNED INT),
26611
f_charbig = CONCAT('===',f_char1,'===');
26612
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
26614
SET new.f_int1 = @my_max1 + @counter,
26615
new.f_int2 = @my_min2 - @counter,
26616
new.f_charbig = '####updated per insert trigger####';
26617
SET @counter = @counter + 1;
26620
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
26621
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26622
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
26623
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
26624
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
26626
DROP TRIGGER trg_3;
26628
# check trigger-11 success: 1
26630
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
26631
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
26632
AND f_charbig = '####updated per insert trigger####';
26633
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
26635
SET new.f_int1 = @my_max1 + @counter,
26636
new.f_int2 = @my_min2 - @counter,
26637
new.f_charbig = '####updated per insert trigger####';
26638
SET @counter = @counter + 1;
26641
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
26642
INSERT INTO t1 (f_char1, f_char2, f_charbig)
26643
SELECT CAST(f_int1 AS CHAR),
26644
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
26645
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
26647
DROP TRIGGER trg_3;
26649
# check trigger-12 success: 1
26651
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
26652
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
26653
AND f_charbig = '####updated per insert trigger####';
26655
Table Op Msg_type Msg_text
26656
test.t1 analyze status OK
26657
CHECK TABLE t1 EXTENDED;
26658
Table Op Msg_type Msg_text
26659
test.t1 check status OK
26660
CHECKSUM TABLE t1 EXTENDED;
26662
test.t1 <some_value>
26664
Table Op Msg_type Msg_text
26665
test.t1 optimize status OK
26666
# check layout success: 1
26667
REPAIR TABLE t1 EXTENDED;
26668
Table Op Msg_type Msg_text
26669
test.t1 repair status OK
26670
# check layout success: 1
26673
# check TRUNCATE success: 1
26674
# check layout success: 1
26675
# End usability test (inc/partition_check.inc)
26682
f_charbig VARCHAR(1000)
26683
, UNIQUE INDEX uidx (f_int1,f_int2)
26685
PARTITION BY RANGE(f_int1) SUBPARTITION BY HASH(f_int2) SUBPARTITIONS 2
26686
(PARTITION parta VALUES LESS THAN (0),
26687
PARTITION partb VALUES LESS THAN (5),
26688
PARTITION partc VALUES LESS THAN (10),
26689
PARTITION partd VALUES LESS THAN (2147483646));
26690
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
26691
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
26692
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
26693
ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
26694
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
26695
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
26696
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
26697
# Start usability test (inc/partition_check.inc)
26699
SHOW CREATE TABLE t1;
26701
t1 CREATE TABLE `t1` (
26702
`f_int1` bigint(20) DEFAULT NULL,
26703
`f_int2` bigint(20) DEFAULT NULL,
26704
`f_char1` char(20) DEFAULT NULL,
26705
`f_char2` char(20) DEFAULT NULL,
26706
`f_charbig` varchar(1000) DEFAULT NULL,
26707
UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
26708
) ENGINE=MyISAM DEFAULT CHARSET=latin1
26709
/*!50100 PARTITION BY RANGE (f_int1)
26710
SUBPARTITION BY HASH (f_int2)
26712
(PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM,
26713
PARTITION partb VALUES LESS THAN (5) ENGINE = MyISAM,
26714
PARTITION partc VALUES LESS THAN (10) ENGINE = MyISAM,
26715
PARTITION partd VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
26718
t1#P#parta#SP#partasp0.MYD
26719
t1#P#parta#SP#partasp0.MYI
26720
t1#P#parta#SP#partasp1.MYD
26721
t1#P#parta#SP#partasp1.MYI
26722
t1#P#partb#SP#partbsp0.MYD
26723
t1#P#partb#SP#partbsp0.MYI
26724
t1#P#partb#SP#partbsp1.MYD
26725
t1#P#partb#SP#partbsp1.MYI
26726
t1#P#partc#SP#partcsp0.MYD
26727
t1#P#partc#SP#partcsp0.MYI
26728
t1#P#partc#SP#partcsp1.MYD
26729
t1#P#partc#SP#partcsp1.MYI
26730
t1#P#partd#SP#partdsp0.MYD
26731
t1#P#partd#SP#partdsp0.MYI
26732
t1#P#partd#SP#partdsp1.MYD
26733
t1#P#partd#SP#partdsp1.MYI
26737
# check prerequisites-1 success: 1
26738
# check COUNT(*) success: 1
26739
# check MIN/MAX(f_int1) success: 1
26740
# check MIN/MAX(f_int2) success: 1
26741
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26742
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
26743
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
26744
WHERE f_int1 IN (2,3);
26745
ERROR 23000: Duplicate entry '2-2' for key 'uidx'
26746
# check prerequisites-3 success: 1
26747
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
26748
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26749
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
26750
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
26751
WHERE f_int1 IN (2,3);
26752
DELETE FROM t1 WHERE f_charbig = 'delete me';
26753
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26754
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
26755
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
26756
WHERE f_int1 IN (2,3);
26757
DELETE FROM t1 WHERE f_charbig = 'delete me';
26758
# check read via f_int1 success: 1
26759
# check read via f_int2 success: 1
26761
# check multiple-1 success: 1
26762
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
26764
# check multiple-2 success: 1
26765
INSERT INTO t1 SELECT * FROM t0_template
26766
WHERE MOD(f_int1,3) = 0;
26768
# check multiple-3 success: 1
26769
UPDATE t1 SET f_int1 = f_int1 + @max_row
26770
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
26771
AND @max_row_div2 + @max_row_div4;
26773
# check multiple-4 success: 1
26775
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
26776
AND @max_row_div2 + @max_row_div4 + @max_row;
26778
# check multiple-5 success: 1
26779
SELECT COUNT(*) INTO @try_count FROM t0_template
26780
WHERE MOD(f_int1,3) = 0
26781
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
26782
SELECT COUNT(*) INTO @clash_count
26783
FROM t1 INNER JOIN t0_template USING(f_int1)
26784
WHERE MOD(f_int1,3) = 0
26785
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
26786
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
26788
SET f_int1 = @cur_value , f_int2 = @cur_value,
26789
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
26790
f_charbig = '#SINGLE#';
26792
# check single-1 success: 1
26793
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
26795
SET f_int1 = @cur_value , f_int2 = @cur_value,
26796
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
26797
f_charbig = '#SINGLE#';
26799
# check single-2 success: 1
26800
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
26801
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
26802
UPDATE t1 SET f_int1 = @cur_value2
26803
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
26805
# check single-3 success: 1
26806
SET @cur_value1= -1;
26807
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
26808
UPDATE t1 SET f_int1 = @cur_value1
26809
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
26811
# check single-4 success: 1
26812
SELECT MAX(f_int1) INTO @cur_value FROM t1;
26813
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
26815
# check single-5 success: 1
26816
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
26818
# check single-6 success: 1
26819
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
26820
ERROR HY000: Table has no partition for value 2147483647
26821
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
26822
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
26823
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
26824
f_charbig = '#NULL#';
26826
SET f_int1 = NULL , f_int2 = -@max_row,
26827
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
26828
f_charbig = '#NULL#';
26829
# check null success: 1
26831
# check null-1 success: 1
26832
UPDATE t1 SET f_int1 = -@max_row
26833
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
26834
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
26836
# check null-2 success: 1
26837
UPDATE t1 SET f_int1 = NULL
26838
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
26839
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
26841
# check null-3 success: 1
26843
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
26844
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
26846
# check null-4 success: 1
26848
WHERE f_int1 = 0 AND f_int2 = 0
26849
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
26850
AND f_charbig = '#NULL#';
26851
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26852
SELECT f_int1, f_int1, '', '', 'was inserted'
26853
FROM t0_template source_tab
26854
WHERE MOD(f_int1,3) = 0
26855
AND f_int1 BETWEEN @max_row_div2 AND @max_row
26857
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
26858
f_int2 = 2 * @max_row + source_tab.f_int1,
26859
f_charbig = 'was updated';
26861
# check unique-1-a success: 1
26863
# check unique-1-b success: 1
26864
DELETE FROM t1 WHERE f_charbig = 'was inserted';
26865
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26866
f_int2 = CAST(f_char1 AS SIGNED INT),
26867
f_charbig = CONCAT('===',f_char1,'===')
26868
WHERE f_charbig = 'was updated';
26869
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26870
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
26871
FROM t0_template source_tab
26872
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
26874
# check replace success: 1
26876
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
26878
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
26879
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
26880
UPDATE t1 SET f_int2 = f_int1,
26881
f_char1 = CAST(f_int1 AS CHAR),
26882
f_char2 = CAST(f_int1 AS CHAR),
26883
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
26884
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
26886
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26887
SELECT f_int1, f_int1, '', '', 'was inserted'
26888
FROM t0_template source_tab
26889
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
26891
# check transactions-1 success: 1
26894
# check transactions-2 success: 1
26897
# check transactions-3 success: 1
26898
DELETE FROM t1 WHERE f_charbig = 'was inserted';
26902
# check transactions-4 success: 1
26903
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26904
SELECT f_int1, f_int1, '', '', 'was inserted'
26905
FROM t0_template source_tab
26906
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
26908
# check transactions-5 success: 1
26911
Warning 1196 Some non-transactional changed tables couldn't be rolled back
26913
# check transactions-6 success: 1
26914
# INFO: Storage engine used for t1 seems to be not transactional.
26917
# check transactions-7 success: 1
26918
DELETE FROM t1 WHERE f_charbig = 'was inserted';
26920
SET @@session.sql_mode = 'traditional';
26921
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
26922
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26923
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
26924
'', '', 'was inserted' FROM t0_template
26925
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
26926
ERROR 22012: Division by 0
26929
# check transactions-8 success: 1
26930
# INFO: Storage engine used for t1 seems to be unable to revert
26931
# changes made by the failing statement.
26932
SET @@session.sql_mode = '';
26934
DELETE FROM t1 WHERE f_charbig = 'was inserted';
26936
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
26938
# check special-1 success: 1
26939
UPDATE t1 SET f_charbig = '';
26941
# check special-2 success: 1
26942
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
26943
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
26944
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
26945
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26946
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26947
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26948
'just inserted' FROM t0_template
26949
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26950
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
26952
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26953
f_charbig = 'updated by trigger'
26954
WHERE f_int1 = new.f_int1;
26956
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26957
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
26958
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26960
# check trigger-1 success: 1
26961
DROP TRIGGER trg_1;
26962
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26963
f_int2 = CAST(f_char1 AS SIGNED INT),
26964
f_charbig = 'just inserted'
26965
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26967
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26968
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26969
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26970
'just inserted' FROM t0_template
26971
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26972
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
26974
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26975
f_charbig = 'updated by trigger'
26976
WHERE f_int1 = new.f_int1;
26978
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26979
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
26980
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26982
# check trigger-2 success: 1
26983
DROP TRIGGER trg_1;
26984
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26985
f_int2 = CAST(f_char1 AS SIGNED INT),
26986
f_charbig = 'just inserted'
26987
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26989
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26990
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26991
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26992
'just inserted' FROM t0_template
26993
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26994
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
26996
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26997
f_charbig = 'updated by trigger'
26998
WHERE f_int1 = new.f_int1;
27000
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
27001
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27003
# check trigger-3 success: 1
27004
DROP TRIGGER trg_1;
27005
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27006
f_int2 = CAST(f_char1 AS SIGNED INT),
27007
f_charbig = 'just inserted'
27008
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27010
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27011
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27012
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27013
'just inserted' FROM t0_template
27014
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27015
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
27017
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27018
f_charbig = 'updated by trigger'
27019
WHERE f_int1 = - old.f_int1;
27021
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
27022
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27024
# check trigger-4 success: 1
27025
DROP TRIGGER trg_1;
27026
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27027
f_int2 = CAST(f_char1 AS SIGNED INT),
27028
f_charbig = 'just inserted'
27029
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27031
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27032
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27033
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27034
'just inserted' FROM t0_template
27035
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27036
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
27038
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27039
f_charbig = 'updated by trigger'
27040
WHERE f_int1 = new.f_int1;
27042
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
27043
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27045
# check trigger-5 success: 1
27046
DROP TRIGGER trg_1;
27047
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27048
f_int2 = CAST(f_char1 AS SIGNED INT),
27049
f_charbig = 'just inserted'
27050
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27052
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27053
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27054
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27055
'just inserted' FROM t0_template
27056
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27057
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
27059
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27060
f_charbig = 'updated by trigger'
27061
WHERE f_int1 = - old.f_int1;
27063
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
27064
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27066
# check trigger-6 success: 1
27067
DROP TRIGGER trg_1;
27068
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27069
f_int2 = CAST(f_char1 AS SIGNED INT),
27070
f_charbig = 'just inserted'
27071
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27073
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27074
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27075
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27076
'just inserted' FROM t0_template
27077
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27078
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
27080
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27081
f_charbig = 'updated by trigger'
27082
WHERE f_int1 = - old.f_int1;
27085
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27087
# check trigger-7 success: 1
27088
DROP TRIGGER trg_1;
27089
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27090
f_int2 = CAST(f_char1 AS SIGNED INT),
27091
f_charbig = 'just inserted'
27092
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27094
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27095
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27096
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27097
'just inserted' FROM t0_template
27098
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27099
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
27101
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27102
f_charbig = 'updated by trigger'
27103
WHERE f_int1 = - old.f_int1;
27106
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27108
# check trigger-8 success: 1
27109
DROP TRIGGER trg_1;
27110
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27111
f_int2 = CAST(f_char1 AS SIGNED INT),
27112
f_charbig = 'just inserted'
27113
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27115
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27117
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27118
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
27120
SET new.f_int1 = old.f_int1 + @max_row,
27121
new.f_int2 = old.f_int2 - @max_row,
27122
new.f_charbig = '####updated per update trigger####';
27125
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
27126
f_charbig = '####updated per update statement itself####';
27128
# check trigger-9 success: 1
27129
DROP TRIGGER trg_2;
27130
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27131
f_int2 = CAST(f_char1 AS SIGNED INT),
27132
f_charbig = CONCAT('===',f_char1,'===');
27133
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
27135
SET new.f_int1 = new.f_int1 + @max_row,
27136
new.f_int2 = new.f_int2 - @max_row,
27137
new.f_charbig = '####updated per update trigger####';
27140
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
27141
f_charbig = '####updated per update statement itself####';
27143
# check trigger-10 success: 1
27144
DROP TRIGGER trg_2;
27145
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27146
f_int2 = CAST(f_char1 AS SIGNED INT),
27147
f_charbig = CONCAT('===',f_char1,'===');
27148
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
27150
SET new.f_int1 = @my_max1 + @counter,
27151
new.f_int2 = @my_min2 - @counter,
27152
new.f_charbig = '####updated per insert trigger####';
27153
SET @counter = @counter + 1;
27156
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
27157
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27158
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
27159
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
27160
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
27162
DROP TRIGGER trg_3;
27164
# check trigger-11 success: 1
27166
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
27167
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
27168
AND f_charbig = '####updated per insert trigger####';
27169
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
27171
SET new.f_int1 = @my_max1 + @counter,
27172
new.f_int2 = @my_min2 - @counter,
27173
new.f_charbig = '####updated per insert trigger####';
27174
SET @counter = @counter + 1;
27177
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
27178
INSERT INTO t1 (f_char1, f_char2, f_charbig)
27179
SELECT CAST(f_int1 AS CHAR),
27180
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
27181
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
27183
DROP TRIGGER trg_3;
27185
# check trigger-12 success: 1
27187
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
27188
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
27189
AND f_charbig = '####updated per insert trigger####';
27191
Table Op Msg_type Msg_text
27192
test.t1 analyze status OK
27193
CHECK TABLE t1 EXTENDED;
27194
Table Op Msg_type Msg_text
27195
test.t1 check status OK
27196
CHECKSUM TABLE t1 EXTENDED;
27198
test.t1 <some_value>
27200
Table Op Msg_type Msg_text
27201
test.t1 optimize status OK
27202
# check layout success: 1
27203
REPAIR TABLE t1 EXTENDED;
27204
Table Op Msg_type Msg_text
27205
test.t1 repair status OK
27206
# check layout success: 1
27209
# check TRUNCATE success: 1
27210
# check layout success: 1
27211
# End usability test (inc/partition_check.inc)
27218
f_charbig VARCHAR(1000)
27219
, UNIQUE INDEX uidx (f_int1,f_int2)
27221
PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int2)
27222
(PARTITION part1 VALUES LESS THAN (0)
27223
(SUBPARTITION subpart11, SUBPARTITION subpart12),
27224
PARTITION part2 VALUES LESS THAN (5)
27225
(SUBPARTITION subpart21, SUBPARTITION subpart22),
27226
PARTITION part3 VALUES LESS THAN (10)
27227
(SUBPARTITION subpart31, SUBPARTITION subpart32),
27228
PARTITION part4 VALUES LESS THAN (2147483646)
27229
(SUBPARTITION subpart41, SUBPARTITION subpart42));
27230
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
27231
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
27232
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
27233
ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
27234
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
27235
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
27236
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
27237
# Start usability test (inc/partition_check.inc)
27239
SHOW CREATE TABLE t1;
27241
t1 CREATE TABLE `t1` (
27242
`f_int1` bigint(20) DEFAULT NULL,
27243
`f_int2` bigint(20) DEFAULT NULL,
27244
`f_char1` char(20) DEFAULT NULL,
27245
`f_char2` char(20) DEFAULT NULL,
27246
`f_charbig` varchar(1000) DEFAULT NULL,
27247
UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
27248
) ENGINE=MyISAM DEFAULT CHARSET=latin1
27249
/*!50100 PARTITION BY RANGE (f_int1)
27250
SUBPARTITION BY KEY (f_int2)
27251
(PARTITION part1 VALUES LESS THAN (0)
27252
(SUBPARTITION subpart11 ENGINE = MyISAM,
27253
SUBPARTITION subpart12 ENGINE = MyISAM),
27254
PARTITION part2 VALUES LESS THAN (5)
27255
(SUBPARTITION subpart21 ENGINE = MyISAM,
27256
SUBPARTITION subpart22 ENGINE = MyISAM),
27257
PARTITION part3 VALUES LESS THAN (10)
27258
(SUBPARTITION subpart31 ENGINE = MyISAM,
27259
SUBPARTITION subpart32 ENGINE = MyISAM),
27260
PARTITION part4 VALUES LESS THAN (2147483646)
27261
(SUBPARTITION subpart41 ENGINE = MyISAM,
27262
SUBPARTITION subpart42 ENGINE = MyISAM)) */
27265
t1#P#part1#SP#subpart11.MYD
27266
t1#P#part1#SP#subpart11.MYI
27267
t1#P#part1#SP#subpart12.MYD
27268
t1#P#part1#SP#subpart12.MYI
27269
t1#P#part2#SP#subpart21.MYD
27270
t1#P#part2#SP#subpart21.MYI
27271
t1#P#part2#SP#subpart22.MYD
27272
t1#P#part2#SP#subpart22.MYI
27273
t1#P#part3#SP#subpart31.MYD
27274
t1#P#part3#SP#subpart31.MYI
27275
t1#P#part3#SP#subpart32.MYD
27276
t1#P#part3#SP#subpart32.MYI
27277
t1#P#part4#SP#subpart41.MYD
27278
t1#P#part4#SP#subpart41.MYI
27279
t1#P#part4#SP#subpart42.MYD
27280
t1#P#part4#SP#subpart42.MYI
27284
# check prerequisites-1 success: 1
27285
# check COUNT(*) success: 1
27286
# check MIN/MAX(f_int1) success: 1
27287
# check MIN/MAX(f_int2) success: 1
27288
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27289
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
27290
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
27291
WHERE f_int1 IN (2,3);
27292
ERROR 23000: Duplicate entry '2-2' for key 'uidx'
27293
# check prerequisites-3 success: 1
27294
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
27295
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27296
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
27297
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
27298
WHERE f_int1 IN (2,3);
27299
DELETE FROM t1 WHERE f_charbig = 'delete me';
27300
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27301
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
27302
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
27303
WHERE f_int1 IN (2,3);
27304
DELETE FROM t1 WHERE f_charbig = 'delete me';
27305
# check read via f_int1 success: 1
27306
# check read via f_int2 success: 1
27308
# check multiple-1 success: 1
27309
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
27311
# check multiple-2 success: 1
27312
INSERT INTO t1 SELECT * FROM t0_template
27313
WHERE MOD(f_int1,3) = 0;
27315
# check multiple-3 success: 1
27316
UPDATE t1 SET f_int1 = f_int1 + @max_row
27317
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
27318
AND @max_row_div2 + @max_row_div4;
27320
# check multiple-4 success: 1
27322
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
27323
AND @max_row_div2 + @max_row_div4 + @max_row;
27325
# check multiple-5 success: 1
27326
SELECT COUNT(*) INTO @try_count FROM t0_template
27327
WHERE MOD(f_int1,3) = 0
27328
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
27329
SELECT COUNT(*) INTO @clash_count
27330
FROM t1 INNER JOIN t0_template USING(f_int1)
27331
WHERE MOD(f_int1,3) = 0
27332
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
27333
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
27335
SET f_int1 = @cur_value , f_int2 = @cur_value,
27336
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
27337
f_charbig = '#SINGLE#';
27339
# check single-1 success: 1
27340
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
27342
SET f_int1 = @cur_value , f_int2 = @cur_value,
27343
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
27344
f_charbig = '#SINGLE#';
27346
# check single-2 success: 1
27347
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
27348
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
27349
UPDATE t1 SET f_int1 = @cur_value2
27350
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
27352
# check single-3 success: 1
27353
SET @cur_value1= -1;
27354
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
27355
UPDATE t1 SET f_int1 = @cur_value1
27356
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
27358
# check single-4 success: 1
27359
SELECT MAX(f_int1) INTO @cur_value FROM t1;
27360
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
27362
# check single-5 success: 1
27363
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
27365
# check single-6 success: 1
27366
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
27367
ERROR HY000: Table has no partition for value 2147483647
27368
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
27369
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
27370
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
27371
f_charbig = '#NULL#';
27373
SET f_int1 = NULL , f_int2 = -@max_row,
27374
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
27375
f_charbig = '#NULL#';
27376
# check null success: 1
27378
# check null-1 success: 1
27379
UPDATE t1 SET f_int1 = -@max_row
27380
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
27381
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
27383
# check null-2 success: 1
27384
UPDATE t1 SET f_int1 = NULL
27385
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
27386
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
27388
# check null-3 success: 1
27390
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
27391
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
27393
# check null-4 success: 1
27395
WHERE f_int1 = 0 AND f_int2 = 0
27396
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
27397
AND f_charbig = '#NULL#';
27398
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27399
SELECT f_int1, f_int1, '', '', 'was inserted'
27400
FROM t0_template source_tab
27401
WHERE MOD(f_int1,3) = 0
27402
AND f_int1 BETWEEN @max_row_div2 AND @max_row
27404
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
27405
f_int2 = 2 * @max_row + source_tab.f_int1,
27406
f_charbig = 'was updated';
27408
# check unique-1-a success: 1
27410
# check unique-1-b success: 1
27411
DELETE FROM t1 WHERE f_charbig = 'was inserted';
27412
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27413
f_int2 = CAST(f_char1 AS SIGNED INT),
27414
f_charbig = CONCAT('===',f_char1,'===')
27415
WHERE f_charbig = 'was updated';
27416
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27417
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
27418
FROM t0_template source_tab
27419
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
27421
# check replace success: 1
27423
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
27425
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
27426
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
27427
UPDATE t1 SET f_int2 = f_int1,
27428
f_char1 = CAST(f_int1 AS CHAR),
27429
f_char2 = CAST(f_int1 AS CHAR),
27430
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
27431
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
27433
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27434
SELECT f_int1, f_int1, '', '', 'was inserted'
27435
FROM t0_template source_tab
27436
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
27438
# check transactions-1 success: 1
27441
# check transactions-2 success: 1
27444
# check transactions-3 success: 1
27445
DELETE FROM t1 WHERE f_charbig = 'was inserted';
27449
# check transactions-4 success: 1
27450
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27451
SELECT f_int1, f_int1, '', '', 'was inserted'
27452
FROM t0_template source_tab
27453
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
27455
# check transactions-5 success: 1
27458
Warning 1196 Some non-transactional changed tables couldn't be rolled back
27460
# check transactions-6 success: 1
27461
# INFO: Storage engine used for t1 seems to be not transactional.
27464
# check transactions-7 success: 1
27465
DELETE FROM t1 WHERE f_charbig = 'was inserted';
27467
SET @@session.sql_mode = 'traditional';
27468
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
27469
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27470
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
27471
'', '', 'was inserted' FROM t0_template
27472
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
27473
ERROR 22012: Division by 0
27476
# check transactions-8 success: 1
27477
# INFO: Storage engine used for t1 seems to be unable to revert
27478
# changes made by the failing statement.
27479
SET @@session.sql_mode = '';
27481
DELETE FROM t1 WHERE f_charbig = 'was inserted';
27483
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
27485
# check special-1 success: 1
27486
UPDATE t1 SET f_charbig = '';
27488
# check special-2 success: 1
27489
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
27490
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
27491
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
27492
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27493
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27494
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27495
'just inserted' FROM t0_template
27496
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27497
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
27499
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27500
f_charbig = 'updated by trigger'
27501
WHERE f_int1 = new.f_int1;
27503
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27504
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
27505
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27507
# check trigger-1 success: 1
27508
DROP TRIGGER trg_1;
27509
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27510
f_int2 = CAST(f_char1 AS SIGNED INT),
27511
f_charbig = 'just inserted'
27512
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27514
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27515
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27516
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27517
'just inserted' FROM t0_template
27518
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27519
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
27521
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27522
f_charbig = 'updated by trigger'
27523
WHERE f_int1 = new.f_int1;
27525
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27526
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
27527
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27529
# check trigger-2 success: 1
27530
DROP TRIGGER trg_1;
27531
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27532
f_int2 = CAST(f_char1 AS SIGNED INT),
27533
f_charbig = 'just inserted'
27534
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27536
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27537
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27538
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27539
'just inserted' FROM t0_template
27540
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27541
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
27543
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27544
f_charbig = 'updated by trigger'
27545
WHERE f_int1 = new.f_int1;
27547
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
27548
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27550
# check trigger-3 success: 1
27551
DROP TRIGGER trg_1;
27552
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27553
f_int2 = CAST(f_char1 AS SIGNED INT),
27554
f_charbig = 'just inserted'
27555
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27557
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27558
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27559
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27560
'just inserted' FROM t0_template
27561
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27562
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
27564
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27565
f_charbig = 'updated by trigger'
27566
WHERE f_int1 = - old.f_int1;
27568
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
27569
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27571
# check trigger-4 success: 1
27572
DROP TRIGGER trg_1;
27573
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27574
f_int2 = CAST(f_char1 AS SIGNED INT),
27575
f_charbig = 'just inserted'
27576
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27578
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27579
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27580
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27581
'just inserted' FROM t0_template
27582
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27583
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
27585
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27586
f_charbig = 'updated by trigger'
27587
WHERE f_int1 = new.f_int1;
27589
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
27590
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27592
# check trigger-5 success: 1
27593
DROP TRIGGER trg_1;
27594
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27595
f_int2 = CAST(f_char1 AS SIGNED INT),
27596
f_charbig = 'just inserted'
27597
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27599
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27600
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27601
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27602
'just inserted' FROM t0_template
27603
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27604
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
27606
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27607
f_charbig = 'updated by trigger'
27608
WHERE f_int1 = - old.f_int1;
27610
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
27611
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27613
# check trigger-6 success: 1
27614
DROP TRIGGER trg_1;
27615
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27616
f_int2 = CAST(f_char1 AS SIGNED INT),
27617
f_charbig = 'just inserted'
27618
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27620
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27621
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27622
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27623
'just inserted' FROM t0_template
27624
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27625
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
27627
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27628
f_charbig = 'updated by trigger'
27629
WHERE f_int1 = - old.f_int1;
27632
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27634
# check trigger-7 success: 1
27635
DROP TRIGGER trg_1;
27636
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27637
f_int2 = CAST(f_char1 AS SIGNED INT),
27638
f_charbig = 'just inserted'
27639
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27641
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27642
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27643
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27644
'just inserted' FROM t0_template
27645
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27646
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
27648
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27649
f_charbig = 'updated by trigger'
27650
WHERE f_int1 = - old.f_int1;
27653
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27655
# check trigger-8 success: 1
27656
DROP TRIGGER trg_1;
27657
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27658
f_int2 = CAST(f_char1 AS SIGNED INT),
27659
f_charbig = 'just inserted'
27660
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27662
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27664
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27665
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
27667
SET new.f_int1 = old.f_int1 + @max_row,
27668
new.f_int2 = old.f_int2 - @max_row,
27669
new.f_charbig = '####updated per update trigger####';
27672
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
27673
f_charbig = '####updated per update statement itself####';
27675
# check trigger-9 success: 1
27676
DROP TRIGGER trg_2;
27677
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27678
f_int2 = CAST(f_char1 AS SIGNED INT),
27679
f_charbig = CONCAT('===',f_char1,'===');
27680
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
27682
SET new.f_int1 = new.f_int1 + @max_row,
27683
new.f_int2 = new.f_int2 - @max_row,
27684
new.f_charbig = '####updated per update trigger####';
27687
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
27688
f_charbig = '####updated per update statement itself####';
27690
# check trigger-10 success: 1
27691
DROP TRIGGER trg_2;
27692
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27693
f_int2 = CAST(f_char1 AS SIGNED INT),
27694
f_charbig = CONCAT('===',f_char1,'===');
27695
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
27697
SET new.f_int1 = @my_max1 + @counter,
27698
new.f_int2 = @my_min2 - @counter,
27699
new.f_charbig = '####updated per insert trigger####';
27700
SET @counter = @counter + 1;
27703
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
27704
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27705
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
27706
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
27707
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
27709
DROP TRIGGER trg_3;
27711
# check trigger-11 success: 1
27713
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
27714
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
27715
AND f_charbig = '####updated per insert trigger####';
27716
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
27718
SET new.f_int1 = @my_max1 + @counter,
27719
new.f_int2 = @my_min2 - @counter,
27720
new.f_charbig = '####updated per insert trigger####';
27721
SET @counter = @counter + 1;
27724
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
27725
INSERT INTO t1 (f_char1, f_char2, f_charbig)
27726
SELECT CAST(f_int1 AS CHAR),
27727
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
27728
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
27730
DROP TRIGGER trg_3;
27732
# check trigger-12 success: 1
27734
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
27735
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
27736
AND f_charbig = '####updated per insert trigger####';
27738
Table Op Msg_type Msg_text
27739
test.t1 analyze status OK
27740
CHECK TABLE t1 EXTENDED;
27741
Table Op Msg_type Msg_text
27742
test.t1 check status OK
27743
CHECKSUM TABLE t1 EXTENDED;
27745
test.t1 <some_value>
27747
Table Op Msg_type Msg_text
27748
test.t1 optimize status OK
27749
# check layout success: 1
27750
REPAIR TABLE t1 EXTENDED;
27751
Table Op Msg_type Msg_text
27752
test.t1 repair status OK
27753
# check layout success: 1
27756
# check TRUNCATE success: 1
27757
# check layout success: 1
27758
# End usability test (inc/partition_check.inc)
27765
f_charbig VARCHAR(1000)
27766
, UNIQUE INDEX uidx (f_int1,f_int2)
27768
PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int2 + 1)
27769
(PARTITION part1 VALUES IN (0)
27770
(SUBPARTITION sp11, SUBPARTITION sp12),
27771
PARTITION part2 VALUES IN (1)
27772
(SUBPARTITION sp21, SUBPARTITION sp22),
27773
PARTITION part3 VALUES IN (2)
27774
(SUBPARTITION sp31, SUBPARTITION sp32),
27775
PARTITION part4 VALUES IN (NULL)
27776
(SUBPARTITION sp41, SUBPARTITION sp42));
27777
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
27778
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
27779
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
27780
ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
27781
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
27782
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
27783
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
27784
# Start usability test (inc/partition_check.inc)
27786
SHOW CREATE TABLE t1;
27788
t1 CREATE TABLE `t1` (
27789
`f_int1` bigint(20) DEFAULT NULL,
27790
`f_int2` bigint(20) DEFAULT NULL,
27791
`f_char1` char(20) DEFAULT NULL,
27792
`f_char2` char(20) DEFAULT NULL,
27793
`f_charbig` varchar(1000) DEFAULT NULL,
27794
UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
27795
) ENGINE=MyISAM DEFAULT CHARSET=latin1
27796
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
27797
SUBPARTITION BY HASH (f_int2 + 1)
27798
(PARTITION part1 VALUES IN (0)
27799
(SUBPARTITION sp11 ENGINE = MyISAM,
27800
SUBPARTITION sp12 ENGINE = MyISAM),
27801
PARTITION part2 VALUES IN (1)
27802
(SUBPARTITION sp21 ENGINE = MyISAM,
27803
SUBPARTITION sp22 ENGINE = MyISAM),
27804
PARTITION part3 VALUES IN (2)
27805
(SUBPARTITION sp31 ENGINE = MyISAM,
27806
SUBPARTITION sp32 ENGINE = MyISAM),
27807
PARTITION part4 VALUES IN (NULL)
27808
(SUBPARTITION sp41 ENGINE = MyISAM,
27809
SUBPARTITION sp42 ENGINE = MyISAM)) */
27812
t1#P#part1#SP#sp11.MYD
27813
t1#P#part1#SP#sp11.MYI
27814
t1#P#part1#SP#sp12.MYD
27815
t1#P#part1#SP#sp12.MYI
27816
t1#P#part2#SP#sp21.MYD
27817
t1#P#part2#SP#sp21.MYI
27818
t1#P#part2#SP#sp22.MYD
27819
t1#P#part2#SP#sp22.MYI
27820
t1#P#part3#SP#sp31.MYD
27821
t1#P#part3#SP#sp31.MYI
27822
t1#P#part3#SP#sp32.MYD
27823
t1#P#part3#SP#sp32.MYI
27824
t1#P#part4#SP#sp41.MYD
27825
t1#P#part4#SP#sp41.MYI
27826
t1#P#part4#SP#sp42.MYD
27827
t1#P#part4#SP#sp42.MYI
27831
# check prerequisites-1 success: 1
27832
# check COUNT(*) success: 1
27833
# check MIN/MAX(f_int1) success: 1
27834
# check MIN/MAX(f_int2) success: 1
27835
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27836
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
27837
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
27838
WHERE f_int1 IN (2,3);
27839
ERROR 23000: Duplicate entry '2-2' for key 'uidx'
27840
# check prerequisites-3 success: 1
27841
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
27842
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27843
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
27844
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
27845
WHERE f_int1 IN (2,3);
27846
DELETE FROM t1 WHERE f_charbig = 'delete me';
27847
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27848
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
27849
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
27850
WHERE f_int1 IN (2,3);
27851
DELETE FROM t1 WHERE f_charbig = 'delete me';
27852
# check read via f_int1 success: 1
27853
# check read via f_int2 success: 1
27855
# check multiple-1 success: 1
27856
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
27858
# check multiple-2 success: 1
27859
INSERT INTO t1 SELECT * FROM t0_template
27860
WHERE MOD(f_int1,3) = 0;
27862
# check multiple-3 success: 1
27863
UPDATE t1 SET f_int1 = f_int1 + @max_row
27864
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
27865
AND @max_row_div2 + @max_row_div4;
27867
# check multiple-4 success: 1
27869
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
27870
AND @max_row_div2 + @max_row_div4 + @max_row;
27872
# check multiple-5 success: 1
27873
SELECT COUNT(*) INTO @try_count FROM t0_template
27874
WHERE MOD(f_int1,3) = 0
27875
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
27876
SELECT COUNT(*) INTO @clash_count
27877
FROM t1 INNER JOIN t0_template USING(f_int1)
27878
WHERE MOD(f_int1,3) = 0
27879
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
27880
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
27882
SET f_int1 = @cur_value , f_int2 = @cur_value,
27883
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
27884
f_charbig = '#SINGLE#';
27886
# check single-1 success: 1
27887
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
27889
SET f_int1 = @cur_value , f_int2 = @cur_value,
27890
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
27891
f_charbig = '#SINGLE#';
27893
# check single-2 success: 1
27894
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
27895
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
27896
UPDATE t1 SET f_int1 = @cur_value2
27897
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
27899
# check single-3 success: 1
27900
SET @cur_value1= -1;
27901
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
27902
UPDATE t1 SET f_int1 = @cur_value1
27903
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
27905
# check single-4 success: 1
27906
SELECT MAX(f_int1) INTO @cur_value FROM t1;
27907
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
27909
# check single-5 success: 1
27910
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
27912
# check single-6 success: 1
27913
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
27915
# check single-7 success: 1
27916
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
27917
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
27918
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
27919
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
27920
f_charbig = '#NULL#';
27922
SET f_int1 = NULL , f_int2 = -@max_row,
27923
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
27924
f_charbig = '#NULL#';
27925
# check null success: 1
27927
# check null-1 success: 1
27928
UPDATE t1 SET f_int1 = -@max_row
27929
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
27930
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
27932
# check null-2 success: 1
27933
UPDATE t1 SET f_int1 = NULL
27934
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
27935
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
27937
# check null-3 success: 1
27939
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
27940
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
27942
# check null-4 success: 1
27944
WHERE f_int1 = 0 AND f_int2 = 0
27945
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
27946
AND f_charbig = '#NULL#';
27947
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27948
SELECT f_int1, f_int1, '', '', 'was inserted'
27949
FROM t0_template source_tab
27950
WHERE MOD(f_int1,3) = 0
27951
AND f_int1 BETWEEN @max_row_div2 AND @max_row
27953
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
27954
f_int2 = 2 * @max_row + source_tab.f_int1,
27955
f_charbig = 'was updated';
27957
# check unique-1-a success: 1
27959
# check unique-1-b success: 1
27960
DELETE FROM t1 WHERE f_charbig = 'was inserted';
27961
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27962
f_int2 = CAST(f_char1 AS SIGNED INT),
27963
f_charbig = CONCAT('===',f_char1,'===')
27964
WHERE f_charbig = 'was updated';
27965
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27966
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
27967
FROM t0_template source_tab
27968
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
27970
# check replace success: 1
27972
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
27974
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
27975
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
27976
UPDATE t1 SET f_int2 = f_int1,
27977
f_char1 = CAST(f_int1 AS CHAR),
27978
f_char2 = CAST(f_int1 AS CHAR),
27979
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
27980
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
27982
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27983
SELECT f_int1, f_int1, '', '', 'was inserted'
27984
FROM t0_template source_tab
27985
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
27987
# check transactions-1 success: 1
27990
# check transactions-2 success: 1
27993
# check transactions-3 success: 1
27994
DELETE FROM t1 WHERE f_charbig = 'was inserted';
27998
# check transactions-4 success: 1
27999
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28000
SELECT f_int1, f_int1, '', '', 'was inserted'
28001
FROM t0_template source_tab
28002
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
28004
# check transactions-5 success: 1
28007
Warning 1196 Some non-transactional changed tables couldn't be rolled back
28009
# check transactions-6 success: 1
28010
# INFO: Storage engine used for t1 seems to be not transactional.
28013
# check transactions-7 success: 1
28014
DELETE FROM t1 WHERE f_charbig = 'was inserted';
28016
SET @@session.sql_mode = 'traditional';
28017
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
28018
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28019
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
28020
'', '', 'was inserted' FROM t0_template
28021
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
28022
ERROR 22012: Division by 0
28025
# check transactions-8 success: 1
28026
# INFO: Storage engine used for t1 seems to be unable to revert
28027
# changes made by the failing statement.
28028
SET @@session.sql_mode = '';
28030
DELETE FROM t1 WHERE f_charbig = 'was inserted';
28032
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
28034
# check special-1 success: 1
28035
UPDATE t1 SET f_charbig = '';
28037
# check special-2 success: 1
28038
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
28039
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
28040
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
28041
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28042
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28043
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28044
'just inserted' FROM t0_template
28045
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28046
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
28048
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28049
f_charbig = 'updated by trigger'
28050
WHERE f_int1 = new.f_int1;
28052
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28053
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
28054
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28056
# check trigger-1 success: 1
28057
DROP TRIGGER trg_1;
28058
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28059
f_int2 = CAST(f_char1 AS SIGNED INT),
28060
f_charbig = 'just inserted'
28061
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28063
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28064
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28065
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28066
'just inserted' FROM t0_template
28067
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28068
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
28070
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28071
f_charbig = 'updated by trigger'
28072
WHERE f_int1 = new.f_int1;
28074
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28075
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
28076
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28078
# check trigger-2 success: 1
28079
DROP TRIGGER trg_1;
28080
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28081
f_int2 = CAST(f_char1 AS SIGNED INT),
28082
f_charbig = 'just inserted'
28083
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28085
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28086
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28087
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28088
'just inserted' FROM t0_template
28089
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28090
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
28092
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28093
f_charbig = 'updated by trigger'
28094
WHERE f_int1 = new.f_int1;
28096
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
28097
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28099
# check trigger-3 success: 1
28100
DROP TRIGGER trg_1;
28101
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28102
f_int2 = CAST(f_char1 AS SIGNED INT),
28103
f_charbig = 'just inserted'
28104
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28106
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28107
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28108
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28109
'just inserted' FROM t0_template
28110
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28111
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
28113
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28114
f_charbig = 'updated by trigger'
28115
WHERE f_int1 = - old.f_int1;
28117
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
28118
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28120
# check trigger-4 success: 1
28121
DROP TRIGGER trg_1;
28122
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28123
f_int2 = CAST(f_char1 AS SIGNED INT),
28124
f_charbig = 'just inserted'
28125
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28127
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28128
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28129
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28130
'just inserted' FROM t0_template
28131
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28132
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
28134
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28135
f_charbig = 'updated by trigger'
28136
WHERE f_int1 = new.f_int1;
28138
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
28139
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28141
# check trigger-5 success: 1
28142
DROP TRIGGER trg_1;
28143
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28144
f_int2 = CAST(f_char1 AS SIGNED INT),
28145
f_charbig = 'just inserted'
28146
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28148
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28149
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28150
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28151
'just inserted' FROM t0_template
28152
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28153
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
28155
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28156
f_charbig = 'updated by trigger'
28157
WHERE f_int1 = - old.f_int1;
28159
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
28160
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28162
# check trigger-6 success: 1
28163
DROP TRIGGER trg_1;
28164
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28165
f_int2 = CAST(f_char1 AS SIGNED INT),
28166
f_charbig = 'just inserted'
28167
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28169
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28170
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28171
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28172
'just inserted' FROM t0_template
28173
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28174
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
28176
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28177
f_charbig = 'updated by trigger'
28178
WHERE f_int1 = - old.f_int1;
28181
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28183
# check trigger-7 success: 1
28184
DROP TRIGGER trg_1;
28185
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28186
f_int2 = CAST(f_char1 AS SIGNED INT),
28187
f_charbig = 'just inserted'
28188
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28190
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28191
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28192
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28193
'just inserted' FROM t0_template
28194
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28195
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
28197
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28198
f_charbig = 'updated by trigger'
28199
WHERE f_int1 = - old.f_int1;
28202
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28204
# check trigger-8 success: 1
28205
DROP TRIGGER trg_1;
28206
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28207
f_int2 = CAST(f_char1 AS SIGNED INT),
28208
f_charbig = 'just inserted'
28209
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28211
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28213
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28214
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
28216
SET new.f_int1 = old.f_int1 + @max_row,
28217
new.f_int2 = old.f_int2 - @max_row,
28218
new.f_charbig = '####updated per update trigger####';
28221
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
28222
f_charbig = '####updated per update statement itself####';
28224
# check trigger-9 success: 1
28225
DROP TRIGGER trg_2;
28226
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28227
f_int2 = CAST(f_char1 AS SIGNED INT),
28228
f_charbig = CONCAT('===',f_char1,'===');
28229
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
28231
SET new.f_int1 = new.f_int1 + @max_row,
28232
new.f_int2 = new.f_int2 - @max_row,
28233
new.f_charbig = '####updated per update trigger####';
28236
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
28237
f_charbig = '####updated per update statement itself####';
28239
# check trigger-10 success: 1
28240
DROP TRIGGER trg_2;
28241
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28242
f_int2 = CAST(f_char1 AS SIGNED INT),
28243
f_charbig = CONCAT('===',f_char1,'===');
28244
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
28246
SET new.f_int1 = @my_max1 + @counter,
28247
new.f_int2 = @my_min2 - @counter,
28248
new.f_charbig = '####updated per insert trigger####';
28249
SET @counter = @counter + 1;
28252
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
28253
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28254
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
28255
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
28256
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
28258
DROP TRIGGER trg_3;
28260
# check trigger-11 success: 1
28262
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
28263
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
28264
AND f_charbig = '####updated per insert trigger####';
28265
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
28267
SET new.f_int1 = @my_max1 + @counter,
28268
new.f_int2 = @my_min2 - @counter,
28269
new.f_charbig = '####updated per insert trigger####';
28270
SET @counter = @counter + 1;
28273
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
28274
INSERT INTO t1 (f_char1, f_char2, f_charbig)
28275
SELECT CAST(f_int1 AS CHAR),
28276
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
28277
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
28279
DROP TRIGGER trg_3;
28281
# check trigger-12 success: 1
28283
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
28284
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
28285
AND f_charbig = '####updated per insert trigger####';
28287
Table Op Msg_type Msg_text
28288
test.t1 analyze status OK
28289
CHECK TABLE t1 EXTENDED;
28290
Table Op Msg_type Msg_text
28291
test.t1 check status OK
28292
CHECKSUM TABLE t1 EXTENDED;
28294
test.t1 <some_value>
28296
Table Op Msg_type Msg_text
28297
test.t1 optimize status OK
28298
# check layout success: 1
28299
REPAIR TABLE t1 EXTENDED;
28300
Table Op Msg_type Msg_text
28301
test.t1 repair status OK
28302
# check layout success: 1
28305
# check TRUNCATE success: 1
28306
# check layout success: 1
28307
# End usability test (inc/partition_check.inc)
28314
f_charbig VARCHAR(1000)
28315
, UNIQUE INDEX uidx (f_int1,f_int2)
28317
PARTITION BY LIST(ABS(MOD(f_int1,2)))
28318
SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3
28319
(PARTITION part1 VALUES IN (0),
28320
PARTITION part2 VALUES IN (1),
28321
PARTITION part3 VALUES IN (NULL));
28322
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
28323
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
28324
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
28325
ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
28326
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
28327
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
28328
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
28329
# Start usability test (inc/partition_check.inc)
28331
SHOW CREATE TABLE t1;
28333
t1 CREATE TABLE `t1` (
28334
`f_int1` bigint(20) DEFAULT NULL,
28335
`f_int2` bigint(20) DEFAULT NULL,
28336
`f_char1` char(20) DEFAULT NULL,
28337
`f_char2` char(20) DEFAULT NULL,
28338
`f_charbig` varchar(1000) DEFAULT NULL,
28339
UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
28340
) ENGINE=MyISAM DEFAULT CHARSET=latin1
28341
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
28342
SUBPARTITION BY KEY (f_int2)
28344
(PARTITION part1 VALUES IN (0) ENGINE = MyISAM,
28345
PARTITION part2 VALUES IN (1) ENGINE = MyISAM,
28346
PARTITION part3 VALUES IN (NULL) ENGINE = MyISAM) */
28349
t1#P#part1#SP#part1sp0.MYD
28350
t1#P#part1#SP#part1sp0.MYI
28351
t1#P#part1#SP#part1sp1.MYD
28352
t1#P#part1#SP#part1sp1.MYI
28353
t1#P#part1#SP#part1sp2.MYD
28354
t1#P#part1#SP#part1sp2.MYI
28355
t1#P#part2#SP#part2sp0.MYD
28356
t1#P#part2#SP#part2sp0.MYI
28357
t1#P#part2#SP#part2sp1.MYD
28358
t1#P#part2#SP#part2sp1.MYI
28359
t1#P#part2#SP#part2sp2.MYD
28360
t1#P#part2#SP#part2sp2.MYI
28361
t1#P#part3#SP#part3sp0.MYD
28362
t1#P#part3#SP#part3sp0.MYI
28363
t1#P#part3#SP#part3sp1.MYD
28364
t1#P#part3#SP#part3sp1.MYI
28365
t1#P#part3#SP#part3sp2.MYD
28366
t1#P#part3#SP#part3sp2.MYI
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
ERROR 23000: Duplicate entry '2-2' for key 'uidx'
28379
# check prerequisites-3 success: 1
28380
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
28381
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28382
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
28383
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
28384
WHERE f_int1 IN (2,3);
28385
DELETE FROM t1 WHERE f_charbig = 'delete me';
28386
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28387
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
28388
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
28389
WHERE f_int1 IN (2,3);
28390
DELETE FROM t1 WHERE f_charbig = 'delete me';
28391
# check read via f_int1 success: 1
28392
# check read via f_int2 success: 1
28394
# check multiple-1 success: 1
28395
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
28397
# check multiple-2 success: 1
28398
INSERT INTO t1 SELECT * FROM t0_template
28399
WHERE MOD(f_int1,3) = 0;
28401
# check multiple-3 success: 1
28402
UPDATE t1 SET f_int1 = f_int1 + @max_row
28403
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
28404
AND @max_row_div2 + @max_row_div4;
28406
# check multiple-4 success: 1
28408
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
28409
AND @max_row_div2 + @max_row_div4 + @max_row;
28411
# check multiple-5 success: 1
28412
SELECT COUNT(*) INTO @try_count FROM t0_template
28413
WHERE MOD(f_int1,3) = 0
28414
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
28415
SELECT COUNT(*) INTO @clash_count
28416
FROM t1 INNER JOIN t0_template USING(f_int1)
28417
WHERE MOD(f_int1,3) = 0
28418
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
28419
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
28421
SET f_int1 = @cur_value , f_int2 = @cur_value,
28422
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
28423
f_charbig = '#SINGLE#';
28425
# check single-1 success: 1
28426
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
28428
SET f_int1 = @cur_value , f_int2 = @cur_value,
28429
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
28430
f_charbig = '#SINGLE#';
28432
# check single-2 success: 1
28433
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
28434
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
28435
UPDATE t1 SET f_int1 = @cur_value2
28436
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
28438
# check single-3 success: 1
28439
SET @cur_value1= -1;
28440
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
28441
UPDATE t1 SET f_int1 = @cur_value1
28442
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
28444
# check single-4 success: 1
28445
SELECT MAX(f_int1) INTO @cur_value FROM t1;
28446
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
28448
# check single-5 success: 1
28449
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
28451
# check single-6 success: 1
28452
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
28454
# check single-7 success: 1
28455
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
28456
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
28457
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
28458
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
28459
f_charbig = '#NULL#';
28461
SET f_int1 = NULL , f_int2 = -@max_row,
28462
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
28463
f_charbig = '#NULL#';
28464
# check null success: 1
28466
# check null-1 success: 1
28467
UPDATE t1 SET f_int1 = -@max_row
28468
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
28469
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
28471
# check null-2 success: 1
28472
UPDATE t1 SET f_int1 = NULL
28473
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
28474
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
28476
# check null-3 success: 1
28478
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
28479
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
28481
# check null-4 success: 1
28483
WHERE f_int1 = 0 AND f_int2 = 0
28484
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
28485
AND f_charbig = '#NULL#';
28486
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28487
SELECT f_int1, f_int1, '', '', 'was inserted'
28488
FROM t0_template source_tab
28489
WHERE MOD(f_int1,3) = 0
28490
AND f_int1 BETWEEN @max_row_div2 AND @max_row
28492
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
28493
f_int2 = 2 * @max_row + source_tab.f_int1,
28494
f_charbig = 'was updated';
28496
# check unique-1-a success: 1
28498
# check unique-1-b success: 1
28499
DELETE FROM t1 WHERE f_charbig = 'was inserted';
28500
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28501
f_int2 = CAST(f_char1 AS SIGNED INT),
28502
f_charbig = CONCAT('===',f_char1,'===')
28503
WHERE f_charbig = 'was updated';
28504
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28505
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
28506
FROM t0_template source_tab
28507
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
28509
# check replace success: 1
28511
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
28513
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
28514
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
28515
UPDATE t1 SET f_int2 = f_int1,
28516
f_char1 = CAST(f_int1 AS CHAR),
28517
f_char2 = CAST(f_int1 AS CHAR),
28518
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
28519
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
28521
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28522
SELECT f_int1, f_int1, '', '', 'was inserted'
28523
FROM t0_template source_tab
28524
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
28526
# check transactions-1 success: 1
28529
# check transactions-2 success: 1
28532
# check transactions-3 success: 1
28533
DELETE FROM t1 WHERE f_charbig = 'was inserted';
28537
# check transactions-4 success: 1
28538
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28539
SELECT f_int1, f_int1, '', '', 'was inserted'
28540
FROM t0_template source_tab
28541
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
28543
# check transactions-5 success: 1
28546
Warning 1196 Some non-transactional changed tables couldn't be rolled back
28548
# check transactions-6 success: 1
28549
# INFO: Storage engine used for t1 seems to be not transactional.
28552
# check transactions-7 success: 1
28553
DELETE FROM t1 WHERE f_charbig = 'was inserted';
28555
SET @@session.sql_mode = 'traditional';
28556
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
28557
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28558
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
28559
'', '', 'was inserted' FROM t0_template
28560
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
28561
ERROR 22012: Division by 0
28564
# check transactions-8 success: 1
28565
# INFO: Storage engine used for t1 seems to be unable to revert
28566
# changes made by the failing statement.
28567
SET @@session.sql_mode = '';
28569
DELETE FROM t1 WHERE f_charbig = 'was inserted';
28571
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
28573
# check special-1 success: 1
28574
UPDATE t1 SET f_charbig = '';
28576
# check special-2 success: 1
28577
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
28578
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
28579
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
28580
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28581
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28582
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28583
'just inserted' FROM t0_template
28584
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28585
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
28587
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28588
f_charbig = 'updated by trigger'
28589
WHERE f_int1 = new.f_int1;
28591
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28592
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
28593
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28595
# check trigger-1 success: 1
28596
DROP TRIGGER trg_1;
28597
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28598
f_int2 = CAST(f_char1 AS SIGNED INT),
28599
f_charbig = 'just inserted'
28600
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28602
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28603
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28604
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28605
'just inserted' FROM t0_template
28606
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28607
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
28609
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28610
f_charbig = 'updated by trigger'
28611
WHERE f_int1 = new.f_int1;
28613
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28614
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
28615
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28617
# check trigger-2 success: 1
28618
DROP TRIGGER trg_1;
28619
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28620
f_int2 = CAST(f_char1 AS SIGNED INT),
28621
f_charbig = 'just inserted'
28622
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28624
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28625
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28626
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28627
'just inserted' FROM t0_template
28628
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28629
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
28631
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28632
f_charbig = 'updated by trigger'
28633
WHERE f_int1 = new.f_int1;
28635
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
28636
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28638
# check trigger-3 success: 1
28639
DROP TRIGGER trg_1;
28640
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28641
f_int2 = CAST(f_char1 AS SIGNED INT),
28642
f_charbig = 'just inserted'
28643
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28645
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28646
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28647
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28648
'just inserted' FROM t0_template
28649
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28650
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
28652
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28653
f_charbig = 'updated by trigger'
28654
WHERE f_int1 = - old.f_int1;
28656
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
28657
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28659
# check trigger-4 success: 1
28660
DROP TRIGGER trg_1;
28661
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28662
f_int2 = CAST(f_char1 AS SIGNED INT),
28663
f_charbig = 'just inserted'
28664
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28666
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28667
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28668
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28669
'just inserted' FROM t0_template
28670
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28671
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
28673
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28674
f_charbig = 'updated by trigger'
28675
WHERE f_int1 = new.f_int1;
28677
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
28678
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28680
# check trigger-5 success: 1
28681
DROP TRIGGER trg_1;
28682
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28683
f_int2 = CAST(f_char1 AS SIGNED INT),
28684
f_charbig = 'just inserted'
28685
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28687
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28688
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28689
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28690
'just inserted' FROM t0_template
28691
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28692
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
28694
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28695
f_charbig = 'updated by trigger'
28696
WHERE f_int1 = - old.f_int1;
28698
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
28699
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28701
# check trigger-6 success: 1
28702
DROP TRIGGER trg_1;
28703
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28704
f_int2 = CAST(f_char1 AS SIGNED INT),
28705
f_charbig = 'just inserted'
28706
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28708
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28709
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28710
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28711
'just inserted' FROM t0_template
28712
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28713
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
28715
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28716
f_charbig = 'updated by trigger'
28717
WHERE f_int1 = - old.f_int1;
28720
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28722
# check trigger-7 success: 1
28723
DROP TRIGGER trg_1;
28724
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28725
f_int2 = CAST(f_char1 AS SIGNED INT),
28726
f_charbig = 'just inserted'
28727
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28729
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28730
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28731
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28732
'just inserted' FROM t0_template
28733
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28734
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
28736
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28737
f_charbig = 'updated by trigger'
28738
WHERE f_int1 = - old.f_int1;
28741
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28743
# check trigger-8 success: 1
28744
DROP TRIGGER trg_1;
28745
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28746
f_int2 = CAST(f_char1 AS SIGNED INT),
28747
f_charbig = 'just inserted'
28748
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28750
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28752
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28753
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
28755
SET new.f_int1 = old.f_int1 + @max_row,
28756
new.f_int2 = old.f_int2 - @max_row,
28757
new.f_charbig = '####updated per update trigger####';
28760
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
28761
f_charbig = '####updated per update statement itself####';
28763
# check trigger-9 success: 1
28764
DROP TRIGGER trg_2;
28765
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28766
f_int2 = CAST(f_char1 AS SIGNED INT),
28767
f_charbig = CONCAT('===',f_char1,'===');
28768
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
28770
SET new.f_int1 = new.f_int1 + @max_row,
28771
new.f_int2 = new.f_int2 - @max_row,
28772
new.f_charbig = '####updated per update trigger####';
28775
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
28776
f_charbig = '####updated per update statement itself####';
28778
# check trigger-10 success: 1
28779
DROP TRIGGER trg_2;
28780
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28781
f_int2 = CAST(f_char1 AS SIGNED INT),
28782
f_charbig = CONCAT('===',f_char1,'===');
28783
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
28785
SET new.f_int1 = @my_max1 + @counter,
28786
new.f_int2 = @my_min2 - @counter,
28787
new.f_charbig = '####updated per insert trigger####';
28788
SET @counter = @counter + 1;
28791
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
28792
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28793
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
28794
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
28795
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
28797
DROP TRIGGER trg_3;
28799
# check trigger-11 success: 1
28801
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
28802
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
28803
AND f_charbig = '####updated per insert trigger####';
28804
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
28806
SET new.f_int1 = @my_max1 + @counter,
28807
new.f_int2 = @my_min2 - @counter,
28808
new.f_charbig = '####updated per insert trigger####';
28809
SET @counter = @counter + 1;
28812
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
28813
INSERT INTO t1 (f_char1, f_char2, f_charbig)
28814
SELECT CAST(f_int1 AS CHAR),
28815
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
28816
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
28818
DROP TRIGGER trg_3;
28820
# check trigger-12 success: 1
28822
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
28823
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
28824
AND f_charbig = '####updated per insert trigger####';
28826
Table Op Msg_type Msg_text
28827
test.t1 analyze status OK
28828
CHECK TABLE t1 EXTENDED;
28829
Table Op Msg_type Msg_text
28830
test.t1 check status OK
28831
CHECKSUM TABLE t1 EXTENDED;
28833
test.t1 <some_value>
28835
Table Op Msg_type Msg_text
28836
test.t1 optimize status OK
28837
# check layout success: 1
28838
REPAIR TABLE t1 EXTENDED;
28839
Table Op Msg_type Msg_text
28840
test.t1 repair status OK
28841
# check layout success: 1
28844
# check TRUNCATE success: 1
28845
# check layout success: 1
28846
# End usability test (inc/partition_check.inc)
28848
DROP TABLE IF EXISTS t1;
28854
f_charbig VARCHAR(1000)
28855
, UNIQUE INDEX uidx (f_int2,f_int1)
28857
PARTITION BY HASH(f_int1) PARTITIONS 2;
28858
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
28859
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
28860
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
28861
ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
28862
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
28863
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
28864
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
28865
# Start usability test (inc/partition_check.inc)
28867
SHOW CREATE TABLE t1;
28869
t1 CREATE TABLE `t1` (
28870
`f_int1` bigint(20) DEFAULT NULL,
28871
`f_int2` bigint(20) DEFAULT NULL,
28872
`f_char1` char(20) DEFAULT NULL,
28873
`f_char2` char(20) DEFAULT NULL,
28874
`f_charbig` varchar(1000) DEFAULT NULL,
28875
UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
28876
) ENGINE=MyISAM DEFAULT CHARSET=latin1
28877
/*!50100 PARTITION BY HASH (f_int1)
28888
# check prerequisites-1 success: 1
28889
# check COUNT(*) success: 1
28890
# check MIN/MAX(f_int1) success: 1
28891
# check MIN/MAX(f_int2) success: 1
28892
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28893
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
28894
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
28895
WHERE f_int1 IN (2,3);
28896
ERROR 23000: Duplicate entry '2-2' for key 'uidx'
28897
# check prerequisites-3 success: 1
28898
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
28899
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28900
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
28901
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
28902
WHERE f_int1 IN (2,3);
28903
DELETE FROM t1 WHERE f_charbig = 'delete me';
28904
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28905
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
28906
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
28907
WHERE f_int1 IN (2,3);
28908
DELETE FROM t1 WHERE f_charbig = 'delete me';
28909
# check read via f_int1 success: 1
28910
# check read via f_int2 success: 1
28912
# check multiple-1 success: 1
28913
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
28915
# check multiple-2 success: 1
28916
INSERT INTO t1 SELECT * FROM t0_template
28917
WHERE MOD(f_int1,3) = 0;
28919
# check multiple-3 success: 1
28920
UPDATE t1 SET f_int1 = f_int1 + @max_row
28921
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
28922
AND @max_row_div2 + @max_row_div4;
28924
# check multiple-4 success: 1
28926
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
28927
AND @max_row_div2 + @max_row_div4 + @max_row;
28929
# check multiple-5 success: 1
28930
SELECT COUNT(*) INTO @try_count FROM t0_template
28931
WHERE MOD(f_int1,3) = 0
28932
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
28933
SELECT COUNT(*) INTO @clash_count
28934
FROM t1 INNER JOIN t0_template USING(f_int1)
28935
WHERE MOD(f_int1,3) = 0
28936
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
28937
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
28939
SET f_int1 = @cur_value , f_int2 = @cur_value,
28940
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
28941
f_charbig = '#SINGLE#';
28943
# check single-1 success: 1
28944
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
28946
SET f_int1 = @cur_value , f_int2 = @cur_value,
28947
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
28948
f_charbig = '#SINGLE#';
28950
# check single-2 success: 1
28951
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
28952
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
28953
UPDATE t1 SET f_int1 = @cur_value2
28954
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
28956
# check single-3 success: 1
28957
SET @cur_value1= -1;
28958
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
28959
UPDATE t1 SET f_int1 = @cur_value1
28960
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
28962
# check single-4 success: 1
28963
SELECT MAX(f_int1) INTO @cur_value FROM t1;
28964
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
28966
# check single-5 success: 1
28967
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
28969
# check single-6 success: 1
28970
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
28972
# check single-7 success: 1
28973
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
28974
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
28975
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
28976
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
28977
f_charbig = '#NULL#';
28979
SET f_int1 = NULL , f_int2 = -@max_row,
28980
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
28981
f_charbig = '#NULL#';
28982
# check null success: 1
28984
# check null-1 success: 1
28985
UPDATE t1 SET f_int1 = -@max_row
28986
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
28987
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
28989
# check null-2 success: 1
28990
UPDATE t1 SET f_int1 = NULL
28991
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
28992
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
28994
# check null-3 success: 1
28996
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
28997
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
28999
# check null-4 success: 1
29001
WHERE f_int1 = 0 AND f_int2 = 0
29002
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
29003
AND f_charbig = '#NULL#';
29004
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29005
SELECT f_int1, f_int1, '', '', 'was inserted'
29006
FROM t0_template source_tab
29007
WHERE MOD(f_int1,3) = 0
29008
AND f_int1 BETWEEN @max_row_div2 AND @max_row
29010
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
29011
f_int2 = 2 * @max_row + source_tab.f_int1,
29012
f_charbig = 'was updated';
29014
# check unique-1-a success: 1
29016
# check unique-1-b success: 1
29017
DELETE FROM t1 WHERE f_charbig = 'was inserted';
29018
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29019
f_int2 = CAST(f_char1 AS SIGNED INT),
29020
f_charbig = CONCAT('===',f_char1,'===')
29021
WHERE f_charbig = 'was updated';
29022
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29023
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
29024
FROM t0_template source_tab
29025
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
29027
# check replace success: 1
29029
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
29031
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
29032
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
29033
UPDATE t1 SET f_int2 = f_int1,
29034
f_char1 = CAST(f_int1 AS CHAR),
29035
f_char2 = CAST(f_int1 AS CHAR),
29036
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
29037
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
29039
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29040
SELECT f_int1, f_int1, '', '', 'was inserted'
29041
FROM t0_template source_tab
29042
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
29044
# check transactions-1 success: 1
29047
# check transactions-2 success: 1
29050
# check transactions-3 success: 1
29051
DELETE FROM t1 WHERE f_charbig = 'was inserted';
29055
# check transactions-4 success: 1
29056
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29057
SELECT f_int1, f_int1, '', '', 'was inserted'
29058
FROM t0_template source_tab
29059
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
29061
# check transactions-5 success: 1
29064
Warning 1196 Some non-transactional changed tables couldn't be rolled back
29066
# check transactions-6 success: 1
29067
# INFO: Storage engine used for t1 seems to be not transactional.
29070
# check transactions-7 success: 1
29071
DELETE FROM t1 WHERE f_charbig = 'was inserted';
29073
SET @@session.sql_mode = 'traditional';
29074
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
29075
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29076
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
29077
'', '', 'was inserted' FROM t0_template
29078
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
29079
ERROR 22012: Division by 0
29082
# check transactions-8 success: 1
29083
# INFO: Storage engine used for t1 seems to be unable to revert
29084
# changes made by the failing statement.
29085
SET @@session.sql_mode = '';
29087
DELETE FROM t1 WHERE f_charbig = 'was inserted';
29089
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
29091
# check special-1 success: 1
29092
UPDATE t1 SET f_charbig = '';
29094
# check special-2 success: 1
29095
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
29096
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
29097
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
29098
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29099
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29100
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29101
'just inserted' FROM t0_template
29102
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29103
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
29105
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29106
f_charbig = 'updated by trigger'
29107
WHERE f_int1 = new.f_int1;
29109
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29110
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
29111
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29113
# check trigger-1 success: 1
29114
DROP TRIGGER trg_1;
29115
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29116
f_int2 = CAST(f_char1 AS SIGNED INT),
29117
f_charbig = 'just inserted'
29118
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29120
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29121
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29122
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29123
'just inserted' FROM t0_template
29124
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29125
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
29127
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29128
f_charbig = 'updated by trigger'
29129
WHERE f_int1 = new.f_int1;
29131
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29132
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
29133
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29135
# check trigger-2 success: 1
29136
DROP TRIGGER trg_1;
29137
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29138
f_int2 = CAST(f_char1 AS SIGNED INT),
29139
f_charbig = 'just inserted'
29140
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29142
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29143
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29144
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29145
'just inserted' FROM t0_template
29146
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29147
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
29149
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29150
f_charbig = 'updated by trigger'
29151
WHERE f_int1 = new.f_int1;
29153
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
29154
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29156
# check trigger-3 success: 1
29157
DROP TRIGGER trg_1;
29158
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29159
f_int2 = CAST(f_char1 AS SIGNED INT),
29160
f_charbig = 'just inserted'
29161
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29163
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29164
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29165
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29166
'just inserted' FROM t0_template
29167
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29168
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
29170
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29171
f_charbig = 'updated by trigger'
29172
WHERE f_int1 = - old.f_int1;
29174
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
29175
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29177
# check trigger-4 success: 1
29178
DROP TRIGGER trg_1;
29179
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29180
f_int2 = CAST(f_char1 AS SIGNED INT),
29181
f_charbig = 'just inserted'
29182
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29184
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29185
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29186
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29187
'just inserted' FROM t0_template
29188
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29189
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
29191
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29192
f_charbig = 'updated by trigger'
29193
WHERE f_int1 = new.f_int1;
29195
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
29196
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29198
# check trigger-5 success: 1
29199
DROP TRIGGER trg_1;
29200
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29201
f_int2 = CAST(f_char1 AS SIGNED INT),
29202
f_charbig = 'just inserted'
29203
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29205
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29206
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29207
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29208
'just inserted' FROM t0_template
29209
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29210
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
29212
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29213
f_charbig = 'updated by trigger'
29214
WHERE f_int1 = - old.f_int1;
29216
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
29217
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29219
# check trigger-6 success: 1
29220
DROP TRIGGER trg_1;
29221
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29222
f_int2 = CAST(f_char1 AS SIGNED INT),
29223
f_charbig = 'just inserted'
29224
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29226
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29227
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29228
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29229
'just inserted' FROM t0_template
29230
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29231
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
29233
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29234
f_charbig = 'updated by trigger'
29235
WHERE f_int1 = - old.f_int1;
29238
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29240
# check trigger-7 success: 1
29241
DROP TRIGGER trg_1;
29242
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29243
f_int2 = CAST(f_char1 AS SIGNED INT),
29244
f_charbig = 'just inserted'
29245
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29247
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29248
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29249
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29250
'just inserted' FROM t0_template
29251
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29252
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
29254
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29255
f_charbig = 'updated by trigger'
29256
WHERE f_int1 = - old.f_int1;
29259
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29261
# check trigger-8 success: 1
29262
DROP TRIGGER trg_1;
29263
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29264
f_int2 = CAST(f_char1 AS SIGNED INT),
29265
f_charbig = 'just inserted'
29266
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29268
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29270
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29271
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
29273
SET new.f_int1 = old.f_int1 + @max_row,
29274
new.f_int2 = old.f_int2 - @max_row,
29275
new.f_charbig = '####updated per update trigger####';
29278
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
29279
f_charbig = '####updated per update statement itself####';
29281
# check trigger-9 success: 1
29282
DROP TRIGGER trg_2;
29283
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29284
f_int2 = CAST(f_char1 AS SIGNED INT),
29285
f_charbig = CONCAT('===',f_char1,'===');
29286
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
29288
SET new.f_int1 = new.f_int1 + @max_row,
29289
new.f_int2 = new.f_int2 - @max_row,
29290
new.f_charbig = '####updated per update trigger####';
29293
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
29294
f_charbig = '####updated per update statement itself####';
29296
# check trigger-10 success: 1
29297
DROP TRIGGER trg_2;
29298
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29299
f_int2 = CAST(f_char1 AS SIGNED INT),
29300
f_charbig = CONCAT('===',f_char1,'===');
29301
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
29303
SET new.f_int1 = @my_max1 + @counter,
29304
new.f_int2 = @my_min2 - @counter,
29305
new.f_charbig = '####updated per insert trigger####';
29306
SET @counter = @counter + 1;
29309
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
29310
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29311
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
29312
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
29313
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
29315
DROP TRIGGER trg_3;
29317
# check trigger-11 success: 1
29319
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
29320
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
29321
AND f_charbig = '####updated per insert trigger####';
29322
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
29324
SET new.f_int1 = @my_max1 + @counter,
29325
new.f_int2 = @my_min2 - @counter,
29326
new.f_charbig = '####updated per insert trigger####';
29327
SET @counter = @counter + 1;
29330
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
29331
INSERT INTO t1 (f_char1, f_char2, f_charbig)
29332
SELECT CAST(f_int1 AS CHAR),
29333
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
29334
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
29336
DROP TRIGGER trg_3;
29338
# check trigger-12 success: 1
29340
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
29341
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
29342
AND f_charbig = '####updated per insert trigger####';
29344
Table Op Msg_type Msg_text
29345
test.t1 analyze status OK
29346
CHECK TABLE t1 EXTENDED;
29347
Table Op Msg_type Msg_text
29348
test.t1 check status OK
29349
CHECKSUM TABLE t1 EXTENDED;
29351
test.t1 <some_value>
29353
Table Op Msg_type Msg_text
29354
test.t1 optimize status OK
29355
# check layout success: 1
29356
REPAIR TABLE t1 EXTENDED;
29357
Table Op Msg_type Msg_text
29358
test.t1 repair status OK
29359
# check layout success: 1
29362
# check TRUNCATE success: 1
29363
# check layout success: 1
29364
# End usability test (inc/partition_check.inc)
29371
f_charbig VARCHAR(1000)
29372
, UNIQUE INDEX uidx (f_int2,f_int1)
29374
PARTITION BY KEY(f_int1) PARTITIONS 5;
29375
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
29376
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
29377
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
29378
ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
29379
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
29380
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
29381
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
29382
# Start usability test (inc/partition_check.inc)
29384
SHOW CREATE TABLE t1;
29386
t1 CREATE TABLE `t1` (
29387
`f_int1` bigint(20) DEFAULT NULL,
29388
`f_int2` bigint(20) DEFAULT NULL,
29389
`f_char1` char(20) DEFAULT NULL,
29390
`f_char2` char(20) DEFAULT NULL,
29391
`f_charbig` varchar(1000) DEFAULT NULL,
29392
UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
29393
) ENGINE=MyISAM DEFAULT CHARSET=latin1
29394
/*!50100 PARTITION BY KEY (f_int1)
29411
# check prerequisites-1 success: 1
29412
# check COUNT(*) success: 1
29413
# check MIN/MAX(f_int1) success: 1
29414
# check MIN/MAX(f_int2) success: 1
29415
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29416
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
29417
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
29418
WHERE f_int1 IN (2,3);
29419
ERROR 23000: Duplicate entry '2-2' for key 'uidx'
29420
# check prerequisites-3 success: 1
29421
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
29422
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29423
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
29424
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
29425
WHERE f_int1 IN (2,3);
29426
DELETE FROM t1 WHERE f_charbig = 'delete me';
29427
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29428
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
29429
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
29430
WHERE f_int1 IN (2,3);
29431
DELETE FROM t1 WHERE f_charbig = 'delete me';
29432
# check read via f_int1 success: 1
29433
# check read via f_int2 success: 1
29435
# check multiple-1 success: 1
29436
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
29438
# check multiple-2 success: 1
29439
INSERT INTO t1 SELECT * FROM t0_template
29440
WHERE MOD(f_int1,3) = 0;
29442
# check multiple-3 success: 1
29443
UPDATE t1 SET f_int1 = f_int1 + @max_row
29444
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
29445
AND @max_row_div2 + @max_row_div4;
29447
# check multiple-4 success: 1
29449
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
29450
AND @max_row_div2 + @max_row_div4 + @max_row;
29452
# check multiple-5 success: 1
29453
SELECT COUNT(*) INTO @try_count FROM t0_template
29454
WHERE MOD(f_int1,3) = 0
29455
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
29456
SELECT COUNT(*) INTO @clash_count
29457
FROM t1 INNER JOIN t0_template USING(f_int1)
29458
WHERE MOD(f_int1,3) = 0
29459
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
29460
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
29462
SET f_int1 = @cur_value , f_int2 = @cur_value,
29463
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
29464
f_charbig = '#SINGLE#';
29466
# check single-1 success: 1
29467
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
29469
SET f_int1 = @cur_value , f_int2 = @cur_value,
29470
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
29471
f_charbig = '#SINGLE#';
29473
# check single-2 success: 1
29474
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
29475
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
29476
UPDATE t1 SET f_int1 = @cur_value2
29477
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
29479
# check single-3 success: 1
29480
SET @cur_value1= -1;
29481
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
29482
UPDATE t1 SET f_int1 = @cur_value1
29483
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
29485
# check single-4 success: 1
29486
SELECT MAX(f_int1) INTO @cur_value FROM t1;
29487
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
29489
# check single-5 success: 1
29490
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
29492
# check single-6 success: 1
29493
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
29495
# check single-7 success: 1
29496
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
29497
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
29498
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
29499
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
29500
f_charbig = '#NULL#';
29502
SET f_int1 = NULL , f_int2 = -@max_row,
29503
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
29504
f_charbig = '#NULL#';
29505
# check null success: 1
29507
# check null-1 success: 1
29508
UPDATE t1 SET f_int1 = -@max_row
29509
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
29510
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
29512
# check null-2 success: 1
29513
UPDATE t1 SET f_int1 = NULL
29514
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
29515
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
29517
# check null-3 success: 1
29519
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
29520
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
29522
# check null-4 success: 1
29524
WHERE f_int1 = 0 AND f_int2 = 0
29525
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
29526
AND f_charbig = '#NULL#';
29527
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29528
SELECT f_int1, f_int1, '', '', 'was inserted'
29529
FROM t0_template source_tab
29530
WHERE MOD(f_int1,3) = 0
29531
AND f_int1 BETWEEN @max_row_div2 AND @max_row
29533
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
29534
f_int2 = 2 * @max_row + source_tab.f_int1,
29535
f_charbig = 'was updated';
29537
# check unique-1-a success: 1
29539
# check unique-1-b success: 1
29540
DELETE FROM t1 WHERE f_charbig = 'was inserted';
29541
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29542
f_int2 = CAST(f_char1 AS SIGNED INT),
29543
f_charbig = CONCAT('===',f_char1,'===')
29544
WHERE f_charbig = 'was updated';
29545
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29546
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
29547
FROM t0_template source_tab
29548
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
29550
# check replace success: 1
29552
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
29554
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
29555
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
29556
UPDATE t1 SET f_int2 = f_int1,
29557
f_char1 = CAST(f_int1 AS CHAR),
29558
f_char2 = CAST(f_int1 AS CHAR),
29559
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
29560
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
29562
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29563
SELECT f_int1, f_int1, '', '', 'was inserted'
29564
FROM t0_template source_tab
29565
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
29567
# check transactions-1 success: 1
29570
# check transactions-2 success: 1
29573
# check transactions-3 success: 1
29574
DELETE FROM t1 WHERE f_charbig = 'was inserted';
29578
# check transactions-4 success: 1
29579
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29580
SELECT f_int1, f_int1, '', '', 'was inserted'
29581
FROM t0_template source_tab
29582
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
29584
# check transactions-5 success: 1
29587
Warning 1196 Some non-transactional changed tables couldn't be rolled back
29589
# check transactions-6 success: 1
29590
# INFO: Storage engine used for t1 seems to be not transactional.
29593
# check transactions-7 success: 1
29594
DELETE FROM t1 WHERE f_charbig = 'was inserted';
29596
SET @@session.sql_mode = 'traditional';
29597
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
29598
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29599
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
29600
'', '', 'was inserted' FROM t0_template
29601
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
29602
ERROR 22012: Division by 0
29605
# check transactions-8 success: 1
29606
# INFO: Storage engine used for t1 seems to be unable to revert
29607
# changes made by the failing statement.
29608
SET @@session.sql_mode = '';
29610
DELETE FROM t1 WHERE f_charbig = 'was inserted';
29612
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
29614
# check special-1 success: 1
29615
UPDATE t1 SET f_charbig = '';
29617
# check special-2 success: 1
29618
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
29619
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
29620
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
29621
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29622
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29623
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29624
'just inserted' FROM t0_template
29625
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29626
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
29628
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29629
f_charbig = 'updated by trigger'
29630
WHERE f_int1 = new.f_int1;
29632
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29633
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
29634
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29636
# check trigger-1 success: 1
29637
DROP TRIGGER trg_1;
29638
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29639
f_int2 = CAST(f_char1 AS SIGNED INT),
29640
f_charbig = 'just inserted'
29641
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29643
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29644
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29645
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29646
'just inserted' FROM t0_template
29647
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29648
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
29650
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29651
f_charbig = 'updated by trigger'
29652
WHERE f_int1 = new.f_int1;
29654
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29655
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
29656
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29658
# check trigger-2 success: 1
29659
DROP TRIGGER trg_1;
29660
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29661
f_int2 = CAST(f_char1 AS SIGNED INT),
29662
f_charbig = 'just inserted'
29663
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29665
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29666
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29667
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29668
'just inserted' FROM t0_template
29669
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29670
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
29672
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29673
f_charbig = 'updated by trigger'
29674
WHERE f_int1 = new.f_int1;
29676
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
29677
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29679
# check trigger-3 success: 1
29680
DROP TRIGGER trg_1;
29681
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29682
f_int2 = CAST(f_char1 AS SIGNED INT),
29683
f_charbig = 'just inserted'
29684
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29686
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29687
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29688
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29689
'just inserted' FROM t0_template
29690
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29691
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
29693
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29694
f_charbig = 'updated by trigger'
29695
WHERE f_int1 = - old.f_int1;
29697
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
29698
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29700
# check trigger-4 success: 1
29701
DROP TRIGGER trg_1;
29702
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29703
f_int2 = CAST(f_char1 AS SIGNED INT),
29704
f_charbig = 'just inserted'
29705
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29707
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29708
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29709
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29710
'just inserted' FROM t0_template
29711
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29712
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
29714
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29715
f_charbig = 'updated by trigger'
29716
WHERE f_int1 = new.f_int1;
29718
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
29719
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29721
# check trigger-5 success: 1
29722
DROP TRIGGER trg_1;
29723
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29724
f_int2 = CAST(f_char1 AS SIGNED INT),
29725
f_charbig = 'just inserted'
29726
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29728
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29729
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29730
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29731
'just inserted' FROM t0_template
29732
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29733
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
29735
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29736
f_charbig = 'updated by trigger'
29737
WHERE f_int1 = - old.f_int1;
29739
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
29740
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29742
# check trigger-6 success: 1
29743
DROP TRIGGER trg_1;
29744
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29745
f_int2 = CAST(f_char1 AS SIGNED INT),
29746
f_charbig = 'just inserted'
29747
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29749
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29750
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29751
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29752
'just inserted' FROM t0_template
29753
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29754
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
29756
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29757
f_charbig = 'updated by trigger'
29758
WHERE f_int1 = - old.f_int1;
29761
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29763
# check trigger-7 success: 1
29764
DROP TRIGGER trg_1;
29765
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29766
f_int2 = CAST(f_char1 AS SIGNED INT),
29767
f_charbig = 'just inserted'
29768
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29770
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29771
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29772
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29773
'just inserted' FROM t0_template
29774
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29775
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
29777
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29778
f_charbig = 'updated by trigger'
29779
WHERE f_int1 = - old.f_int1;
29782
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29784
# check trigger-8 success: 1
29785
DROP TRIGGER trg_1;
29786
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29787
f_int2 = CAST(f_char1 AS SIGNED INT),
29788
f_charbig = 'just inserted'
29789
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29791
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29793
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29794
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
29796
SET new.f_int1 = old.f_int1 + @max_row,
29797
new.f_int2 = old.f_int2 - @max_row,
29798
new.f_charbig = '####updated per update trigger####';
29801
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
29802
f_charbig = '####updated per update statement itself####';
29804
# check trigger-9 success: 1
29805
DROP TRIGGER trg_2;
29806
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29807
f_int2 = CAST(f_char1 AS SIGNED INT),
29808
f_charbig = CONCAT('===',f_char1,'===');
29809
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
29811
SET new.f_int1 = new.f_int1 + @max_row,
29812
new.f_int2 = new.f_int2 - @max_row,
29813
new.f_charbig = '####updated per update trigger####';
29816
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
29817
f_charbig = '####updated per update statement itself####';
29819
# check trigger-10 success: 1
29820
DROP TRIGGER trg_2;
29821
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29822
f_int2 = CAST(f_char1 AS SIGNED INT),
29823
f_charbig = CONCAT('===',f_char1,'===');
29824
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
29826
SET new.f_int1 = @my_max1 + @counter,
29827
new.f_int2 = @my_min2 - @counter,
29828
new.f_charbig = '####updated per insert trigger####';
29829
SET @counter = @counter + 1;
29832
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
29833
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29834
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
29835
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
29836
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
29838
DROP TRIGGER trg_3;
29840
# check trigger-11 success: 1
29842
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
29843
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
29844
AND f_charbig = '####updated per insert trigger####';
29845
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
29847
SET new.f_int1 = @my_max1 + @counter,
29848
new.f_int2 = @my_min2 - @counter,
29849
new.f_charbig = '####updated per insert trigger####';
29850
SET @counter = @counter + 1;
29853
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
29854
INSERT INTO t1 (f_char1, f_char2, f_charbig)
29855
SELECT CAST(f_int1 AS CHAR),
29856
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
29857
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
29859
DROP TRIGGER trg_3;
29861
# check trigger-12 success: 1
29863
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
29864
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
29865
AND f_charbig = '####updated per insert trigger####';
29867
Table Op Msg_type Msg_text
29868
test.t1 analyze status OK
29869
CHECK TABLE t1 EXTENDED;
29870
Table Op Msg_type Msg_text
29871
test.t1 check status OK
29872
CHECKSUM TABLE t1 EXTENDED;
29874
test.t1 <some_value>
29876
Table Op Msg_type Msg_text
29877
test.t1 optimize status OK
29878
# check layout success: 1
29879
REPAIR TABLE t1 EXTENDED;
29880
Table Op Msg_type Msg_text
29881
test.t1 repair status OK
29882
# check layout success: 1
29885
# check TRUNCATE success: 1
29886
# check layout success: 1
29887
# End usability test (inc/partition_check.inc)
29894
f_charbig VARCHAR(1000)
29895
, UNIQUE INDEX uidx (f_int2,f_int1)
29897
PARTITION BY LIST(MOD(f_int1,4))
29898
(PARTITION part_3 VALUES IN (-3),
29899
PARTITION part_2 VALUES IN (-2),
29900
PARTITION part_1 VALUES IN (-1),
29901
PARTITION part_N VALUES IN (NULL),
29902
PARTITION part0 VALUES IN (0),
29903
PARTITION part1 VALUES IN (1),
29904
PARTITION part2 VALUES IN (2),
29905
PARTITION part3 VALUES IN (3));
29906
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
29907
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
29908
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
29909
ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
29910
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
29911
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
29912
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
29913
# Start usability test (inc/partition_check.inc)
29915
SHOW CREATE TABLE t1;
29917
t1 CREATE TABLE `t1` (
29918
`f_int1` bigint(20) DEFAULT NULL,
29919
`f_int2` bigint(20) DEFAULT NULL,
29920
`f_char1` char(20) DEFAULT NULL,
29921
`f_char2` char(20) DEFAULT NULL,
29922
`f_charbig` varchar(1000) DEFAULT NULL,
29923
UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
29924
) ENGINE=MyISAM DEFAULT CHARSET=latin1
29925
/*!50100 PARTITION BY LIST (MOD(f_int1,4))
29926
(PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM,
29927
PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM,
29928
PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM,
29929
PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM,
29930
PARTITION part0 VALUES IN (0) ENGINE = MyISAM,
29931
PARTITION part1 VALUES IN (1) ENGINE = MyISAM,
29932
PARTITION part2 VALUES IN (2) ENGINE = MyISAM,
29933
PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */
29955
# check prerequisites-1 success: 1
29956
# check COUNT(*) success: 1
29957
# check MIN/MAX(f_int1) success: 1
29958
# check MIN/MAX(f_int2) success: 1
29959
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29960
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
29961
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
29962
WHERE f_int1 IN (2,3);
29963
ERROR 23000: Duplicate entry '2-2' for key 'uidx'
29964
# check prerequisites-3 success: 1
29965
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
29966
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29967
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
29968
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
29969
WHERE f_int1 IN (2,3);
29970
DELETE FROM t1 WHERE f_charbig = 'delete me';
29971
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29972
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
29973
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
29974
WHERE f_int1 IN (2,3);
29975
DELETE FROM t1 WHERE f_charbig = 'delete me';
29976
# check read via f_int1 success: 1
29977
# check read via f_int2 success: 1
29979
# check multiple-1 success: 1
29980
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
29982
# check multiple-2 success: 1
29983
INSERT INTO t1 SELECT * FROM t0_template
29984
WHERE MOD(f_int1,3) = 0;
29986
# check multiple-3 success: 1
29987
UPDATE t1 SET f_int1 = f_int1 + @max_row
29988
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
29989
AND @max_row_div2 + @max_row_div4;
29991
# check multiple-4 success: 1
29993
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
29994
AND @max_row_div2 + @max_row_div4 + @max_row;
29996
# check multiple-5 success: 1
29997
SELECT COUNT(*) INTO @try_count FROM t0_template
29998
WHERE MOD(f_int1,3) = 0
29999
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
30000
SELECT COUNT(*) INTO @clash_count
30001
FROM t1 INNER JOIN t0_template USING(f_int1)
30002
WHERE MOD(f_int1,3) = 0
30003
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
30004
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
30006
SET f_int1 = @cur_value , f_int2 = @cur_value,
30007
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
30008
f_charbig = '#SINGLE#';
30010
# check single-1 success: 1
30011
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
30013
SET f_int1 = @cur_value , f_int2 = @cur_value,
30014
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
30015
f_charbig = '#SINGLE#';
30017
# check single-2 success: 1
30018
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
30019
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
30020
UPDATE t1 SET f_int1 = @cur_value2
30021
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
30023
# check single-3 success: 1
30024
SET @cur_value1= -1;
30025
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
30026
UPDATE t1 SET f_int1 = @cur_value1
30027
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
30029
# check single-4 success: 1
30030
SELECT MAX(f_int1) INTO @cur_value FROM t1;
30031
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
30033
# check single-5 success: 1
30034
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
30036
# check single-6 success: 1
30037
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
30039
# check single-7 success: 1
30040
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
30041
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
30042
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
30043
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
30044
f_charbig = '#NULL#';
30046
SET f_int1 = NULL , f_int2 = -@max_row,
30047
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
30048
f_charbig = '#NULL#';
30049
# check null success: 1
30051
# check null-1 success: 1
30052
UPDATE t1 SET f_int1 = -@max_row
30053
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
30054
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
30056
# check null-2 success: 1
30057
UPDATE t1 SET f_int1 = NULL
30058
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
30059
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
30061
# check null-3 success: 1
30063
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
30064
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
30066
# check null-4 success: 1
30068
WHERE f_int1 = 0 AND f_int2 = 0
30069
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
30070
AND f_charbig = '#NULL#';
30071
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30072
SELECT f_int1, f_int1, '', '', 'was inserted'
30073
FROM t0_template source_tab
30074
WHERE MOD(f_int1,3) = 0
30075
AND f_int1 BETWEEN @max_row_div2 AND @max_row
30077
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
30078
f_int2 = 2 * @max_row + source_tab.f_int1,
30079
f_charbig = 'was updated';
30081
# check unique-1-a success: 1
30083
# check unique-1-b success: 1
30084
DELETE FROM t1 WHERE f_charbig = 'was inserted';
30085
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30086
f_int2 = CAST(f_char1 AS SIGNED INT),
30087
f_charbig = CONCAT('===',f_char1,'===')
30088
WHERE f_charbig = 'was updated';
30089
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30090
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
30091
FROM t0_template source_tab
30092
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
30094
# check replace success: 1
30096
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
30098
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
30099
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
30100
UPDATE t1 SET f_int2 = f_int1,
30101
f_char1 = CAST(f_int1 AS CHAR),
30102
f_char2 = CAST(f_int1 AS CHAR),
30103
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
30104
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
30106
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30107
SELECT f_int1, f_int1, '', '', 'was inserted'
30108
FROM t0_template source_tab
30109
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
30111
# check transactions-1 success: 1
30114
# check transactions-2 success: 1
30117
# check transactions-3 success: 1
30118
DELETE FROM t1 WHERE f_charbig = 'was inserted';
30122
# check transactions-4 success: 1
30123
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30124
SELECT f_int1, f_int1, '', '', 'was inserted'
30125
FROM t0_template source_tab
30126
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
30128
# check transactions-5 success: 1
30131
Warning 1196 Some non-transactional changed tables couldn't be rolled back
30133
# check transactions-6 success: 1
30134
# INFO: Storage engine used for t1 seems to be not transactional.
30137
# check transactions-7 success: 1
30138
DELETE FROM t1 WHERE f_charbig = 'was inserted';
30140
SET @@session.sql_mode = 'traditional';
30141
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
30142
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30143
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
30144
'', '', 'was inserted' FROM t0_template
30145
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
30146
ERROR 22012: Division by 0
30149
# check transactions-8 success: 1
30150
# INFO: Storage engine used for t1 seems to be unable to revert
30151
# changes made by the failing statement.
30152
SET @@session.sql_mode = '';
30154
DELETE FROM t1 WHERE f_charbig = 'was inserted';
30156
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
30158
# check special-1 success: 1
30159
UPDATE t1 SET f_charbig = '';
30161
# check special-2 success: 1
30162
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
30163
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
30164
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
30165
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30166
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30167
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30168
'just inserted' FROM t0_template
30169
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30170
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
30172
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30173
f_charbig = 'updated by trigger'
30174
WHERE f_int1 = new.f_int1;
30176
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30177
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
30178
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30180
# check trigger-1 success: 1
30181
DROP TRIGGER trg_1;
30182
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30183
f_int2 = CAST(f_char1 AS SIGNED INT),
30184
f_charbig = 'just inserted'
30185
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30187
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30188
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30189
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30190
'just inserted' FROM t0_template
30191
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30192
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
30194
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30195
f_charbig = 'updated by trigger'
30196
WHERE f_int1 = new.f_int1;
30198
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30199
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
30200
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30202
# check trigger-2 success: 1
30203
DROP TRIGGER trg_1;
30204
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30205
f_int2 = CAST(f_char1 AS SIGNED INT),
30206
f_charbig = 'just inserted'
30207
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30209
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30210
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30211
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30212
'just inserted' FROM t0_template
30213
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30214
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
30216
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30217
f_charbig = 'updated by trigger'
30218
WHERE f_int1 = new.f_int1;
30220
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
30221
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30223
# check trigger-3 success: 1
30224
DROP TRIGGER trg_1;
30225
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30226
f_int2 = CAST(f_char1 AS SIGNED INT),
30227
f_charbig = 'just inserted'
30228
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30230
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30231
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30232
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30233
'just inserted' FROM t0_template
30234
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30235
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
30237
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30238
f_charbig = 'updated by trigger'
30239
WHERE f_int1 = - old.f_int1;
30241
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
30242
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30244
# check trigger-4 success: 1
30245
DROP TRIGGER trg_1;
30246
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30247
f_int2 = CAST(f_char1 AS SIGNED INT),
30248
f_charbig = 'just inserted'
30249
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30251
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30252
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30253
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30254
'just inserted' FROM t0_template
30255
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30256
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
30258
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30259
f_charbig = 'updated by trigger'
30260
WHERE f_int1 = new.f_int1;
30262
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
30263
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30265
# check trigger-5 success: 1
30266
DROP TRIGGER trg_1;
30267
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30268
f_int2 = CAST(f_char1 AS SIGNED INT),
30269
f_charbig = 'just inserted'
30270
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30272
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30273
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30274
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30275
'just inserted' FROM t0_template
30276
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30277
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
30279
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30280
f_charbig = 'updated by trigger'
30281
WHERE f_int1 = - old.f_int1;
30283
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
30284
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30286
# check trigger-6 success: 1
30287
DROP TRIGGER trg_1;
30288
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30289
f_int2 = CAST(f_char1 AS SIGNED INT),
30290
f_charbig = 'just inserted'
30291
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30293
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30294
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30295
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30296
'just inserted' FROM t0_template
30297
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30298
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
30300
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30301
f_charbig = 'updated by trigger'
30302
WHERE f_int1 = - old.f_int1;
30305
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30307
# check trigger-7 success: 1
30308
DROP TRIGGER trg_1;
30309
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30310
f_int2 = CAST(f_char1 AS SIGNED INT),
30311
f_charbig = 'just inserted'
30312
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30314
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30315
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30316
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30317
'just inserted' FROM t0_template
30318
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30319
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
30321
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30322
f_charbig = 'updated by trigger'
30323
WHERE f_int1 = - old.f_int1;
30326
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30328
# check trigger-8 success: 1
30329
DROP TRIGGER trg_1;
30330
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30331
f_int2 = CAST(f_char1 AS SIGNED INT),
30332
f_charbig = 'just inserted'
30333
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30335
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30337
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30338
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
30340
SET new.f_int1 = old.f_int1 + @max_row,
30341
new.f_int2 = old.f_int2 - @max_row,
30342
new.f_charbig = '####updated per update trigger####';
30345
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
30346
f_charbig = '####updated per update statement itself####';
30348
# check trigger-9 success: 1
30349
DROP TRIGGER trg_2;
30350
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30351
f_int2 = CAST(f_char1 AS SIGNED INT),
30352
f_charbig = CONCAT('===',f_char1,'===');
30353
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
30355
SET new.f_int1 = new.f_int1 + @max_row,
30356
new.f_int2 = new.f_int2 - @max_row,
30357
new.f_charbig = '####updated per update trigger####';
30360
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
30361
f_charbig = '####updated per update statement itself####';
30363
# check trigger-10 success: 1
30364
DROP TRIGGER trg_2;
30365
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30366
f_int2 = CAST(f_char1 AS SIGNED INT),
30367
f_charbig = CONCAT('===',f_char1,'===');
30368
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
30370
SET new.f_int1 = @my_max1 + @counter,
30371
new.f_int2 = @my_min2 - @counter,
30372
new.f_charbig = '####updated per insert trigger####';
30373
SET @counter = @counter + 1;
30376
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
30377
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30378
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
30379
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
30380
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
30382
DROP TRIGGER trg_3;
30384
# check trigger-11 success: 1
30386
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
30387
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
30388
AND f_charbig = '####updated per insert trigger####';
30389
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
30391
SET new.f_int1 = @my_max1 + @counter,
30392
new.f_int2 = @my_min2 - @counter,
30393
new.f_charbig = '####updated per insert trigger####';
30394
SET @counter = @counter + 1;
30397
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
30398
INSERT INTO t1 (f_char1, f_char2, f_charbig)
30399
SELECT CAST(f_int1 AS CHAR),
30400
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
30401
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
30403
DROP TRIGGER trg_3;
30405
# check trigger-12 success: 1
30407
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
30408
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
30409
AND f_charbig = '####updated per insert trigger####';
30411
Table Op Msg_type Msg_text
30412
test.t1 analyze status OK
30413
CHECK TABLE t1 EXTENDED;
30414
Table Op Msg_type Msg_text
30415
test.t1 check status OK
30416
CHECKSUM TABLE t1 EXTENDED;
30418
test.t1 <some_value>
30420
Table Op Msg_type Msg_text
30421
test.t1 optimize status OK
30422
# check layout success: 1
30423
REPAIR TABLE t1 EXTENDED;
30424
Table Op Msg_type Msg_text
30425
test.t1 repair status OK
30426
# check layout success: 1
30429
# check TRUNCATE success: 1
30430
# check layout success: 1
30431
# End usability test (inc/partition_check.inc)
30438
f_charbig VARCHAR(1000)
30439
, UNIQUE INDEX uidx (f_int2,f_int1)
30441
PARTITION BY RANGE(f_int1)
30442
(PARTITION parta VALUES LESS THAN (0),
30443
PARTITION partb VALUES LESS THAN (5),
30444
PARTITION partc VALUES LESS THAN (10),
30445
PARTITION partd VALUES LESS THAN (10 + 5),
30446
PARTITION parte VALUES LESS THAN (20),
30447
PARTITION partf VALUES LESS THAN (2147483646));
30448
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
30449
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
30450
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
30451
ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
30452
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
30453
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
30454
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
30455
# Start usability test (inc/partition_check.inc)
30457
SHOW CREATE TABLE t1;
30459
t1 CREATE TABLE `t1` (
30460
`f_int1` bigint(20) DEFAULT NULL,
30461
`f_int2` bigint(20) DEFAULT NULL,
30462
`f_char1` char(20) DEFAULT NULL,
30463
`f_char2` char(20) DEFAULT NULL,
30464
`f_charbig` varchar(1000) DEFAULT NULL,
30465
UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
30466
) ENGINE=MyISAM DEFAULT CHARSET=latin1
30467
/*!50100 PARTITION BY RANGE (f_int1)
30468
(PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM,
30469
PARTITION partb VALUES LESS THAN (5) ENGINE = MyISAM,
30470
PARTITION partc VALUES LESS THAN (10) ENGINE = MyISAM,
30471
PARTITION partd VALUES LESS THAN (15) ENGINE = MyISAM,
30472
PARTITION parte VALUES LESS THAN (20) ENGINE = MyISAM,
30473
PARTITION partf VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
30491
# check prerequisites-1 success: 1
30492
# check COUNT(*) success: 1
30493
# check MIN/MAX(f_int1) success: 1
30494
# check MIN/MAX(f_int2) success: 1
30495
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30496
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
30497
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
30498
WHERE f_int1 IN (2,3);
30499
ERROR 23000: Duplicate entry '2-2' for key 'uidx'
30500
# check prerequisites-3 success: 1
30501
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
30502
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30503
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
30504
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
30505
WHERE f_int1 IN (2,3);
30506
DELETE FROM t1 WHERE f_charbig = 'delete me';
30507
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30508
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
30509
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
30510
WHERE f_int1 IN (2,3);
30511
DELETE FROM t1 WHERE f_charbig = 'delete me';
30512
# check read via f_int1 success: 1
30513
# check read via f_int2 success: 1
30515
# check multiple-1 success: 1
30516
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
30518
# check multiple-2 success: 1
30519
INSERT INTO t1 SELECT * FROM t0_template
30520
WHERE MOD(f_int1,3) = 0;
30522
# check multiple-3 success: 1
30523
UPDATE t1 SET f_int1 = f_int1 + @max_row
30524
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
30525
AND @max_row_div2 + @max_row_div4;
30527
# check multiple-4 success: 1
30529
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
30530
AND @max_row_div2 + @max_row_div4 + @max_row;
30532
# check multiple-5 success: 1
30533
SELECT COUNT(*) INTO @try_count FROM t0_template
30534
WHERE MOD(f_int1,3) = 0
30535
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
30536
SELECT COUNT(*) INTO @clash_count
30537
FROM t1 INNER JOIN t0_template USING(f_int1)
30538
WHERE MOD(f_int1,3) = 0
30539
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
30540
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
30542
SET f_int1 = @cur_value , f_int2 = @cur_value,
30543
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
30544
f_charbig = '#SINGLE#';
30546
# check single-1 success: 1
30547
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
30549
SET f_int1 = @cur_value , f_int2 = @cur_value,
30550
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
30551
f_charbig = '#SINGLE#';
30553
# check single-2 success: 1
30554
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
30555
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
30556
UPDATE t1 SET f_int1 = @cur_value2
30557
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
30559
# check single-3 success: 1
30560
SET @cur_value1= -1;
30561
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
30562
UPDATE t1 SET f_int1 = @cur_value1
30563
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
30565
# check single-4 success: 1
30566
SELECT MAX(f_int1) INTO @cur_value FROM t1;
30567
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
30569
# check single-5 success: 1
30570
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
30572
# check single-6 success: 1
30573
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
30574
ERROR HY000: Table has no partition for value 2147483647
30575
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
30576
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
30577
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
30578
f_charbig = '#NULL#';
30580
SET f_int1 = NULL , f_int2 = -@max_row,
30581
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
30582
f_charbig = '#NULL#';
30583
# check null success: 1
30585
# check null-1 success: 1
30586
UPDATE t1 SET f_int1 = -@max_row
30587
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
30588
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
30590
# check null-2 success: 1
30591
UPDATE t1 SET f_int1 = NULL
30592
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
30593
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
30595
# check null-3 success: 1
30597
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
30598
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
30600
# check null-4 success: 1
30602
WHERE f_int1 = 0 AND f_int2 = 0
30603
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
30604
AND f_charbig = '#NULL#';
30605
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30606
SELECT f_int1, f_int1, '', '', 'was inserted'
30607
FROM t0_template source_tab
30608
WHERE MOD(f_int1,3) = 0
30609
AND f_int1 BETWEEN @max_row_div2 AND @max_row
30611
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
30612
f_int2 = 2 * @max_row + source_tab.f_int1,
30613
f_charbig = 'was updated';
30615
# check unique-1-a success: 1
30617
# check unique-1-b success: 1
30618
DELETE FROM t1 WHERE f_charbig = 'was inserted';
30619
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30620
f_int2 = CAST(f_char1 AS SIGNED INT),
30621
f_charbig = CONCAT('===',f_char1,'===')
30622
WHERE f_charbig = 'was updated';
30623
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30624
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
30625
FROM t0_template source_tab
30626
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
30628
# check replace success: 1
30630
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
30632
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
30633
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
30634
UPDATE t1 SET f_int2 = f_int1,
30635
f_char1 = CAST(f_int1 AS CHAR),
30636
f_char2 = CAST(f_int1 AS CHAR),
30637
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
30638
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
30640
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30641
SELECT f_int1, f_int1, '', '', 'was inserted'
30642
FROM t0_template source_tab
30643
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
30645
# check transactions-1 success: 1
30648
# check transactions-2 success: 1
30651
# check transactions-3 success: 1
30652
DELETE FROM t1 WHERE f_charbig = 'was inserted';
30656
# check transactions-4 success: 1
30657
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30658
SELECT f_int1, f_int1, '', '', 'was inserted'
30659
FROM t0_template source_tab
30660
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
30662
# check transactions-5 success: 1
30665
Warning 1196 Some non-transactional changed tables couldn't be rolled back
30667
# check transactions-6 success: 1
30668
# INFO: Storage engine used for t1 seems to be not transactional.
30671
# check transactions-7 success: 1
30672
DELETE FROM t1 WHERE f_charbig = 'was inserted';
30674
SET @@session.sql_mode = 'traditional';
30675
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
30676
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30677
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
30678
'', '', 'was inserted' FROM t0_template
30679
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
30680
ERROR 22012: Division by 0
30683
# check transactions-8 success: 1
30684
# INFO: Storage engine used for t1 seems to be unable to revert
30685
# changes made by the failing statement.
30686
SET @@session.sql_mode = '';
30688
DELETE FROM t1 WHERE f_charbig = 'was inserted';
30690
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
30692
# check special-1 success: 1
30693
UPDATE t1 SET f_charbig = '';
30695
# check special-2 success: 1
30696
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
30697
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
30698
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
30699
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30700
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30701
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30702
'just inserted' FROM t0_template
30703
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30704
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
30706
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30707
f_charbig = 'updated by trigger'
30708
WHERE f_int1 = new.f_int1;
30710
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30711
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
30712
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30714
# check trigger-1 success: 1
30715
DROP TRIGGER trg_1;
30716
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30717
f_int2 = CAST(f_char1 AS SIGNED INT),
30718
f_charbig = 'just inserted'
30719
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30721
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30722
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30723
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30724
'just inserted' FROM t0_template
30725
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30726
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
30728
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30729
f_charbig = 'updated by trigger'
30730
WHERE f_int1 = new.f_int1;
30732
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30733
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
30734
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30736
# check trigger-2 success: 1
30737
DROP TRIGGER trg_1;
30738
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30739
f_int2 = CAST(f_char1 AS SIGNED INT),
30740
f_charbig = 'just inserted'
30741
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30743
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30744
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30745
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30746
'just inserted' FROM t0_template
30747
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30748
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
30750
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30751
f_charbig = 'updated by trigger'
30752
WHERE f_int1 = new.f_int1;
30754
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
30755
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30757
# check trigger-3 success: 1
30758
DROP TRIGGER trg_1;
30759
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30760
f_int2 = CAST(f_char1 AS SIGNED INT),
30761
f_charbig = 'just inserted'
30762
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30764
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30765
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30766
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30767
'just inserted' FROM t0_template
30768
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30769
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
30771
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30772
f_charbig = 'updated by trigger'
30773
WHERE f_int1 = - old.f_int1;
30775
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
30776
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30778
# check trigger-4 success: 1
30779
DROP TRIGGER trg_1;
30780
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30781
f_int2 = CAST(f_char1 AS SIGNED INT),
30782
f_charbig = 'just inserted'
30783
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30785
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30786
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30787
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30788
'just inserted' FROM t0_template
30789
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30790
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
30792
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30793
f_charbig = 'updated by trigger'
30794
WHERE f_int1 = new.f_int1;
30796
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
30797
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30799
# check trigger-5 success: 1
30800
DROP TRIGGER trg_1;
30801
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30802
f_int2 = CAST(f_char1 AS SIGNED INT),
30803
f_charbig = 'just inserted'
30804
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30806
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30807
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30808
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30809
'just inserted' FROM t0_template
30810
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30811
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
30813
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30814
f_charbig = 'updated by trigger'
30815
WHERE f_int1 = - old.f_int1;
30817
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
30818
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30820
# check trigger-6 success: 1
30821
DROP TRIGGER trg_1;
30822
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30823
f_int2 = CAST(f_char1 AS SIGNED INT),
30824
f_charbig = 'just inserted'
30825
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30827
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30828
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30829
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30830
'just inserted' FROM t0_template
30831
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30832
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
30834
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30835
f_charbig = 'updated by trigger'
30836
WHERE f_int1 = - old.f_int1;
30839
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30841
# check trigger-7 success: 1
30842
DROP TRIGGER trg_1;
30843
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30844
f_int2 = CAST(f_char1 AS SIGNED INT),
30845
f_charbig = 'just inserted'
30846
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30848
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30849
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30850
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30851
'just inserted' FROM t0_template
30852
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30853
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
30855
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30856
f_charbig = 'updated by trigger'
30857
WHERE f_int1 = - old.f_int1;
30860
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30862
# check trigger-8 success: 1
30863
DROP TRIGGER trg_1;
30864
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30865
f_int2 = CAST(f_char1 AS SIGNED INT),
30866
f_charbig = 'just inserted'
30867
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30869
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30871
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30872
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
30874
SET new.f_int1 = old.f_int1 + @max_row,
30875
new.f_int2 = old.f_int2 - @max_row,
30876
new.f_charbig = '####updated per update trigger####';
30879
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
30880
f_charbig = '####updated per update statement itself####';
30882
# check trigger-9 success: 1
30883
DROP TRIGGER trg_2;
30884
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30885
f_int2 = CAST(f_char1 AS SIGNED INT),
30886
f_charbig = CONCAT('===',f_char1,'===');
30887
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
30889
SET new.f_int1 = new.f_int1 + @max_row,
30890
new.f_int2 = new.f_int2 - @max_row,
30891
new.f_charbig = '####updated per update trigger####';
30894
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
30895
f_charbig = '####updated per update statement itself####';
30897
# check trigger-10 success: 1
30898
DROP TRIGGER trg_2;
30899
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30900
f_int2 = CAST(f_char1 AS SIGNED INT),
30901
f_charbig = CONCAT('===',f_char1,'===');
30902
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
30904
SET new.f_int1 = @my_max1 + @counter,
30905
new.f_int2 = @my_min2 - @counter,
30906
new.f_charbig = '####updated per insert trigger####';
30907
SET @counter = @counter + 1;
30910
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
30911
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30912
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
30913
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
30914
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
30916
DROP TRIGGER trg_3;
30918
# check trigger-11 success: 1
30920
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
30921
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
30922
AND f_charbig = '####updated per insert trigger####';
30923
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
30925
SET new.f_int1 = @my_max1 + @counter,
30926
new.f_int2 = @my_min2 - @counter,
30927
new.f_charbig = '####updated per insert trigger####';
30928
SET @counter = @counter + 1;
30931
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
30932
INSERT INTO t1 (f_char1, f_char2, f_charbig)
30933
SELECT CAST(f_int1 AS CHAR),
30934
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
30935
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
30937
DROP TRIGGER trg_3;
30939
# check trigger-12 success: 1
30941
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
30942
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
30943
AND f_charbig = '####updated per insert trigger####';
30945
Table Op Msg_type Msg_text
30946
test.t1 analyze status OK
30947
CHECK TABLE t1 EXTENDED;
30948
Table Op Msg_type Msg_text
30949
test.t1 check status OK
30950
CHECKSUM TABLE t1 EXTENDED;
30952
test.t1 <some_value>
30954
Table Op Msg_type Msg_text
30955
test.t1 optimize status OK
30956
# check layout success: 1
30957
REPAIR TABLE t1 EXTENDED;
30958
Table Op Msg_type Msg_text
30959
test.t1 repair status OK
30960
# check layout success: 1
30963
# check TRUNCATE success: 1
30964
# check layout success: 1
30965
# End usability test (inc/partition_check.inc)
30972
f_charbig VARCHAR(1000)
30973
, UNIQUE INDEX uidx (f_int2,f_int1)
30975
PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
30976
(PARTITION parta VALUES LESS THAN (0),
30977
PARTITION partb VALUES LESS THAN (5),
30978
PARTITION partc VALUES LESS THAN (10),
30979
PARTITION partd VALUES LESS THAN (2147483646));
30980
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
30981
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
30982
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
30983
ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
30984
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
30985
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
30986
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
30987
# Start usability test (inc/partition_check.inc)
30989
SHOW CREATE TABLE t1;
30991
t1 CREATE TABLE `t1` (
30992
`f_int1` bigint(20) DEFAULT NULL,
30993
`f_int2` bigint(20) DEFAULT NULL,
30994
`f_char1` char(20) DEFAULT NULL,
30995
`f_char2` char(20) DEFAULT NULL,
30996
`f_charbig` varchar(1000) DEFAULT NULL,
30997
UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
30998
) ENGINE=MyISAM DEFAULT CHARSET=latin1
30999
/*!50100 PARTITION BY RANGE (f_int1 DIV 2)
31000
SUBPARTITION BY HASH (f_int1)
31002
(PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM,
31003
PARTITION partb VALUES LESS THAN (5) ENGINE = MyISAM,
31004
PARTITION partc VALUES LESS THAN (10) ENGINE = MyISAM,
31005
PARTITION partd VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
31008
t1#P#parta#SP#partasp0.MYD
31009
t1#P#parta#SP#partasp0.MYI
31010
t1#P#parta#SP#partasp1.MYD
31011
t1#P#parta#SP#partasp1.MYI
31012
t1#P#partb#SP#partbsp0.MYD
31013
t1#P#partb#SP#partbsp0.MYI
31014
t1#P#partb#SP#partbsp1.MYD
31015
t1#P#partb#SP#partbsp1.MYI
31016
t1#P#partc#SP#partcsp0.MYD
31017
t1#P#partc#SP#partcsp0.MYI
31018
t1#P#partc#SP#partcsp1.MYD
31019
t1#P#partc#SP#partcsp1.MYI
31020
t1#P#partd#SP#partdsp0.MYD
31021
t1#P#partd#SP#partdsp0.MYI
31022
t1#P#partd#SP#partdsp1.MYD
31023
t1#P#partd#SP#partdsp1.MYI
31027
# check prerequisites-1 success: 1
31028
# check COUNT(*) success: 1
31029
# check MIN/MAX(f_int1) success: 1
31030
# check MIN/MAX(f_int2) success: 1
31031
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31032
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
31033
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
31034
WHERE f_int1 IN (2,3);
31035
ERROR 23000: Duplicate entry '2-2' for key 'uidx'
31036
# check prerequisites-3 success: 1
31037
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
31038
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31039
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
31040
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
31041
WHERE f_int1 IN (2,3);
31042
DELETE FROM t1 WHERE f_charbig = 'delete me';
31043
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31044
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
31045
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
31046
WHERE f_int1 IN (2,3);
31047
DELETE FROM t1 WHERE f_charbig = 'delete me';
31048
# check read via f_int1 success: 1
31049
# check read via f_int2 success: 1
31051
# check multiple-1 success: 1
31052
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
31054
# check multiple-2 success: 1
31055
INSERT INTO t1 SELECT * FROM t0_template
31056
WHERE MOD(f_int1,3) = 0;
31058
# check multiple-3 success: 1
31059
UPDATE t1 SET f_int1 = f_int1 + @max_row
31060
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
31061
AND @max_row_div2 + @max_row_div4;
31063
# check multiple-4 success: 1
31065
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
31066
AND @max_row_div2 + @max_row_div4 + @max_row;
31068
# check multiple-5 success: 1
31069
SELECT COUNT(*) INTO @try_count FROM t0_template
31070
WHERE MOD(f_int1,3) = 0
31071
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
31072
SELECT COUNT(*) INTO @clash_count
31073
FROM t1 INNER JOIN t0_template USING(f_int1)
31074
WHERE MOD(f_int1,3) = 0
31075
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
31076
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
31078
SET f_int1 = @cur_value , f_int2 = @cur_value,
31079
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
31080
f_charbig = '#SINGLE#';
31082
# check single-1 success: 1
31083
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
31085
SET f_int1 = @cur_value , f_int2 = @cur_value,
31086
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
31087
f_charbig = '#SINGLE#';
31089
# check single-2 success: 1
31090
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
31091
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
31092
UPDATE t1 SET f_int1 = @cur_value2
31093
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
31095
# check single-3 success: 1
31096
SET @cur_value1= -1;
31097
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
31098
UPDATE t1 SET f_int1 = @cur_value1
31099
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
31101
# check single-4 success: 1
31102
SELECT MAX(f_int1) INTO @cur_value FROM t1;
31103
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
31105
# check single-5 success: 1
31106
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
31108
# check single-6 success: 1
31109
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
31111
# check single-7 success: 1
31112
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
31113
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
31114
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
31115
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
31116
f_charbig = '#NULL#';
31118
SET f_int1 = NULL , f_int2 = -@max_row,
31119
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
31120
f_charbig = '#NULL#';
31121
# check null success: 1
31123
# check null-1 success: 1
31124
UPDATE t1 SET f_int1 = -@max_row
31125
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
31126
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
31128
# check null-2 success: 1
31129
UPDATE t1 SET f_int1 = NULL
31130
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
31131
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
31133
# check null-3 success: 1
31135
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
31136
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
31138
# check null-4 success: 1
31140
WHERE f_int1 = 0 AND f_int2 = 0
31141
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
31142
AND f_charbig = '#NULL#';
31143
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31144
SELECT f_int1, f_int1, '', '', 'was inserted'
31145
FROM t0_template source_tab
31146
WHERE MOD(f_int1,3) = 0
31147
AND f_int1 BETWEEN @max_row_div2 AND @max_row
31149
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
31150
f_int2 = 2 * @max_row + source_tab.f_int1,
31151
f_charbig = 'was updated';
31153
# check unique-1-a success: 1
31155
# check unique-1-b success: 1
31156
DELETE FROM t1 WHERE f_charbig = 'was inserted';
31157
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31158
f_int2 = CAST(f_char1 AS SIGNED INT),
31159
f_charbig = CONCAT('===',f_char1,'===')
31160
WHERE f_charbig = 'was updated';
31161
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31162
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
31163
FROM t0_template source_tab
31164
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
31166
# check replace success: 1
31168
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
31170
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
31171
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
31172
UPDATE t1 SET f_int2 = f_int1,
31173
f_char1 = CAST(f_int1 AS CHAR),
31174
f_char2 = CAST(f_int1 AS CHAR),
31175
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
31176
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
31178
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31179
SELECT f_int1, f_int1, '', '', 'was inserted'
31180
FROM t0_template source_tab
31181
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
31183
# check transactions-1 success: 1
31186
# check transactions-2 success: 1
31189
# check transactions-3 success: 1
31190
DELETE FROM t1 WHERE f_charbig = 'was inserted';
31194
# check transactions-4 success: 1
31195
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31196
SELECT f_int1, f_int1, '', '', 'was inserted'
31197
FROM t0_template source_tab
31198
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
31200
# check transactions-5 success: 1
31203
Warning 1196 Some non-transactional changed tables couldn't be rolled back
31205
# check transactions-6 success: 1
31206
# INFO: Storage engine used for t1 seems to be not transactional.
31209
# check transactions-7 success: 1
31210
DELETE FROM t1 WHERE f_charbig = 'was inserted';
31212
SET @@session.sql_mode = 'traditional';
31213
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
31214
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31215
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
31216
'', '', 'was inserted' FROM t0_template
31217
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
31218
ERROR 22012: Division by 0
31221
# check transactions-8 success: 1
31222
# INFO: Storage engine used for t1 seems to be unable to revert
31223
# changes made by the failing statement.
31224
SET @@session.sql_mode = '';
31226
DELETE FROM t1 WHERE f_charbig = 'was inserted';
31228
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
31230
# check special-1 success: 1
31231
UPDATE t1 SET f_charbig = '';
31233
# check special-2 success: 1
31234
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
31235
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
31236
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
31237
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31238
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31239
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31240
'just inserted' FROM t0_template
31241
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31242
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
31244
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31245
f_charbig = 'updated by trigger'
31246
WHERE f_int1 = new.f_int1;
31248
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31249
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
31250
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31252
# check trigger-1 success: 1
31253
DROP TRIGGER trg_1;
31254
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31255
f_int2 = CAST(f_char1 AS SIGNED INT),
31256
f_charbig = 'just inserted'
31257
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31259
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31260
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31261
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31262
'just inserted' FROM t0_template
31263
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31264
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
31266
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31267
f_charbig = 'updated by trigger'
31268
WHERE f_int1 = new.f_int1;
31270
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31271
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
31272
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31274
# check trigger-2 success: 1
31275
DROP TRIGGER trg_1;
31276
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31277
f_int2 = CAST(f_char1 AS SIGNED INT),
31278
f_charbig = 'just inserted'
31279
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31281
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31282
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31283
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31284
'just inserted' FROM t0_template
31285
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31286
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
31288
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31289
f_charbig = 'updated by trigger'
31290
WHERE f_int1 = new.f_int1;
31292
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
31293
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
31295
# check trigger-3 success: 1
31296
DROP TRIGGER trg_1;
31297
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31298
f_int2 = CAST(f_char1 AS SIGNED INT),
31299
f_charbig = 'just inserted'
31300
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31302
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31303
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31304
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31305
'just inserted' FROM t0_template
31306
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31307
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
31309
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31310
f_charbig = 'updated by trigger'
31311
WHERE f_int1 = - old.f_int1;
31313
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
31314
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
31316
# check trigger-4 success: 1
31317
DROP TRIGGER trg_1;
31318
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31319
f_int2 = CAST(f_char1 AS SIGNED INT),
31320
f_charbig = 'just inserted'
31321
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31323
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31324
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31325
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31326
'just inserted' FROM t0_template
31327
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31328
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
31330
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31331
f_charbig = 'updated by trigger'
31332
WHERE f_int1 = new.f_int1;
31334
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
31335
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
31337
# check trigger-5 success: 1
31338
DROP TRIGGER trg_1;
31339
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31340
f_int2 = CAST(f_char1 AS SIGNED INT),
31341
f_charbig = 'just inserted'
31342
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31344
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31345
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31346
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31347
'just inserted' FROM t0_template
31348
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31349
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
31351
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31352
f_charbig = 'updated by trigger'
31353
WHERE f_int1 = - old.f_int1;
31355
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
31356
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
31358
# check trigger-6 success: 1
31359
DROP TRIGGER trg_1;
31360
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31361
f_int2 = CAST(f_char1 AS SIGNED INT),
31362
f_charbig = 'just inserted'
31363
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31365
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31366
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31367
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31368
'just inserted' FROM t0_template
31369
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31370
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
31372
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31373
f_charbig = 'updated by trigger'
31374
WHERE f_int1 = - old.f_int1;
31377
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
31379
# check trigger-7 success: 1
31380
DROP TRIGGER trg_1;
31381
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31382
f_int2 = CAST(f_char1 AS SIGNED INT),
31383
f_charbig = 'just inserted'
31384
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31386
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31387
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31388
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31389
'just inserted' FROM t0_template
31390
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31391
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
31393
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31394
f_charbig = 'updated by trigger'
31395
WHERE f_int1 = - old.f_int1;
31398
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
31400
# check trigger-8 success: 1
31401
DROP TRIGGER trg_1;
31402
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31403
f_int2 = CAST(f_char1 AS SIGNED INT),
31404
f_charbig = 'just inserted'
31405
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31407
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31409
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31410
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
31412
SET new.f_int1 = old.f_int1 + @max_row,
31413
new.f_int2 = old.f_int2 - @max_row,
31414
new.f_charbig = '####updated per update trigger####';
31417
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
31418
f_charbig = '####updated per update statement itself####';
31420
# check trigger-9 success: 1
31421
DROP TRIGGER trg_2;
31422
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31423
f_int2 = CAST(f_char1 AS SIGNED INT),
31424
f_charbig = CONCAT('===',f_char1,'===');
31425
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
31427
SET new.f_int1 = new.f_int1 + @max_row,
31428
new.f_int2 = new.f_int2 - @max_row,
31429
new.f_charbig = '####updated per update trigger####';
31432
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
31433
f_charbig = '####updated per update statement itself####';
31435
# check trigger-10 success: 1
31436
DROP TRIGGER trg_2;
31437
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31438
f_int2 = CAST(f_char1 AS SIGNED INT),
31439
f_charbig = CONCAT('===',f_char1,'===');
31440
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
31442
SET new.f_int1 = @my_max1 + @counter,
31443
new.f_int2 = @my_min2 - @counter,
31444
new.f_charbig = '####updated per insert trigger####';
31445
SET @counter = @counter + 1;
31448
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
31449
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31450
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
31451
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
31452
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
31454
DROP TRIGGER trg_3;
31456
# check trigger-11 success: 1
31458
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
31459
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
31460
AND f_charbig = '####updated per insert trigger####';
31461
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
31463
SET new.f_int1 = @my_max1 + @counter,
31464
new.f_int2 = @my_min2 - @counter,
31465
new.f_charbig = '####updated per insert trigger####';
31466
SET @counter = @counter + 1;
31469
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
31470
INSERT INTO t1 (f_char1, f_char2, f_charbig)
31471
SELECT CAST(f_int1 AS CHAR),
31472
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
31473
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
31475
DROP TRIGGER trg_3;
31477
# check trigger-12 success: 1
31479
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
31480
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
31481
AND f_charbig = '####updated per insert trigger####';
31483
Table Op Msg_type Msg_text
31484
test.t1 analyze status OK
31485
CHECK TABLE t1 EXTENDED;
31486
Table Op Msg_type Msg_text
31487
test.t1 check status OK
31488
CHECKSUM TABLE t1 EXTENDED;
31490
test.t1 <some_value>
31492
Table Op Msg_type Msg_text
31493
test.t1 optimize status OK
31494
# check layout success: 1
31495
REPAIR TABLE t1 EXTENDED;
31496
Table Op Msg_type Msg_text
31497
test.t1 repair status OK
31498
# check layout success: 1
31501
# check TRUNCATE success: 1
31502
# check layout success: 1
31503
# End usability test (inc/partition_check.inc)
31510
f_charbig VARCHAR(1000)
31511
, UNIQUE INDEX uidx (f_int2,f_int1)
31513
PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
31514
(PARTITION part1 VALUES LESS THAN (0)
31515
(SUBPARTITION subpart11, SUBPARTITION subpart12),
31516
PARTITION part2 VALUES LESS THAN (5)
31517
(SUBPARTITION subpart21, SUBPARTITION subpart22),
31518
PARTITION part3 VALUES LESS THAN (10)
31519
(SUBPARTITION subpart31, SUBPARTITION subpart32),
31520
PARTITION part4 VALUES LESS THAN (2147483646)
31521
(SUBPARTITION subpart41, SUBPARTITION subpart42));
31522
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
31523
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
31524
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
31525
ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
31526
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
31527
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
31528
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
31529
# Start usability test (inc/partition_check.inc)
31531
SHOW CREATE TABLE t1;
31533
t1 CREATE TABLE `t1` (
31534
`f_int1` bigint(20) DEFAULT NULL,
31535
`f_int2` bigint(20) DEFAULT NULL,
31536
`f_char1` char(20) DEFAULT NULL,
31537
`f_char2` char(20) DEFAULT NULL,
31538
`f_charbig` varchar(1000) DEFAULT NULL,
31539
UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
31540
) ENGINE=MyISAM DEFAULT CHARSET=latin1
31541
/*!50100 PARTITION BY RANGE (f_int1)
31542
SUBPARTITION BY KEY (f_int1)
31543
(PARTITION part1 VALUES LESS THAN (0)
31544
(SUBPARTITION subpart11 ENGINE = MyISAM,
31545
SUBPARTITION subpart12 ENGINE = MyISAM),
31546
PARTITION part2 VALUES LESS THAN (5)
31547
(SUBPARTITION subpart21 ENGINE = MyISAM,
31548
SUBPARTITION subpart22 ENGINE = MyISAM),
31549
PARTITION part3 VALUES LESS THAN (10)
31550
(SUBPARTITION subpart31 ENGINE = MyISAM,
31551
SUBPARTITION subpart32 ENGINE = MyISAM),
31552
PARTITION part4 VALUES LESS THAN (2147483646)
31553
(SUBPARTITION subpart41 ENGINE = MyISAM,
31554
SUBPARTITION subpart42 ENGINE = MyISAM)) */
31557
t1#P#part1#SP#subpart11.MYD
31558
t1#P#part1#SP#subpart11.MYI
31559
t1#P#part1#SP#subpart12.MYD
31560
t1#P#part1#SP#subpart12.MYI
31561
t1#P#part2#SP#subpart21.MYD
31562
t1#P#part2#SP#subpart21.MYI
31563
t1#P#part2#SP#subpart22.MYD
31564
t1#P#part2#SP#subpart22.MYI
31565
t1#P#part3#SP#subpart31.MYD
31566
t1#P#part3#SP#subpart31.MYI
31567
t1#P#part3#SP#subpart32.MYD
31568
t1#P#part3#SP#subpart32.MYI
31569
t1#P#part4#SP#subpart41.MYD
31570
t1#P#part4#SP#subpart41.MYI
31571
t1#P#part4#SP#subpart42.MYD
31572
t1#P#part4#SP#subpart42.MYI
31576
# check prerequisites-1 success: 1
31577
# check COUNT(*) success: 1
31578
# check MIN/MAX(f_int1) success: 1
31579
# check MIN/MAX(f_int2) success: 1
31580
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31581
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
31582
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
31583
WHERE f_int1 IN (2,3);
31584
ERROR 23000: Duplicate entry '2-2' for key 'uidx'
31585
# check prerequisites-3 success: 1
31586
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
31587
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31588
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
31589
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
31590
WHERE f_int1 IN (2,3);
31591
DELETE FROM t1 WHERE f_charbig = 'delete me';
31592
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31593
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
31594
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
31595
WHERE f_int1 IN (2,3);
31596
DELETE FROM t1 WHERE f_charbig = 'delete me';
31597
# check read via f_int1 success: 1
31598
# check read via f_int2 success: 1
31600
# check multiple-1 success: 1
31601
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
31603
# check multiple-2 success: 1
31604
INSERT INTO t1 SELECT * FROM t0_template
31605
WHERE MOD(f_int1,3) = 0;
31607
# check multiple-3 success: 1
31608
UPDATE t1 SET f_int1 = f_int1 + @max_row
31609
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
31610
AND @max_row_div2 + @max_row_div4;
31612
# check multiple-4 success: 1
31614
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
31615
AND @max_row_div2 + @max_row_div4 + @max_row;
31617
# check multiple-5 success: 1
31618
SELECT COUNT(*) INTO @try_count FROM t0_template
31619
WHERE MOD(f_int1,3) = 0
31620
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
31621
SELECT COUNT(*) INTO @clash_count
31622
FROM t1 INNER JOIN t0_template USING(f_int1)
31623
WHERE MOD(f_int1,3) = 0
31624
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
31625
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
31627
SET f_int1 = @cur_value , f_int2 = @cur_value,
31628
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
31629
f_charbig = '#SINGLE#';
31631
# check single-1 success: 1
31632
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
31634
SET f_int1 = @cur_value , f_int2 = @cur_value,
31635
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
31636
f_charbig = '#SINGLE#';
31638
# check single-2 success: 1
31639
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
31640
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
31641
UPDATE t1 SET f_int1 = @cur_value2
31642
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
31644
# check single-3 success: 1
31645
SET @cur_value1= -1;
31646
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
31647
UPDATE t1 SET f_int1 = @cur_value1
31648
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
31650
# check single-4 success: 1
31651
SELECT MAX(f_int1) INTO @cur_value FROM t1;
31652
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
31654
# check single-5 success: 1
31655
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
31657
# check single-6 success: 1
31658
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
31659
ERROR HY000: Table has no partition for value 2147483647
31660
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
31661
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
31662
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
31663
f_charbig = '#NULL#';
31665
SET f_int1 = NULL , f_int2 = -@max_row,
31666
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
31667
f_charbig = '#NULL#';
31668
# check null success: 1
31670
# check null-1 success: 1
31671
UPDATE t1 SET f_int1 = -@max_row
31672
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
31673
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
31675
# check null-2 success: 1
31676
UPDATE t1 SET f_int1 = NULL
31677
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
31678
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
31680
# check null-3 success: 1
31682
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
31683
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
31685
# check null-4 success: 1
31687
WHERE f_int1 = 0 AND f_int2 = 0
31688
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
31689
AND f_charbig = '#NULL#';
31690
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31691
SELECT f_int1, f_int1, '', '', 'was inserted'
31692
FROM t0_template source_tab
31693
WHERE MOD(f_int1,3) = 0
31694
AND f_int1 BETWEEN @max_row_div2 AND @max_row
31696
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
31697
f_int2 = 2 * @max_row + source_tab.f_int1,
31698
f_charbig = 'was updated';
31700
# check unique-1-a success: 1
31702
# check unique-1-b success: 1
31703
DELETE FROM t1 WHERE f_charbig = 'was inserted';
31704
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31705
f_int2 = CAST(f_char1 AS SIGNED INT),
31706
f_charbig = CONCAT('===',f_char1,'===')
31707
WHERE f_charbig = 'was updated';
31708
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31709
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
31710
FROM t0_template source_tab
31711
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
31713
# check replace success: 1
31715
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
31717
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
31718
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
31719
UPDATE t1 SET f_int2 = f_int1,
31720
f_char1 = CAST(f_int1 AS CHAR),
31721
f_char2 = CAST(f_int1 AS CHAR),
31722
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
31723
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
31725
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31726
SELECT f_int1, f_int1, '', '', 'was inserted'
31727
FROM t0_template source_tab
31728
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
31730
# check transactions-1 success: 1
31733
# check transactions-2 success: 1
31736
# check transactions-3 success: 1
31737
DELETE FROM t1 WHERE f_charbig = 'was inserted';
31741
# check transactions-4 success: 1
31742
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31743
SELECT f_int1, f_int1, '', '', 'was inserted'
31744
FROM t0_template source_tab
31745
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
31747
# check transactions-5 success: 1
31750
Warning 1196 Some non-transactional changed tables couldn't be rolled back
31752
# check transactions-6 success: 1
31753
# INFO: Storage engine used for t1 seems to be not transactional.
31756
# check transactions-7 success: 1
31757
DELETE FROM t1 WHERE f_charbig = 'was inserted';
31759
SET @@session.sql_mode = 'traditional';
31760
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
31761
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31762
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
31763
'', '', 'was inserted' FROM t0_template
31764
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
31765
ERROR 22012: Division by 0
31768
# check transactions-8 success: 1
31769
# INFO: Storage engine used for t1 seems to be unable to revert
31770
# changes made by the failing statement.
31771
SET @@session.sql_mode = '';
31773
DELETE FROM t1 WHERE f_charbig = 'was inserted';
31775
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
31777
# check special-1 success: 1
31778
UPDATE t1 SET f_charbig = '';
31780
# check special-2 success: 1
31781
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
31782
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
31783
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
31784
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31785
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31786
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31787
'just inserted' FROM t0_template
31788
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31789
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
31791
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31792
f_charbig = 'updated by trigger'
31793
WHERE f_int1 = new.f_int1;
31795
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31796
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
31797
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31799
# check trigger-1 success: 1
31800
DROP TRIGGER trg_1;
31801
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31802
f_int2 = CAST(f_char1 AS SIGNED INT),
31803
f_charbig = 'just inserted'
31804
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31806
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31807
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31808
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31809
'just inserted' FROM t0_template
31810
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31811
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
31813
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31814
f_charbig = 'updated by trigger'
31815
WHERE f_int1 = new.f_int1;
31817
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31818
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
31819
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31821
# check trigger-2 success: 1
31822
DROP TRIGGER trg_1;
31823
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31824
f_int2 = CAST(f_char1 AS SIGNED INT),
31825
f_charbig = 'just inserted'
31826
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31828
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31829
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31830
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31831
'just inserted' FROM t0_template
31832
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31833
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
31835
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31836
f_charbig = 'updated by trigger'
31837
WHERE f_int1 = new.f_int1;
31839
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
31840
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
31842
# check trigger-3 success: 1
31843
DROP TRIGGER trg_1;
31844
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31845
f_int2 = CAST(f_char1 AS SIGNED INT),
31846
f_charbig = 'just inserted'
31847
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31849
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31850
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31851
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31852
'just inserted' FROM t0_template
31853
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31854
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
31856
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31857
f_charbig = 'updated by trigger'
31858
WHERE f_int1 = - old.f_int1;
31860
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
31861
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
31863
# check trigger-4 success: 1
31864
DROP TRIGGER trg_1;
31865
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31866
f_int2 = CAST(f_char1 AS SIGNED INT),
31867
f_charbig = 'just inserted'
31868
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31870
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31871
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31872
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31873
'just inserted' FROM t0_template
31874
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31875
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
31877
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31878
f_charbig = 'updated by trigger'
31879
WHERE f_int1 = new.f_int1;
31881
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
31882
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
31884
# check trigger-5 success: 1
31885
DROP TRIGGER trg_1;
31886
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31887
f_int2 = CAST(f_char1 AS SIGNED INT),
31888
f_charbig = 'just inserted'
31889
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31891
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31892
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31893
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31894
'just inserted' FROM t0_template
31895
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31896
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
31898
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31899
f_charbig = 'updated by trigger'
31900
WHERE f_int1 = - old.f_int1;
31902
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
31903
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
31905
# check trigger-6 success: 1
31906
DROP TRIGGER trg_1;
31907
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31908
f_int2 = CAST(f_char1 AS SIGNED INT),
31909
f_charbig = 'just inserted'
31910
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31912
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31913
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31914
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31915
'just inserted' FROM t0_template
31916
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31917
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
31919
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31920
f_charbig = 'updated by trigger'
31921
WHERE f_int1 = - old.f_int1;
31924
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
31926
# check trigger-7 success: 1
31927
DROP TRIGGER trg_1;
31928
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31929
f_int2 = CAST(f_char1 AS SIGNED INT),
31930
f_charbig = 'just inserted'
31931
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31933
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31934
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31935
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31936
'just inserted' FROM t0_template
31937
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31938
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
31940
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31941
f_charbig = 'updated by trigger'
31942
WHERE f_int1 = - old.f_int1;
31945
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
31947
# check trigger-8 success: 1
31948
DROP TRIGGER trg_1;
31949
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31950
f_int2 = CAST(f_char1 AS SIGNED INT),
31951
f_charbig = 'just inserted'
31952
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31954
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31956
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31957
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
31959
SET new.f_int1 = old.f_int1 + @max_row,
31960
new.f_int2 = old.f_int2 - @max_row,
31961
new.f_charbig = '####updated per update trigger####';
31964
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
31965
f_charbig = '####updated per update statement itself####';
31967
# check trigger-9 success: 1
31968
DROP TRIGGER trg_2;
31969
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31970
f_int2 = CAST(f_char1 AS SIGNED INT),
31971
f_charbig = CONCAT('===',f_char1,'===');
31972
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
31974
SET new.f_int1 = new.f_int1 + @max_row,
31975
new.f_int2 = new.f_int2 - @max_row,
31976
new.f_charbig = '####updated per update trigger####';
31979
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
31980
f_charbig = '####updated per update statement itself####';
31982
# check trigger-10 success: 1
31983
DROP TRIGGER trg_2;
31984
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31985
f_int2 = CAST(f_char1 AS SIGNED INT),
31986
f_charbig = CONCAT('===',f_char1,'===');
31987
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
31989
SET new.f_int1 = @my_max1 + @counter,
31990
new.f_int2 = @my_min2 - @counter,
31991
new.f_charbig = '####updated per insert trigger####';
31992
SET @counter = @counter + 1;
31995
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
31996
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31997
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
31998
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
31999
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
32001
DROP TRIGGER trg_3;
32003
# check trigger-11 success: 1
32005
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
32006
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
32007
AND f_charbig = '####updated per insert trigger####';
32008
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
32010
SET new.f_int1 = @my_max1 + @counter,
32011
new.f_int2 = @my_min2 - @counter,
32012
new.f_charbig = '####updated per insert trigger####';
32013
SET @counter = @counter + 1;
32016
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
32017
INSERT INTO t1 (f_char1, f_char2, f_charbig)
32018
SELECT CAST(f_int1 AS CHAR),
32019
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
32020
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
32022
DROP TRIGGER trg_3;
32024
# check trigger-12 success: 1
32026
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
32027
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
32028
AND f_charbig = '####updated per insert trigger####';
32030
Table Op Msg_type Msg_text
32031
test.t1 analyze status OK
32032
CHECK TABLE t1 EXTENDED;
32033
Table Op Msg_type Msg_text
32034
test.t1 check status OK
32035
CHECKSUM TABLE t1 EXTENDED;
32037
test.t1 <some_value>
32039
Table Op Msg_type Msg_text
32040
test.t1 optimize status OK
32041
# check layout success: 1
32042
REPAIR TABLE t1 EXTENDED;
32043
Table Op Msg_type Msg_text
32044
test.t1 repair status OK
32045
# check layout success: 1
32048
# check TRUNCATE success: 1
32049
# check layout success: 1
32050
# End usability test (inc/partition_check.inc)
32057
f_charbig VARCHAR(1000)
32058
, UNIQUE INDEX uidx (f_int2,f_int1)
32060
PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
32061
(PARTITION part1 VALUES IN (0)
32062
(SUBPARTITION sp11, SUBPARTITION sp12),
32063
PARTITION part2 VALUES IN (1)
32064
(SUBPARTITION sp21, SUBPARTITION sp22),
32065
PARTITION part3 VALUES IN (2)
32066
(SUBPARTITION sp31, SUBPARTITION sp32),
32067
PARTITION part4 VALUES IN (NULL)
32068
(SUBPARTITION sp41, SUBPARTITION sp42));
32069
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
32070
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
32071
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
32072
ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
32073
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
32074
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
32075
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
32076
# Start usability test (inc/partition_check.inc)
32078
SHOW CREATE TABLE t1;
32080
t1 CREATE TABLE `t1` (
32081
`f_int1` bigint(20) DEFAULT NULL,
32082
`f_int2` bigint(20) DEFAULT NULL,
32083
`f_char1` char(20) DEFAULT NULL,
32084
`f_char2` char(20) DEFAULT NULL,
32085
`f_charbig` varchar(1000) DEFAULT NULL,
32086
UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
32087
) ENGINE=MyISAM DEFAULT CHARSET=latin1
32088
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
32089
SUBPARTITION BY HASH (f_int1 + 1)
32090
(PARTITION part1 VALUES IN (0)
32091
(SUBPARTITION sp11 ENGINE = MyISAM,
32092
SUBPARTITION sp12 ENGINE = MyISAM),
32093
PARTITION part2 VALUES IN (1)
32094
(SUBPARTITION sp21 ENGINE = MyISAM,
32095
SUBPARTITION sp22 ENGINE = MyISAM),
32096
PARTITION part3 VALUES IN (2)
32097
(SUBPARTITION sp31 ENGINE = MyISAM,
32098
SUBPARTITION sp32 ENGINE = MyISAM),
32099
PARTITION part4 VALUES IN (NULL)
32100
(SUBPARTITION sp41 ENGINE = MyISAM,
32101
SUBPARTITION sp42 ENGINE = MyISAM)) */
32104
t1#P#part1#SP#sp11.MYD
32105
t1#P#part1#SP#sp11.MYI
32106
t1#P#part1#SP#sp12.MYD
32107
t1#P#part1#SP#sp12.MYI
32108
t1#P#part2#SP#sp21.MYD
32109
t1#P#part2#SP#sp21.MYI
32110
t1#P#part2#SP#sp22.MYD
32111
t1#P#part2#SP#sp22.MYI
32112
t1#P#part3#SP#sp31.MYD
32113
t1#P#part3#SP#sp31.MYI
32114
t1#P#part3#SP#sp32.MYD
32115
t1#P#part3#SP#sp32.MYI
32116
t1#P#part4#SP#sp41.MYD
32117
t1#P#part4#SP#sp41.MYI
32118
t1#P#part4#SP#sp42.MYD
32119
t1#P#part4#SP#sp42.MYI
32123
# check prerequisites-1 success: 1
32124
# check COUNT(*) success: 1
32125
# check MIN/MAX(f_int1) success: 1
32126
# check MIN/MAX(f_int2) success: 1
32127
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
32128
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
32129
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
32130
WHERE f_int1 IN (2,3);
32131
ERROR 23000: Duplicate entry '2-2' for key 'uidx'
32132
# check prerequisites-3 success: 1
32133
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
32134
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
32135
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
32136
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
32137
WHERE f_int1 IN (2,3);
32138
DELETE FROM t1 WHERE f_charbig = 'delete me';
32139
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
32140
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
32141
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
32142
WHERE f_int1 IN (2,3);
32143
DELETE FROM t1 WHERE f_charbig = 'delete me';
32144
# check read via f_int1 success: 1
32145
# check read via f_int2 success: 1
32147
# check multiple-1 success: 1
32148
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
32150
# check multiple-2 success: 1
32151
INSERT INTO t1 SELECT * FROM t0_template
32152
WHERE MOD(f_int1,3) = 0;
32154
# check multiple-3 success: 1
32155
UPDATE t1 SET f_int1 = f_int1 + @max_row
32156
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
32157
AND @max_row_div2 + @max_row_div4;
32159
# check multiple-4 success: 1
32161
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
32162
AND @max_row_div2 + @max_row_div4 + @max_row;
32164
# check multiple-5 success: 1
32165
SELECT COUNT(*) INTO @try_count FROM t0_template
32166
WHERE MOD(f_int1,3) = 0
32167
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
32168
SELECT COUNT(*) INTO @clash_count
32169
FROM t1 INNER JOIN t0_template USING(f_int1)
32170
WHERE MOD(f_int1,3) = 0
32171
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
32172
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
32174
SET f_int1 = @cur_value , f_int2 = @cur_value,
32175
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
32176
f_charbig = '#SINGLE#';
32178
# check single-1 success: 1
32179
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
32181
SET f_int1 = @cur_value , f_int2 = @cur_value,
32182
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
32183
f_charbig = '#SINGLE#';
32185
# check single-2 success: 1
32186
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
32187
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
32188
UPDATE t1 SET f_int1 = @cur_value2
32189
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
32191
# check single-3 success: 1
32192
SET @cur_value1= -1;
32193
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
32194
UPDATE t1 SET f_int1 = @cur_value1
32195
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
32197
# check single-4 success: 1
32198
SELECT MAX(f_int1) INTO @cur_value FROM t1;
32199
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
32201
# check single-5 success: 1
32202
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
32204
# check single-6 success: 1
32205
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
32207
# check single-7 success: 1
32208
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
32209
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
32210
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
32211
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
32212
f_charbig = '#NULL#';
32214
SET f_int1 = NULL , f_int2 = -@max_row,
32215
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
32216
f_charbig = '#NULL#';
32217
# check null success: 1
32219
# check null-1 success: 1
32220
UPDATE t1 SET f_int1 = -@max_row
32221
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
32222
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
32224
# check null-2 success: 1
32225
UPDATE t1 SET f_int1 = NULL
32226
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
32227
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
32229
# check null-3 success: 1
32231
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
32232
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
32234
# check null-4 success: 1
32236
WHERE f_int1 = 0 AND f_int2 = 0
32237
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
32238
AND f_charbig = '#NULL#';
32239
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
32240
SELECT f_int1, f_int1, '', '', 'was inserted'
32241
FROM t0_template source_tab
32242
WHERE MOD(f_int1,3) = 0
32243
AND f_int1 BETWEEN @max_row_div2 AND @max_row
32245
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
32246
f_int2 = 2 * @max_row + source_tab.f_int1,
32247
f_charbig = 'was updated';
32249
# check unique-1-a success: 1
32251
# check unique-1-b success: 1
32252
DELETE FROM t1 WHERE f_charbig = 'was inserted';
32253
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32254
f_int2 = CAST(f_char1 AS SIGNED INT),
32255
f_charbig = CONCAT('===',f_char1,'===')
32256
WHERE f_charbig = 'was updated';
32257
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
32258
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
32259
FROM t0_template source_tab
32260
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
32262
# check replace success: 1
32264
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
32266
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
32267
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
32268
UPDATE t1 SET f_int2 = f_int1,
32269
f_char1 = CAST(f_int1 AS CHAR),
32270
f_char2 = CAST(f_int1 AS CHAR),
32271
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
32272
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
32274
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
32275
SELECT f_int1, f_int1, '', '', 'was inserted'
32276
FROM t0_template source_tab
32277
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
32279
# check transactions-1 success: 1
32282
# check transactions-2 success: 1
32285
# check transactions-3 success: 1
32286
DELETE FROM t1 WHERE f_charbig = 'was inserted';
32290
# check transactions-4 success: 1
32291
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
32292
SELECT f_int1, f_int1, '', '', 'was inserted'
32293
FROM t0_template source_tab
32294
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
32296
# check transactions-5 success: 1
32299
Warning 1196 Some non-transactional changed tables couldn't be rolled back
32301
# check transactions-6 success: 1
32302
# INFO: Storage engine used for t1 seems to be not transactional.
32305
# check transactions-7 success: 1
32306
DELETE FROM t1 WHERE f_charbig = 'was inserted';
32308
SET @@session.sql_mode = 'traditional';
32309
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
32310
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
32311
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
32312
'', '', 'was inserted' FROM t0_template
32313
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
32314
ERROR 22012: Division by 0
32317
# check transactions-8 success: 1
32318
# INFO: Storage engine used for t1 seems to be unable to revert
32319
# changes made by the failing statement.
32320
SET @@session.sql_mode = '';
32322
DELETE FROM t1 WHERE f_charbig = 'was inserted';
32324
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
32326
# check special-1 success: 1
32327
UPDATE t1 SET f_charbig = '';
32329
# check special-2 success: 1
32330
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
32331
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
32332
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
32333
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32334
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32335
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32336
'just inserted' FROM t0_template
32337
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32338
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
32340
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32341
f_charbig = 'updated by trigger'
32342
WHERE f_int1 = new.f_int1;
32344
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32345
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
32346
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32348
# check trigger-1 success: 1
32349
DROP TRIGGER trg_1;
32350
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32351
f_int2 = CAST(f_char1 AS SIGNED INT),
32352
f_charbig = 'just inserted'
32353
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32355
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32356
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32357
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32358
'just inserted' FROM t0_template
32359
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32360
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
32362
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32363
f_charbig = 'updated by trigger'
32364
WHERE f_int1 = new.f_int1;
32366
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32367
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
32368
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32370
# check trigger-2 success: 1
32371
DROP TRIGGER trg_1;
32372
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32373
f_int2 = CAST(f_char1 AS SIGNED INT),
32374
f_charbig = 'just inserted'
32375
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32377
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32378
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32379
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32380
'just inserted' FROM t0_template
32381
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32382
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
32384
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32385
f_charbig = 'updated by trigger'
32386
WHERE f_int1 = new.f_int1;
32388
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
32389
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
32391
# check trigger-3 success: 1
32392
DROP TRIGGER trg_1;
32393
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32394
f_int2 = CAST(f_char1 AS SIGNED INT),
32395
f_charbig = 'just inserted'
32396
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32398
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32399
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32400
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32401
'just inserted' FROM t0_template
32402
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32403
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
32405
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32406
f_charbig = 'updated by trigger'
32407
WHERE f_int1 = - old.f_int1;
32409
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
32410
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
32412
# check trigger-4 success: 1
32413
DROP TRIGGER trg_1;
32414
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32415
f_int2 = CAST(f_char1 AS SIGNED INT),
32416
f_charbig = 'just inserted'
32417
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32419
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32420
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32421
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32422
'just inserted' FROM t0_template
32423
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32424
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
32426
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32427
f_charbig = 'updated by trigger'
32428
WHERE f_int1 = new.f_int1;
32430
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
32431
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
32433
# check trigger-5 success: 1
32434
DROP TRIGGER trg_1;
32435
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32436
f_int2 = CAST(f_char1 AS SIGNED INT),
32437
f_charbig = 'just inserted'
32438
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32440
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32441
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32442
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32443
'just inserted' FROM t0_template
32444
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32445
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
32447
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32448
f_charbig = 'updated by trigger'
32449
WHERE f_int1 = - old.f_int1;
32451
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
32452
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
32454
# check trigger-6 success: 1
32455
DROP TRIGGER trg_1;
32456
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32457
f_int2 = CAST(f_char1 AS SIGNED INT),
32458
f_charbig = 'just inserted'
32459
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32461
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32462
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32463
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32464
'just inserted' FROM t0_template
32465
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32466
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
32468
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32469
f_charbig = 'updated by trigger'
32470
WHERE f_int1 = - old.f_int1;
32473
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
32475
# check trigger-7 success: 1
32476
DROP TRIGGER trg_1;
32477
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32478
f_int2 = CAST(f_char1 AS SIGNED INT),
32479
f_charbig = 'just inserted'
32480
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32482
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32483
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32484
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32485
'just inserted' FROM t0_template
32486
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32487
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
32489
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32490
f_charbig = 'updated by trigger'
32491
WHERE f_int1 = - old.f_int1;
32494
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
32496
# check trigger-8 success: 1
32497
DROP TRIGGER trg_1;
32498
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32499
f_int2 = CAST(f_char1 AS SIGNED INT),
32500
f_charbig = 'just inserted'
32501
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32503
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32505
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32506
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
32508
SET new.f_int1 = old.f_int1 + @max_row,
32509
new.f_int2 = old.f_int2 - @max_row,
32510
new.f_charbig = '####updated per update trigger####';
32513
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
32514
f_charbig = '####updated per update statement itself####';
32516
# check trigger-9 success: 1
32517
DROP TRIGGER trg_2;
32518
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32519
f_int2 = CAST(f_char1 AS SIGNED INT),
32520
f_charbig = CONCAT('===',f_char1,'===');
32521
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
32523
SET new.f_int1 = new.f_int1 + @max_row,
32524
new.f_int2 = new.f_int2 - @max_row,
32525
new.f_charbig = '####updated per update trigger####';
32528
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
32529
f_charbig = '####updated per update statement itself####';
32531
# check trigger-10 success: 1
32532
DROP TRIGGER trg_2;
32533
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32534
f_int2 = CAST(f_char1 AS SIGNED INT),
32535
f_charbig = CONCAT('===',f_char1,'===');
32536
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
32538
SET new.f_int1 = @my_max1 + @counter,
32539
new.f_int2 = @my_min2 - @counter,
32540
new.f_charbig = '####updated per insert trigger####';
32541
SET @counter = @counter + 1;
32544
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
32545
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
32546
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
32547
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
32548
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
32550
DROP TRIGGER trg_3;
32552
# check trigger-11 success: 1
32554
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
32555
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
32556
AND f_charbig = '####updated per insert trigger####';
32557
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
32559
SET new.f_int1 = @my_max1 + @counter,
32560
new.f_int2 = @my_min2 - @counter,
32561
new.f_charbig = '####updated per insert trigger####';
32562
SET @counter = @counter + 1;
32565
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
32566
INSERT INTO t1 (f_char1, f_char2, f_charbig)
32567
SELECT CAST(f_int1 AS CHAR),
32568
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
32569
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
32571
DROP TRIGGER trg_3;
32573
# check trigger-12 success: 1
32575
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
32576
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
32577
AND f_charbig = '####updated per insert trigger####';
32579
Table Op Msg_type Msg_text
32580
test.t1 analyze status OK
32581
CHECK TABLE t1 EXTENDED;
32582
Table Op Msg_type Msg_text
32583
test.t1 check status OK
32584
CHECKSUM TABLE t1 EXTENDED;
32586
test.t1 <some_value>
32588
Table Op Msg_type Msg_text
32589
test.t1 optimize status OK
32590
# check layout success: 1
32591
REPAIR TABLE t1 EXTENDED;
32592
Table Op Msg_type Msg_text
32593
test.t1 repair status OK
32594
# check layout success: 1
32597
# check TRUNCATE success: 1
32598
# check layout success: 1
32599
# End usability test (inc/partition_check.inc)
32606
f_charbig VARCHAR(1000)
32607
, UNIQUE INDEX uidx (f_int2,f_int1)
32609
PARTITION BY LIST(ABS(MOD(f_int1,2)))
32610
SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
32611
(PARTITION part1 VALUES IN (0),
32612
PARTITION part2 VALUES IN (1),
32613
PARTITION part3 VALUES IN (NULL));
32614
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
32615
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
32616
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
32617
ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
32618
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
32619
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
32620
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
32621
# Start usability test (inc/partition_check.inc)
32623
SHOW CREATE TABLE t1;
32625
t1 CREATE TABLE `t1` (
32626
`f_int1` bigint(20) DEFAULT NULL,
32627
`f_int2` bigint(20) DEFAULT NULL,
32628
`f_char1` char(20) DEFAULT NULL,
32629
`f_char2` char(20) DEFAULT NULL,
32630
`f_charbig` varchar(1000) DEFAULT NULL,
32631
UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
32632
) ENGINE=MyISAM DEFAULT CHARSET=latin1
32633
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
32634
SUBPARTITION BY KEY (f_int1)
32636
(PARTITION part1 VALUES IN (0) ENGINE = MyISAM,
32637
PARTITION part2 VALUES IN (1) ENGINE = MyISAM,
32638
PARTITION part3 VALUES IN (NULL) ENGINE = MyISAM) */
32641
t1#P#part1#SP#part1sp0.MYD
32642
t1#P#part1#SP#part1sp0.MYI
32643
t1#P#part1#SP#part1sp1.MYD
32644
t1#P#part1#SP#part1sp1.MYI
32645
t1#P#part1#SP#part1sp2.MYD
32646
t1#P#part1#SP#part1sp2.MYI
32647
t1#P#part2#SP#part2sp0.MYD
32648
t1#P#part2#SP#part2sp0.MYI
32649
t1#P#part2#SP#part2sp1.MYD
32650
t1#P#part2#SP#part2sp1.MYI
32651
t1#P#part2#SP#part2sp2.MYD
32652
t1#P#part2#SP#part2sp2.MYI
32653
t1#P#part3#SP#part3sp0.MYD
32654
t1#P#part3#SP#part3sp0.MYI
32655
t1#P#part3#SP#part3sp1.MYD
32656
t1#P#part3#SP#part3sp1.MYI
32657
t1#P#part3#SP#part3sp2.MYD
32658
t1#P#part3#SP#part3sp2.MYI
32662
# check prerequisites-1 success: 1
32663
# check COUNT(*) success: 1
32664
# check MIN/MAX(f_int1) success: 1
32665
# check MIN/MAX(f_int2) success: 1
32666
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
32667
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
32668
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
32669
WHERE f_int1 IN (2,3);
32670
ERROR 23000: Duplicate entry '2-2' for key 'uidx'
32671
# check prerequisites-3 success: 1
32672
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
32673
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
32674
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
32675
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
32676
WHERE f_int1 IN (2,3);
32677
DELETE FROM t1 WHERE f_charbig = 'delete me';
32678
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
32679
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
32680
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
32681
WHERE f_int1 IN (2,3);
32682
DELETE FROM t1 WHERE f_charbig = 'delete me';
32683
# check read via f_int1 success: 1
32684
# check read via f_int2 success: 1
32686
# check multiple-1 success: 1
32687
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
32689
# check multiple-2 success: 1
32690
INSERT INTO t1 SELECT * FROM t0_template
32691
WHERE MOD(f_int1,3) = 0;
32693
# check multiple-3 success: 1
32694
UPDATE t1 SET f_int1 = f_int1 + @max_row
32695
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
32696
AND @max_row_div2 + @max_row_div4;
32698
# check multiple-4 success: 1
32700
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
32701
AND @max_row_div2 + @max_row_div4 + @max_row;
32703
# check multiple-5 success: 1
32704
SELECT COUNT(*) INTO @try_count FROM t0_template
32705
WHERE MOD(f_int1,3) = 0
32706
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
32707
SELECT COUNT(*) INTO @clash_count
32708
FROM t1 INNER JOIN t0_template USING(f_int1)
32709
WHERE MOD(f_int1,3) = 0
32710
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
32711
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
32713
SET f_int1 = @cur_value , f_int2 = @cur_value,
32714
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
32715
f_charbig = '#SINGLE#';
32717
# check single-1 success: 1
32718
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
32720
SET f_int1 = @cur_value , f_int2 = @cur_value,
32721
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
32722
f_charbig = '#SINGLE#';
32724
# check single-2 success: 1
32725
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
32726
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
32727
UPDATE t1 SET f_int1 = @cur_value2
32728
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
32730
# check single-3 success: 1
32731
SET @cur_value1= -1;
32732
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
32733
UPDATE t1 SET f_int1 = @cur_value1
32734
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
32736
# check single-4 success: 1
32737
SELECT MAX(f_int1) INTO @cur_value FROM t1;
32738
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
32740
# check single-5 success: 1
32741
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
32743
# check single-6 success: 1
32744
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
32746
# check single-7 success: 1
32747
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
32748
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
32749
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
32750
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
32751
f_charbig = '#NULL#';
32753
SET f_int1 = NULL , f_int2 = -@max_row,
32754
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
32755
f_charbig = '#NULL#';
32756
# check null success: 1
32758
# check null-1 success: 1
32759
UPDATE t1 SET f_int1 = -@max_row
32760
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
32761
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
32763
# check null-2 success: 1
32764
UPDATE t1 SET f_int1 = NULL
32765
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
32766
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
32768
# check null-3 success: 1
32770
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
32771
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
32773
# check null-4 success: 1
32775
WHERE f_int1 = 0 AND f_int2 = 0
32776
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
32777
AND f_charbig = '#NULL#';
32778
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
32779
SELECT f_int1, f_int1, '', '', 'was inserted'
32780
FROM t0_template source_tab
32781
WHERE MOD(f_int1,3) = 0
32782
AND f_int1 BETWEEN @max_row_div2 AND @max_row
32784
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
32785
f_int2 = 2 * @max_row + source_tab.f_int1,
32786
f_charbig = 'was updated';
32788
# check unique-1-a success: 1
32790
# check unique-1-b success: 1
32791
DELETE FROM t1 WHERE f_charbig = 'was inserted';
32792
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32793
f_int2 = CAST(f_char1 AS SIGNED INT),
32794
f_charbig = CONCAT('===',f_char1,'===')
32795
WHERE f_charbig = 'was updated';
32796
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
32797
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
32798
FROM t0_template source_tab
32799
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
32801
# check replace success: 1
32803
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
32805
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
32806
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
32807
UPDATE t1 SET f_int2 = f_int1,
32808
f_char1 = CAST(f_int1 AS CHAR),
32809
f_char2 = CAST(f_int1 AS CHAR),
32810
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
32811
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
32813
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
32814
SELECT f_int1, f_int1, '', '', 'was inserted'
32815
FROM t0_template source_tab
32816
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
32818
# check transactions-1 success: 1
32821
# check transactions-2 success: 1
32824
# check transactions-3 success: 1
32825
DELETE FROM t1 WHERE f_charbig = 'was inserted';
32829
# check transactions-4 success: 1
32830
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
32831
SELECT f_int1, f_int1, '', '', 'was inserted'
32832
FROM t0_template source_tab
32833
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
32835
# check transactions-5 success: 1
32838
Warning 1196 Some non-transactional changed tables couldn't be rolled back
32840
# check transactions-6 success: 1
32841
# INFO: Storage engine used for t1 seems to be not transactional.
32844
# check transactions-7 success: 1
32845
DELETE FROM t1 WHERE f_charbig = 'was inserted';
32847
SET @@session.sql_mode = 'traditional';
32848
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
32849
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
32850
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
32851
'', '', 'was inserted' FROM t0_template
32852
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
32853
ERROR 22012: Division by 0
32856
# check transactions-8 success: 1
32857
# INFO: Storage engine used for t1 seems to be unable to revert
32858
# changes made by the failing statement.
32859
SET @@session.sql_mode = '';
32861
DELETE FROM t1 WHERE f_charbig = 'was inserted';
32863
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
32865
# check special-1 success: 1
32866
UPDATE t1 SET f_charbig = '';
32868
# check special-2 success: 1
32869
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
32870
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
32871
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
32872
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32873
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32874
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32875
'just inserted' FROM t0_template
32876
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32877
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
32879
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32880
f_charbig = 'updated by trigger'
32881
WHERE f_int1 = new.f_int1;
32883
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32884
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
32885
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32887
# check trigger-1 success: 1
32888
DROP TRIGGER trg_1;
32889
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32890
f_int2 = CAST(f_char1 AS SIGNED INT),
32891
f_charbig = 'just inserted'
32892
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32894
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32895
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32896
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32897
'just inserted' FROM t0_template
32898
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32899
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
32901
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32902
f_charbig = 'updated by trigger'
32903
WHERE f_int1 = new.f_int1;
32905
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32906
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
32907
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32909
# check trigger-2 success: 1
32910
DROP TRIGGER trg_1;
32911
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32912
f_int2 = CAST(f_char1 AS SIGNED INT),
32913
f_charbig = 'just inserted'
32914
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32916
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32917
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32918
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32919
'just inserted' FROM t0_template
32920
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32921
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
32923
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32924
f_charbig = 'updated by trigger'
32925
WHERE f_int1 = new.f_int1;
32927
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
32928
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
32930
# check trigger-3 success: 1
32931
DROP TRIGGER trg_1;
32932
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32933
f_int2 = CAST(f_char1 AS SIGNED INT),
32934
f_charbig = 'just inserted'
32935
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32937
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32938
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32939
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32940
'just inserted' FROM t0_template
32941
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32942
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
32944
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32945
f_charbig = 'updated by trigger'
32946
WHERE f_int1 = - old.f_int1;
32948
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
32949
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
32951
# check trigger-4 success: 1
32952
DROP TRIGGER trg_1;
32953
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32954
f_int2 = CAST(f_char1 AS SIGNED INT),
32955
f_charbig = 'just inserted'
32956
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32958
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32959
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32960
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32961
'just inserted' FROM t0_template
32962
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32963
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
32965
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32966
f_charbig = 'updated by trigger'
32967
WHERE f_int1 = new.f_int1;
32969
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
32970
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
32972
# check trigger-5 success: 1
32973
DROP TRIGGER trg_1;
32974
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32975
f_int2 = CAST(f_char1 AS SIGNED INT),
32976
f_charbig = 'just inserted'
32977
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32979
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32980
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32981
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32982
'just inserted' FROM t0_template
32983
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32984
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
32986
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32987
f_charbig = 'updated by trigger'
32988
WHERE f_int1 = - old.f_int1;
32990
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
32991
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
32993
# check trigger-6 success: 1
32994
DROP TRIGGER trg_1;
32995
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32996
f_int2 = CAST(f_char1 AS SIGNED INT),
32997
f_charbig = 'just inserted'
32998
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33000
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33001
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33002
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33003
'just inserted' FROM t0_template
33004
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33005
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
33007
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33008
f_charbig = 'updated by trigger'
33009
WHERE f_int1 = - old.f_int1;
33012
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
33014
# check trigger-7 success: 1
33015
DROP TRIGGER trg_1;
33016
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33017
f_int2 = CAST(f_char1 AS SIGNED INT),
33018
f_charbig = 'just inserted'
33019
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33021
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33022
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33023
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33024
'just inserted' FROM t0_template
33025
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33026
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
33028
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33029
f_charbig = 'updated by trigger'
33030
WHERE f_int1 = - old.f_int1;
33033
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
33035
# check trigger-8 success: 1
33036
DROP TRIGGER trg_1;
33037
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33038
f_int2 = CAST(f_char1 AS SIGNED INT),
33039
f_charbig = 'just inserted'
33040
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33042
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33044
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33045
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
33047
SET new.f_int1 = old.f_int1 + @max_row,
33048
new.f_int2 = old.f_int2 - @max_row,
33049
new.f_charbig = '####updated per update trigger####';
33052
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
33053
f_charbig = '####updated per update statement itself####';
33055
# check trigger-9 success: 1
33056
DROP TRIGGER trg_2;
33057
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33058
f_int2 = CAST(f_char1 AS SIGNED INT),
33059
f_charbig = CONCAT('===',f_char1,'===');
33060
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
33062
SET new.f_int1 = new.f_int1 + @max_row,
33063
new.f_int2 = new.f_int2 - @max_row,
33064
new.f_charbig = '####updated per update trigger####';
33067
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
33068
f_charbig = '####updated per update statement itself####';
33070
# check trigger-10 success: 1
33071
DROP TRIGGER trg_2;
33072
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33073
f_int2 = CAST(f_char1 AS SIGNED INT),
33074
f_charbig = CONCAT('===',f_char1,'===');
33075
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
33077
SET new.f_int1 = @my_max1 + @counter,
33078
new.f_int2 = @my_min2 - @counter,
33079
new.f_charbig = '####updated per insert trigger####';
33080
SET @counter = @counter + 1;
33083
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
33084
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
33085
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
33086
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
33087
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
33089
DROP TRIGGER trg_3;
33091
# check trigger-11 success: 1
33093
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
33094
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
33095
AND f_charbig = '####updated per insert trigger####';
33096
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
33098
SET new.f_int1 = @my_max1 + @counter,
33099
new.f_int2 = @my_min2 - @counter,
33100
new.f_charbig = '####updated per insert trigger####';
33101
SET @counter = @counter + 1;
33104
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
33105
INSERT INTO t1 (f_char1, f_char2, f_charbig)
33106
SELECT CAST(f_int1 AS CHAR),
33107
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
33108
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
33110
DROP TRIGGER trg_3;
33112
# check trigger-12 success: 1
33114
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
33115
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
33116
AND f_charbig = '####updated per insert trigger####';
33118
Table Op Msg_type Msg_text
33119
test.t1 analyze status OK
33120
CHECK TABLE t1 EXTENDED;
33121
Table Op Msg_type Msg_text
33122
test.t1 check status OK
33123
CHECKSUM TABLE t1 EXTENDED;
33125
test.t1 <some_value>
33127
Table Op Msg_type Msg_text
33128
test.t1 optimize status OK
33129
# check layout success: 1
33130
REPAIR TABLE t1 EXTENDED;
33131
Table Op Msg_type Msg_text
33132
test.t1 repair status OK
33133
# check layout success: 1
33136
# check TRUNCATE success: 1
33137
# check layout success: 1
33138
# End usability test (inc/partition_check.inc)
33140
DROP TABLE IF EXISTS t1;
33146
f_charbig VARCHAR(1000)
33147
, UNIQUE INDEX uidx (f_int2,f_int1)
33149
PARTITION BY HASH(f_int1 + f_int2) PARTITIONS 2;
33150
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
33151
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
33152
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
33153
ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
33154
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
33155
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
33156
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
33157
# Start usability test (inc/partition_check.inc)
33159
SHOW CREATE TABLE t1;
33161
t1 CREATE TABLE `t1` (
33162
`f_int1` bigint(20) DEFAULT NULL,
33163
`f_int2` bigint(20) DEFAULT NULL,
33164
`f_char1` char(20) DEFAULT NULL,
33165
`f_char2` char(20) DEFAULT NULL,
33166
`f_charbig` varchar(1000) DEFAULT NULL,
33167
UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
33168
) ENGINE=MyISAM DEFAULT CHARSET=latin1
33169
/*!50100 PARTITION BY HASH (f_int1 + f_int2)
33180
# check prerequisites-1 success: 1
33181
# check COUNT(*) success: 1
33182
# check MIN/MAX(f_int1) success: 1
33183
# check MIN/MAX(f_int2) success: 1
33184
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
33185
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
33186
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
33187
WHERE f_int1 IN (2,3);
33188
ERROR 23000: Duplicate entry '2-2' for key 'uidx'
33189
# check prerequisites-3 success: 1
33190
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
33191
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
33192
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
33193
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
33194
WHERE f_int1 IN (2,3);
33195
DELETE FROM t1 WHERE f_charbig = 'delete me';
33196
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
33197
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
33198
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
33199
WHERE f_int1 IN (2,3);
33200
DELETE FROM t1 WHERE f_charbig = 'delete me';
33201
# check read via f_int1 success: 1
33202
# check read via f_int2 success: 1
33204
# check multiple-1 success: 1
33205
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
33207
# check multiple-2 success: 1
33208
INSERT INTO t1 SELECT * FROM t0_template
33209
WHERE MOD(f_int1,3) = 0;
33211
# check multiple-3 success: 1
33212
UPDATE t1 SET f_int1 = f_int1 + @max_row
33213
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
33214
AND @max_row_div2 + @max_row_div4;
33216
# check multiple-4 success: 1
33218
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
33219
AND @max_row_div2 + @max_row_div4 + @max_row;
33221
# check multiple-5 success: 1
33222
SELECT COUNT(*) INTO @try_count FROM t0_template
33223
WHERE MOD(f_int1,3) = 0
33224
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
33225
SELECT COUNT(*) INTO @clash_count
33226
FROM t1 INNER JOIN t0_template USING(f_int1)
33227
WHERE MOD(f_int1,3) = 0
33228
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
33229
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
33231
SET f_int1 = @cur_value , f_int2 = @cur_value,
33232
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
33233
f_charbig = '#SINGLE#';
33235
# check single-1 success: 1
33236
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
33238
SET f_int1 = @cur_value , f_int2 = @cur_value,
33239
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
33240
f_charbig = '#SINGLE#';
33242
# check single-2 success: 1
33243
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
33244
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
33245
UPDATE t1 SET f_int1 = @cur_value2
33246
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
33248
# check single-3 success: 1
33249
SET @cur_value1= -1;
33250
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
33251
UPDATE t1 SET f_int1 = @cur_value1
33252
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
33254
# check single-4 success: 1
33255
SELECT MAX(f_int1) INTO @cur_value FROM t1;
33256
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
33258
# check single-5 success: 1
33259
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
33261
# check single-6 success: 1
33262
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
33264
# check single-7 success: 1
33265
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
33266
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
33267
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
33268
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
33269
f_charbig = '#NULL#';
33271
SET f_int1 = NULL , f_int2 = -@max_row,
33272
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
33273
f_charbig = '#NULL#';
33274
# check null success: 1
33276
# check null-1 success: 1
33277
UPDATE t1 SET f_int1 = -@max_row
33278
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
33279
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
33281
# check null-2 success: 1
33282
UPDATE t1 SET f_int1 = NULL
33283
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
33284
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
33286
# check null-3 success: 1
33288
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
33289
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
33291
# check null-4 success: 1
33293
WHERE f_int1 = 0 AND f_int2 = 0
33294
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
33295
AND f_charbig = '#NULL#';
33296
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
33297
SELECT f_int1, f_int1, '', '', 'was inserted'
33298
FROM t0_template source_tab
33299
WHERE MOD(f_int1,3) = 0
33300
AND f_int1 BETWEEN @max_row_div2 AND @max_row
33302
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
33303
f_int2 = 2 * @max_row + source_tab.f_int1,
33304
f_charbig = 'was updated';
33306
# check unique-1-a success: 1
33308
# check unique-1-b success: 1
33309
DELETE FROM t1 WHERE f_charbig = 'was inserted';
33310
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33311
f_int2 = CAST(f_char1 AS SIGNED INT),
33312
f_charbig = CONCAT('===',f_char1,'===')
33313
WHERE f_charbig = 'was updated';
33314
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
33315
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
33316
FROM t0_template source_tab
33317
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
33319
# check replace success: 1
33321
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
33323
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
33324
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
33325
UPDATE t1 SET f_int2 = f_int1,
33326
f_char1 = CAST(f_int1 AS CHAR),
33327
f_char2 = CAST(f_int1 AS CHAR),
33328
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
33329
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
33331
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
33332
SELECT f_int1, f_int1, '', '', 'was inserted'
33333
FROM t0_template source_tab
33334
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
33336
# check transactions-1 success: 1
33339
# check transactions-2 success: 1
33342
# check transactions-3 success: 1
33343
DELETE FROM t1 WHERE f_charbig = 'was inserted';
33347
# check transactions-4 success: 1
33348
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
33349
SELECT f_int1, f_int1, '', '', 'was inserted'
33350
FROM t0_template source_tab
33351
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
33353
# check transactions-5 success: 1
33356
Warning 1196 Some non-transactional changed tables couldn't be rolled back
33358
# check transactions-6 success: 1
33359
# INFO: Storage engine used for t1 seems to be not transactional.
33362
# check transactions-7 success: 1
33363
DELETE FROM t1 WHERE f_charbig = 'was inserted';
33365
SET @@session.sql_mode = 'traditional';
33366
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
33367
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
33368
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
33369
'', '', 'was inserted' FROM t0_template
33370
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
33371
ERROR 22012: Division by 0
33374
# check transactions-8 success: 1
33375
# INFO: Storage engine used for t1 seems to be unable to revert
33376
# changes made by the failing statement.
33377
SET @@session.sql_mode = '';
33379
DELETE FROM t1 WHERE f_charbig = 'was inserted';
33381
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
33383
# check special-1 success: 1
33384
UPDATE t1 SET f_charbig = '';
33386
# check special-2 success: 1
33387
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
33388
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
33389
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
33390
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33391
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33392
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33393
'just inserted' FROM t0_template
33394
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33395
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
33397
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33398
f_charbig = 'updated by trigger'
33399
WHERE f_int1 = new.f_int1;
33401
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33402
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
33403
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33405
# check trigger-1 success: 1
33406
DROP TRIGGER trg_1;
33407
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33408
f_int2 = CAST(f_char1 AS SIGNED INT),
33409
f_charbig = 'just inserted'
33410
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33412
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33413
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33414
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33415
'just inserted' FROM t0_template
33416
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33417
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
33419
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33420
f_charbig = 'updated by trigger'
33421
WHERE f_int1 = new.f_int1;
33423
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33424
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
33425
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33427
# check trigger-2 success: 1
33428
DROP TRIGGER trg_1;
33429
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33430
f_int2 = CAST(f_char1 AS SIGNED INT),
33431
f_charbig = 'just inserted'
33432
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33434
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33435
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33436
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33437
'just inserted' FROM t0_template
33438
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33439
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
33441
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33442
f_charbig = 'updated by trigger'
33443
WHERE f_int1 = new.f_int1;
33445
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
33446
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
33448
# check trigger-3 success: 1
33449
DROP TRIGGER trg_1;
33450
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33451
f_int2 = CAST(f_char1 AS SIGNED INT),
33452
f_charbig = 'just inserted'
33453
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33455
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33456
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33457
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33458
'just inserted' FROM t0_template
33459
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33460
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
33462
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33463
f_charbig = 'updated by trigger'
33464
WHERE f_int1 = - old.f_int1;
33466
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
33467
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
33469
# check trigger-4 success: 1
33470
DROP TRIGGER trg_1;
33471
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33472
f_int2 = CAST(f_char1 AS SIGNED INT),
33473
f_charbig = 'just inserted'
33474
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33476
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33477
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33478
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33479
'just inserted' FROM t0_template
33480
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33481
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
33483
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33484
f_charbig = 'updated by trigger'
33485
WHERE f_int1 = new.f_int1;
33487
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
33488
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
33490
# check trigger-5 success: 1
33491
DROP TRIGGER trg_1;
33492
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33493
f_int2 = CAST(f_char1 AS SIGNED INT),
33494
f_charbig = 'just inserted'
33495
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33497
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33498
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33499
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33500
'just inserted' FROM t0_template
33501
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33502
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
33504
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33505
f_charbig = 'updated by trigger'
33506
WHERE f_int1 = - old.f_int1;
33508
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
33509
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
33511
# check trigger-6 success: 1
33512
DROP TRIGGER trg_1;
33513
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33514
f_int2 = CAST(f_char1 AS SIGNED INT),
33515
f_charbig = 'just inserted'
33516
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33518
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33519
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33520
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33521
'just inserted' FROM t0_template
33522
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33523
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
33525
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33526
f_charbig = 'updated by trigger'
33527
WHERE f_int1 = - old.f_int1;
33530
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
33532
# check trigger-7 success: 1
33533
DROP TRIGGER trg_1;
33534
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33535
f_int2 = CAST(f_char1 AS SIGNED INT),
33536
f_charbig = 'just inserted'
33537
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33539
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33540
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33541
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33542
'just inserted' FROM t0_template
33543
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33544
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
33546
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33547
f_charbig = 'updated by trigger'
33548
WHERE f_int1 = - old.f_int1;
33551
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
33553
# check trigger-8 success: 1
33554
DROP TRIGGER trg_1;
33555
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33556
f_int2 = CAST(f_char1 AS SIGNED INT),
33557
f_charbig = 'just inserted'
33558
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33560
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33562
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33563
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
33565
SET new.f_int1 = old.f_int1 + @max_row,
33566
new.f_int2 = old.f_int2 - @max_row,
33567
new.f_charbig = '####updated per update trigger####';
33570
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
33571
f_charbig = '####updated per update statement itself####';
33573
# check trigger-9 success: 1
33574
DROP TRIGGER trg_2;
33575
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33576
f_int2 = CAST(f_char1 AS SIGNED INT),
33577
f_charbig = CONCAT('===',f_char1,'===');
33578
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
33580
SET new.f_int1 = new.f_int1 + @max_row,
33581
new.f_int2 = new.f_int2 - @max_row,
33582
new.f_charbig = '####updated per update trigger####';
33585
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
33586
f_charbig = '####updated per update statement itself####';
33588
# check trigger-10 success: 1
33589
DROP TRIGGER trg_2;
33590
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33591
f_int2 = CAST(f_char1 AS SIGNED INT),
33592
f_charbig = CONCAT('===',f_char1,'===');
33593
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
33595
SET new.f_int1 = @my_max1 + @counter,
33596
new.f_int2 = @my_min2 - @counter,
33597
new.f_charbig = '####updated per insert trigger####';
33598
SET @counter = @counter + 1;
33601
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
33602
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
33603
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
33604
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
33605
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
33607
DROP TRIGGER trg_3;
33609
# check trigger-11 success: 1
33611
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
33612
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
33613
AND f_charbig = '####updated per insert trigger####';
33614
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
33616
SET new.f_int1 = @my_max1 + @counter,
33617
new.f_int2 = @my_min2 - @counter,
33618
new.f_charbig = '####updated per insert trigger####';
33619
SET @counter = @counter + 1;
33622
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
33623
INSERT INTO t1 (f_char1, f_char2, f_charbig)
33624
SELECT CAST(f_int1 AS CHAR),
33625
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
33626
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
33628
DROP TRIGGER trg_3;
33630
# check trigger-12 success: 1
33632
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
33633
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
33634
AND f_charbig = '####updated per insert trigger####';
33636
Table Op Msg_type Msg_text
33637
test.t1 analyze status OK
33638
CHECK TABLE t1 EXTENDED;
33639
Table Op Msg_type Msg_text
33640
test.t1 check status OK
33641
CHECKSUM TABLE t1 EXTENDED;
33643
test.t1 <some_value>
33645
Table Op Msg_type Msg_text
33646
test.t1 optimize status OK
33647
# check layout success: 1
33648
REPAIR TABLE t1 EXTENDED;
33649
Table Op Msg_type Msg_text
33650
test.t1 repair status OK
33651
# check layout success: 1
33654
# check TRUNCATE success: 1
33655
# check layout success: 1
33656
# End usability test (inc/partition_check.inc)
33663
f_charbig VARCHAR(1000)
33664
, UNIQUE INDEX uidx (f_int2,f_int1)
33666
PARTITION BY KEY(f_int1,f_int2) PARTITIONS 5;
33667
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
33668
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
33669
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
33670
ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
33671
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
33672
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
33673
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
33674
# Start usability test (inc/partition_check.inc)
33676
SHOW CREATE TABLE t1;
33678
t1 CREATE TABLE `t1` (
33679
`f_int1` bigint(20) DEFAULT NULL,
33680
`f_int2` bigint(20) DEFAULT NULL,
33681
`f_char1` char(20) DEFAULT NULL,
33682
`f_char2` char(20) DEFAULT NULL,
33683
`f_charbig` varchar(1000) DEFAULT NULL,
33684
UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
33685
) ENGINE=MyISAM DEFAULT CHARSET=latin1
33686
/*!50100 PARTITION BY KEY (f_int1,f_int2)
33703
# check prerequisites-1 success: 1
33704
# check COUNT(*) success: 1
33705
# check MIN/MAX(f_int1) success: 1
33706
# check MIN/MAX(f_int2) success: 1
33707
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
33708
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
33709
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
33710
WHERE f_int1 IN (2,3);
33711
ERROR 23000: Duplicate entry '2-2' for key 'uidx'
33712
# check prerequisites-3 success: 1
33713
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
33714
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
33715
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
33716
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
33717
WHERE f_int1 IN (2,3);
33718
DELETE FROM t1 WHERE f_charbig = 'delete me';
33719
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
33720
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
33721
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
33722
WHERE f_int1 IN (2,3);
33723
DELETE FROM t1 WHERE f_charbig = 'delete me';
33724
# check read via f_int1 success: 1
33725
# check read via f_int2 success: 1
33727
# check multiple-1 success: 1
33728
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
33730
# check multiple-2 success: 1
33731
INSERT INTO t1 SELECT * FROM t0_template
33732
WHERE MOD(f_int1,3) = 0;
33734
# check multiple-3 success: 1
33735
UPDATE t1 SET f_int1 = f_int1 + @max_row
33736
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
33737
AND @max_row_div2 + @max_row_div4;
33739
# check multiple-4 success: 1
33741
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
33742
AND @max_row_div2 + @max_row_div4 + @max_row;
33744
# check multiple-5 success: 1
33745
SELECT COUNT(*) INTO @try_count FROM t0_template
33746
WHERE MOD(f_int1,3) = 0
33747
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
33748
SELECT COUNT(*) INTO @clash_count
33749
FROM t1 INNER JOIN t0_template USING(f_int1)
33750
WHERE MOD(f_int1,3) = 0
33751
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
33752
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
33754
SET f_int1 = @cur_value , f_int2 = @cur_value,
33755
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
33756
f_charbig = '#SINGLE#';
33758
# check single-1 success: 1
33759
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
33761
SET f_int1 = @cur_value , f_int2 = @cur_value,
33762
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
33763
f_charbig = '#SINGLE#';
33765
# check single-2 success: 1
33766
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
33767
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
33768
UPDATE t1 SET f_int1 = @cur_value2
33769
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
33771
# check single-3 success: 1
33772
SET @cur_value1= -1;
33773
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
33774
UPDATE t1 SET f_int1 = @cur_value1
33775
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
33777
# check single-4 success: 1
33778
SELECT MAX(f_int1) INTO @cur_value FROM t1;
33779
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
33781
# check single-5 success: 1
33782
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
33784
# check single-6 success: 1
33785
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
33787
# check single-7 success: 1
33788
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
33789
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
33790
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
33791
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
33792
f_charbig = '#NULL#';
33794
SET f_int1 = NULL , f_int2 = -@max_row,
33795
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
33796
f_charbig = '#NULL#';
33797
# check null success: 1
33799
# check null-1 success: 1
33800
UPDATE t1 SET f_int1 = -@max_row
33801
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
33802
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
33804
# check null-2 success: 1
33805
UPDATE t1 SET f_int1 = NULL
33806
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
33807
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
33809
# check null-3 success: 1
33811
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
33812
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
33814
# check null-4 success: 1
33816
WHERE f_int1 = 0 AND f_int2 = 0
33817
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
33818
AND f_charbig = '#NULL#';
33819
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
33820
SELECT f_int1, f_int1, '', '', 'was inserted'
33821
FROM t0_template source_tab
33822
WHERE MOD(f_int1,3) = 0
33823
AND f_int1 BETWEEN @max_row_div2 AND @max_row
33825
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
33826
f_int2 = 2 * @max_row + source_tab.f_int1,
33827
f_charbig = 'was updated';
33829
# check unique-1-a success: 1
33831
# check unique-1-b success: 1
33832
DELETE FROM t1 WHERE f_charbig = 'was inserted';
33833
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33834
f_int2 = CAST(f_char1 AS SIGNED INT),
33835
f_charbig = CONCAT('===',f_char1,'===')
33836
WHERE f_charbig = 'was updated';
33837
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
33838
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
33839
FROM t0_template source_tab
33840
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
33842
# check replace success: 1
33844
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
33846
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
33847
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
33848
UPDATE t1 SET f_int2 = f_int1,
33849
f_char1 = CAST(f_int1 AS CHAR),
33850
f_char2 = CAST(f_int1 AS CHAR),
33851
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
33852
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
33854
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
33855
SELECT f_int1, f_int1, '', '', 'was inserted'
33856
FROM t0_template source_tab
33857
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
33859
# check transactions-1 success: 1
33862
# check transactions-2 success: 1
33865
# check transactions-3 success: 1
33866
DELETE FROM t1 WHERE f_charbig = 'was inserted';
33870
# check transactions-4 success: 1
33871
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
33872
SELECT f_int1, f_int1, '', '', 'was inserted'
33873
FROM t0_template source_tab
33874
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
33876
# check transactions-5 success: 1
33879
Warning 1196 Some non-transactional changed tables couldn't be rolled back
33881
# check transactions-6 success: 1
33882
# INFO: Storage engine used for t1 seems to be not transactional.
33885
# check transactions-7 success: 1
33886
DELETE FROM t1 WHERE f_charbig = 'was inserted';
33888
SET @@session.sql_mode = 'traditional';
33889
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
33890
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
33891
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
33892
'', '', 'was inserted' FROM t0_template
33893
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
33894
ERROR 22012: Division by 0
33897
# check transactions-8 success: 1
33898
# INFO: Storage engine used for t1 seems to be unable to revert
33899
# changes made by the failing statement.
33900
SET @@session.sql_mode = '';
33902
DELETE FROM t1 WHERE f_charbig = 'was inserted';
33904
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
33906
# check special-1 success: 1
33907
UPDATE t1 SET f_charbig = '';
33909
# check special-2 success: 1
33910
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
33911
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
33912
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
33913
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33914
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33915
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33916
'just inserted' FROM t0_template
33917
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33918
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
33920
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33921
f_charbig = 'updated by trigger'
33922
WHERE f_int1 = new.f_int1;
33924
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33925
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
33926
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33928
# check trigger-1 success: 1
33929
DROP TRIGGER trg_1;
33930
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33931
f_int2 = CAST(f_char1 AS SIGNED INT),
33932
f_charbig = 'just inserted'
33933
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33935
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33936
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33937
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33938
'just inserted' FROM t0_template
33939
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33940
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
33942
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33943
f_charbig = 'updated by trigger'
33944
WHERE f_int1 = new.f_int1;
33946
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33947
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
33948
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33950
# check trigger-2 success: 1
33951
DROP TRIGGER trg_1;
33952
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33953
f_int2 = CAST(f_char1 AS SIGNED INT),
33954
f_charbig = 'just inserted'
33955
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33957
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33958
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33959
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33960
'just inserted' FROM t0_template
33961
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33962
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
33964
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33965
f_charbig = 'updated by trigger'
33966
WHERE f_int1 = new.f_int1;
33968
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
33969
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
33971
# check trigger-3 success: 1
33972
DROP TRIGGER trg_1;
33973
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33974
f_int2 = CAST(f_char1 AS SIGNED INT),
33975
f_charbig = 'just inserted'
33976
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33978
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33979
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33980
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33981
'just inserted' FROM t0_template
33982
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33983
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
33985
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33986
f_charbig = 'updated by trigger'
33987
WHERE f_int1 = - old.f_int1;
33989
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
33990
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
33992
# check trigger-4 success: 1
33993
DROP TRIGGER trg_1;
33994
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33995
f_int2 = CAST(f_char1 AS SIGNED INT),
33996
f_charbig = 'just inserted'
33997
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33999
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34000
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34001
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34002
'just inserted' FROM t0_template
34003
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34004
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
34006
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34007
f_charbig = 'updated by trigger'
34008
WHERE f_int1 = new.f_int1;
34010
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
34011
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
34013
# check trigger-5 success: 1
34014
DROP TRIGGER trg_1;
34015
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34016
f_int2 = CAST(f_char1 AS SIGNED INT),
34017
f_charbig = 'just inserted'
34018
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34020
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34021
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34022
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34023
'just inserted' FROM t0_template
34024
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34025
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
34027
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34028
f_charbig = 'updated by trigger'
34029
WHERE f_int1 = - old.f_int1;
34031
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
34032
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
34034
# check trigger-6 success: 1
34035
DROP TRIGGER trg_1;
34036
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34037
f_int2 = CAST(f_char1 AS SIGNED INT),
34038
f_charbig = 'just inserted'
34039
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34041
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34042
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34043
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34044
'just inserted' FROM t0_template
34045
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34046
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
34048
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34049
f_charbig = 'updated by trigger'
34050
WHERE f_int1 = - old.f_int1;
34053
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
34055
# check trigger-7 success: 1
34056
DROP TRIGGER trg_1;
34057
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34058
f_int2 = CAST(f_char1 AS SIGNED INT),
34059
f_charbig = 'just inserted'
34060
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34062
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34063
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34064
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34065
'just inserted' FROM t0_template
34066
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34067
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
34069
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34070
f_charbig = 'updated by trigger'
34071
WHERE f_int1 = - old.f_int1;
34074
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
34076
# check trigger-8 success: 1
34077
DROP TRIGGER trg_1;
34078
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34079
f_int2 = CAST(f_char1 AS SIGNED INT),
34080
f_charbig = 'just inserted'
34081
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34083
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34085
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34086
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
34088
SET new.f_int1 = old.f_int1 + @max_row,
34089
new.f_int2 = old.f_int2 - @max_row,
34090
new.f_charbig = '####updated per update trigger####';
34093
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
34094
f_charbig = '####updated per update statement itself####';
34096
# check trigger-9 success: 1
34097
DROP TRIGGER trg_2;
34098
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34099
f_int2 = CAST(f_char1 AS SIGNED INT),
34100
f_charbig = CONCAT('===',f_char1,'===');
34101
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
34103
SET new.f_int1 = new.f_int1 + @max_row,
34104
new.f_int2 = new.f_int2 - @max_row,
34105
new.f_charbig = '####updated per update trigger####';
34108
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
34109
f_charbig = '####updated per update statement itself####';
34111
# check trigger-10 success: 1
34112
DROP TRIGGER trg_2;
34113
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34114
f_int2 = CAST(f_char1 AS SIGNED INT),
34115
f_charbig = CONCAT('===',f_char1,'===');
34116
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
34118
SET new.f_int1 = @my_max1 + @counter,
34119
new.f_int2 = @my_min2 - @counter,
34120
new.f_charbig = '####updated per insert trigger####';
34121
SET @counter = @counter + 1;
34124
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
34125
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
34126
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
34127
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
34128
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
34130
DROP TRIGGER trg_3;
34132
# check trigger-11 success: 1
34134
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
34135
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
34136
AND f_charbig = '####updated per insert trigger####';
34137
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
34139
SET new.f_int1 = @my_max1 + @counter,
34140
new.f_int2 = @my_min2 - @counter,
34141
new.f_charbig = '####updated per insert trigger####';
34142
SET @counter = @counter + 1;
34145
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
34146
INSERT INTO t1 (f_char1, f_char2, f_charbig)
34147
SELECT CAST(f_int1 AS CHAR),
34148
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
34149
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
34151
DROP TRIGGER trg_3;
34153
# check trigger-12 success: 1
34155
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
34156
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
34157
AND f_charbig = '####updated per insert trigger####';
34159
Table Op Msg_type Msg_text
34160
test.t1 analyze status OK
34161
CHECK TABLE t1 EXTENDED;
34162
Table Op Msg_type Msg_text
34163
test.t1 check status OK
34164
CHECKSUM TABLE t1 EXTENDED;
34166
test.t1 <some_value>
34168
Table Op Msg_type Msg_text
34169
test.t1 optimize status OK
34170
# check layout success: 1
34171
REPAIR TABLE t1 EXTENDED;
34172
Table Op Msg_type Msg_text
34173
test.t1 repair status OK
34174
# check layout success: 1
34177
# check TRUNCATE success: 1
34178
# check layout success: 1
34179
# End usability test (inc/partition_check.inc)
34186
f_charbig VARCHAR(1000)
34187
, UNIQUE INDEX uidx (f_int2,f_int1)
34189
PARTITION BY LIST(MOD(f_int1 + f_int2,4))
34190
(PARTITION part_3 VALUES IN (-3),
34191
PARTITION part_2 VALUES IN (-2),
34192
PARTITION part_1 VALUES IN (-1),
34193
PARTITION part_N VALUES IN (NULL),
34194
PARTITION part0 VALUES IN (0),
34195
PARTITION part1 VALUES IN (1),
34196
PARTITION part2 VALUES IN (2),
34197
PARTITION part3 VALUES IN (3));
34198
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
34199
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
34200
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
34201
ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
34202
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
34203
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
34204
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
34205
# Start usability test (inc/partition_check.inc)
34207
SHOW CREATE TABLE t1;
34209
t1 CREATE TABLE `t1` (
34210
`f_int1` bigint(20) DEFAULT NULL,
34211
`f_int2` bigint(20) DEFAULT NULL,
34212
`f_char1` char(20) DEFAULT NULL,
34213
`f_char2` char(20) DEFAULT NULL,
34214
`f_charbig` varchar(1000) DEFAULT NULL,
34215
UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
34216
) ENGINE=MyISAM DEFAULT CHARSET=latin1
34217
/*!50100 PARTITION BY LIST (MOD(f_int1 + f_int2,4))
34218
(PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM,
34219
PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM,
34220
PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM,
34221
PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM,
34222
PARTITION part0 VALUES IN (0) ENGINE = MyISAM,
34223
PARTITION part1 VALUES IN (1) ENGINE = MyISAM,
34224
PARTITION part2 VALUES IN (2) ENGINE = MyISAM,
34225
PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */
34247
# check prerequisites-1 success: 1
34248
# check COUNT(*) success: 1
34249
# check MIN/MAX(f_int1) success: 1
34250
# check MIN/MAX(f_int2) success: 1
34251
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
34252
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
34253
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
34254
WHERE f_int1 IN (2,3);
34255
ERROR 23000: Duplicate entry '2-2' for key 'uidx'
34256
# check prerequisites-3 success: 1
34257
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
34258
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
34259
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
34260
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
34261
WHERE f_int1 IN (2,3);
34262
DELETE FROM t1 WHERE f_charbig = 'delete me';
34263
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
34264
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
34265
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
34266
WHERE f_int1 IN (2,3);
34267
DELETE FROM t1 WHERE f_charbig = 'delete me';
34268
# check read via f_int1 success: 1
34269
# check read via f_int2 success: 1
34271
# check multiple-1 success: 1
34272
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
34274
# check multiple-2 success: 1
34275
INSERT INTO t1 SELECT * FROM t0_template
34276
WHERE MOD(f_int1,3) = 0;
34278
# check multiple-3 success: 1
34279
UPDATE t1 SET f_int1 = f_int1 + @max_row
34280
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
34281
AND @max_row_div2 + @max_row_div4;
34283
# check multiple-4 success: 1
34285
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
34286
AND @max_row_div2 + @max_row_div4 + @max_row;
34288
# check multiple-5 success: 1
34289
SELECT COUNT(*) INTO @try_count FROM t0_template
34290
WHERE MOD(f_int1,3) = 0
34291
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
34292
SELECT COUNT(*) INTO @clash_count
34293
FROM t1 INNER JOIN t0_template USING(f_int1)
34294
WHERE MOD(f_int1,3) = 0
34295
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
34296
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
34298
SET f_int1 = @cur_value , f_int2 = @cur_value,
34299
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
34300
f_charbig = '#SINGLE#';
34302
# check single-1 success: 1
34303
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
34305
SET f_int1 = @cur_value , f_int2 = @cur_value,
34306
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
34307
f_charbig = '#SINGLE#';
34309
# check single-2 success: 1
34310
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
34311
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
34312
UPDATE t1 SET f_int1 = @cur_value2
34313
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
34315
# check single-3 success: 1
34316
SET @cur_value1= -1;
34317
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
34318
UPDATE t1 SET f_int1 = @cur_value1
34319
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
34321
# check single-4 success: 1
34322
SELECT MAX(f_int1) INTO @cur_value FROM t1;
34323
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
34325
# check single-5 success: 1
34326
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
34328
# check single-6 success: 1
34329
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
34331
# check single-7 success: 1
34332
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
34333
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
34334
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
34335
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
34336
f_charbig = '#NULL#';
34338
SET f_int1 = NULL , f_int2 = -@max_row,
34339
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
34340
f_charbig = '#NULL#';
34341
# check null success: 1
34343
# check null-1 success: 1
34344
UPDATE t1 SET f_int1 = -@max_row
34345
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
34346
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
34348
# check null-2 success: 1
34349
UPDATE t1 SET f_int1 = NULL
34350
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
34351
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
34353
# check null-3 success: 1
34355
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
34356
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
34358
# check null-4 success: 1
34360
WHERE f_int1 = 0 AND f_int2 = 0
34361
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
34362
AND f_charbig = '#NULL#';
34363
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
34364
SELECT f_int1, f_int1, '', '', 'was inserted'
34365
FROM t0_template source_tab
34366
WHERE MOD(f_int1,3) = 0
34367
AND f_int1 BETWEEN @max_row_div2 AND @max_row
34369
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
34370
f_int2 = 2 * @max_row + source_tab.f_int1,
34371
f_charbig = 'was updated';
34373
# check unique-1-a success: 1
34375
# check unique-1-b success: 1
34376
DELETE FROM t1 WHERE f_charbig = 'was inserted';
34377
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34378
f_int2 = CAST(f_char1 AS SIGNED INT),
34379
f_charbig = CONCAT('===',f_char1,'===')
34380
WHERE f_charbig = 'was updated';
34381
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
34382
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
34383
FROM t0_template source_tab
34384
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
34386
# check replace success: 1
34388
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
34390
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
34391
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
34392
UPDATE t1 SET f_int2 = f_int1,
34393
f_char1 = CAST(f_int1 AS CHAR),
34394
f_char2 = CAST(f_int1 AS CHAR),
34395
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
34396
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
34398
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
34399
SELECT f_int1, f_int1, '', '', 'was inserted'
34400
FROM t0_template source_tab
34401
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
34403
# check transactions-1 success: 1
34406
# check transactions-2 success: 1
34409
# check transactions-3 success: 1
34410
DELETE FROM t1 WHERE f_charbig = 'was inserted';
34414
# check transactions-4 success: 1
34415
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
34416
SELECT f_int1, f_int1, '', '', 'was inserted'
34417
FROM t0_template source_tab
34418
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
34420
# check transactions-5 success: 1
34423
Warning 1196 Some non-transactional changed tables couldn't be rolled back
34425
# check transactions-6 success: 1
34426
# INFO: Storage engine used for t1 seems to be not transactional.
34429
# check transactions-7 success: 1
34430
DELETE FROM t1 WHERE f_charbig = 'was inserted';
34432
SET @@session.sql_mode = 'traditional';
34433
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
34434
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
34435
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
34436
'', '', 'was inserted' FROM t0_template
34437
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
34438
ERROR 22012: Division by 0
34441
# check transactions-8 success: 1
34442
# INFO: Storage engine used for t1 seems to be unable to revert
34443
# changes made by the failing statement.
34444
SET @@session.sql_mode = '';
34446
DELETE FROM t1 WHERE f_charbig = 'was inserted';
34448
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
34450
# check special-1 success: 1
34451
UPDATE t1 SET f_charbig = '';
34453
# check special-2 success: 1
34454
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
34455
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
34456
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
34457
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34458
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34459
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34460
'just inserted' FROM t0_template
34461
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34462
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
34464
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34465
f_charbig = 'updated by trigger'
34466
WHERE f_int1 = new.f_int1;
34468
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34469
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
34470
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34472
# check trigger-1 success: 1
34473
DROP TRIGGER trg_1;
34474
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34475
f_int2 = CAST(f_char1 AS SIGNED INT),
34476
f_charbig = 'just inserted'
34477
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34479
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34480
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34481
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34482
'just inserted' FROM t0_template
34483
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34484
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
34486
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34487
f_charbig = 'updated by trigger'
34488
WHERE f_int1 = new.f_int1;
34490
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34491
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
34492
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34494
# check trigger-2 success: 1
34495
DROP TRIGGER trg_1;
34496
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34497
f_int2 = CAST(f_char1 AS SIGNED INT),
34498
f_charbig = 'just inserted'
34499
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34501
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34502
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34503
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34504
'just inserted' FROM t0_template
34505
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34506
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
34508
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34509
f_charbig = 'updated by trigger'
34510
WHERE f_int1 = new.f_int1;
34512
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
34513
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
34515
# check trigger-3 success: 1
34516
DROP TRIGGER trg_1;
34517
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34518
f_int2 = CAST(f_char1 AS SIGNED INT),
34519
f_charbig = 'just inserted'
34520
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34522
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34523
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34524
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34525
'just inserted' FROM t0_template
34526
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34527
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
34529
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34530
f_charbig = 'updated by trigger'
34531
WHERE f_int1 = - old.f_int1;
34533
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
34534
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
34536
# check trigger-4 success: 1
34537
DROP TRIGGER trg_1;
34538
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34539
f_int2 = CAST(f_char1 AS SIGNED INT),
34540
f_charbig = 'just inserted'
34541
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34543
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34544
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34545
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34546
'just inserted' FROM t0_template
34547
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34548
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
34550
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34551
f_charbig = 'updated by trigger'
34552
WHERE f_int1 = new.f_int1;
34554
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
34555
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
34557
# check trigger-5 success: 1
34558
DROP TRIGGER trg_1;
34559
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34560
f_int2 = CAST(f_char1 AS SIGNED INT),
34561
f_charbig = 'just inserted'
34562
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34564
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34565
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34566
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34567
'just inserted' FROM t0_template
34568
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34569
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
34571
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34572
f_charbig = 'updated by trigger'
34573
WHERE f_int1 = - old.f_int1;
34575
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
34576
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
34578
# check trigger-6 success: 1
34579
DROP TRIGGER trg_1;
34580
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34581
f_int2 = CAST(f_char1 AS SIGNED INT),
34582
f_charbig = 'just inserted'
34583
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34585
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34586
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34587
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34588
'just inserted' FROM t0_template
34589
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34590
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
34592
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34593
f_charbig = 'updated by trigger'
34594
WHERE f_int1 = - old.f_int1;
34597
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
34599
# check trigger-7 success: 1
34600
DROP TRIGGER trg_1;
34601
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34602
f_int2 = CAST(f_char1 AS SIGNED INT),
34603
f_charbig = 'just inserted'
34604
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34606
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34607
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34608
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34609
'just inserted' FROM t0_template
34610
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34611
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
34613
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34614
f_charbig = 'updated by trigger'
34615
WHERE f_int1 = - old.f_int1;
34618
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
34620
# check trigger-8 success: 1
34621
DROP TRIGGER trg_1;
34622
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34623
f_int2 = CAST(f_char1 AS SIGNED INT),
34624
f_charbig = 'just inserted'
34625
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34627
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34629
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34630
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
34632
SET new.f_int1 = old.f_int1 + @max_row,
34633
new.f_int2 = old.f_int2 - @max_row,
34634
new.f_charbig = '####updated per update trigger####';
34637
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
34638
f_charbig = '####updated per update statement itself####';
34640
# check trigger-9 success: 1
34641
DROP TRIGGER trg_2;
34642
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34643
f_int2 = CAST(f_char1 AS SIGNED INT),
34644
f_charbig = CONCAT('===',f_char1,'===');
34645
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
34647
SET new.f_int1 = new.f_int1 + @max_row,
34648
new.f_int2 = new.f_int2 - @max_row,
34649
new.f_charbig = '####updated per update trigger####';
34652
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
34653
f_charbig = '####updated per update statement itself####';
34655
# check trigger-10 success: 1
34656
DROP TRIGGER trg_2;
34657
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34658
f_int2 = CAST(f_char1 AS SIGNED INT),
34659
f_charbig = CONCAT('===',f_char1,'===');
34660
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
34662
SET new.f_int1 = @my_max1 + @counter,
34663
new.f_int2 = @my_min2 - @counter,
34664
new.f_charbig = '####updated per insert trigger####';
34665
SET @counter = @counter + 1;
34668
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
34669
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
34670
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
34671
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
34672
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
34674
DROP TRIGGER trg_3;
34676
# check trigger-11 success: 1
34678
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
34679
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
34680
AND f_charbig = '####updated per insert trigger####';
34681
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
34683
SET new.f_int1 = @my_max1 + @counter,
34684
new.f_int2 = @my_min2 - @counter,
34685
new.f_charbig = '####updated per insert trigger####';
34686
SET @counter = @counter + 1;
34689
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
34690
INSERT INTO t1 (f_char1, f_char2, f_charbig)
34691
SELECT CAST(f_int1 AS CHAR),
34692
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
34693
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
34695
DROP TRIGGER trg_3;
34697
# check trigger-12 success: 1
34699
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
34700
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
34701
AND f_charbig = '####updated per insert trigger####';
34703
Table Op Msg_type Msg_text
34704
test.t1 analyze status OK
34705
CHECK TABLE t1 EXTENDED;
34706
Table Op Msg_type Msg_text
34707
test.t1 check status OK
34708
CHECKSUM TABLE t1 EXTENDED;
34710
test.t1 <some_value>
34712
Table Op Msg_type Msg_text
34713
test.t1 optimize status OK
34714
# check layout success: 1
34715
REPAIR TABLE t1 EXTENDED;
34716
Table Op Msg_type Msg_text
34717
test.t1 repair status OK
34718
# check layout success: 1
34721
# check TRUNCATE success: 1
34722
# check layout success: 1
34723
# End usability test (inc/partition_check.inc)
34730
f_charbig VARCHAR(1000)
34731
, UNIQUE INDEX uidx (f_int2,f_int1)
34733
PARTITION BY RANGE((f_int1 + f_int2) DIV 2)
34734
(PARTITION parta VALUES LESS THAN (0),
34735
PARTITION partb VALUES LESS THAN (5),
34736
PARTITION partc VALUES LESS THAN (10),
34737
PARTITION partd VALUES LESS THAN (10 + 5),
34738
PARTITION parte VALUES LESS THAN (20),
34739
PARTITION partf VALUES LESS THAN (2147483646));
34740
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
34741
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
34742
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
34743
ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
34744
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
34745
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
34746
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
34747
# Start usability test (inc/partition_check.inc)
34749
SHOW CREATE TABLE t1;
34751
t1 CREATE TABLE `t1` (
34752
`f_int1` bigint(20) DEFAULT NULL,
34753
`f_int2` bigint(20) DEFAULT NULL,
34754
`f_char1` char(20) DEFAULT NULL,
34755
`f_char2` char(20) DEFAULT NULL,
34756
`f_charbig` varchar(1000) DEFAULT NULL,
34757
UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
34758
) ENGINE=MyISAM DEFAULT CHARSET=latin1
34759
/*!50100 PARTITION BY RANGE ((f_int1 + f_int2) DIV 2)
34760
(PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM,
34761
PARTITION partb VALUES LESS THAN (5) ENGINE = MyISAM,
34762
PARTITION partc VALUES LESS THAN (10) ENGINE = MyISAM,
34763
PARTITION partd VALUES LESS THAN (15) ENGINE = MyISAM,
34764
PARTITION parte VALUES LESS THAN (20) ENGINE = MyISAM,
34765
PARTITION partf VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
34783
# check prerequisites-1 success: 1
34784
# check COUNT(*) success: 1
34785
# check MIN/MAX(f_int1) success: 1
34786
# check MIN/MAX(f_int2) success: 1
34787
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
34788
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
34789
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
34790
WHERE f_int1 IN (2,3);
34791
ERROR 23000: Duplicate entry '2-2' for key 'uidx'
34792
# check prerequisites-3 success: 1
34793
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
34794
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
34795
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
34796
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
34797
WHERE f_int1 IN (2,3);
34798
DELETE FROM t1 WHERE f_charbig = 'delete me';
34799
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
34800
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
34801
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
34802
WHERE f_int1 IN (2,3);
34803
DELETE FROM t1 WHERE f_charbig = 'delete me';
34804
# check read via f_int1 success: 1
34805
# check read via f_int2 success: 1
34807
# check multiple-1 success: 1
34808
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
34810
# check multiple-2 success: 1
34811
INSERT INTO t1 SELECT * FROM t0_template
34812
WHERE MOD(f_int1,3) = 0;
34814
# check multiple-3 success: 1
34815
UPDATE t1 SET f_int1 = f_int1 + @max_row
34816
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
34817
AND @max_row_div2 + @max_row_div4;
34819
# check multiple-4 success: 1
34821
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
34822
AND @max_row_div2 + @max_row_div4 + @max_row;
34824
# check multiple-5 success: 1
34825
SELECT COUNT(*) INTO @try_count FROM t0_template
34826
WHERE MOD(f_int1,3) = 0
34827
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
34828
SELECT COUNT(*) INTO @clash_count
34829
FROM t1 INNER JOIN t0_template USING(f_int1)
34830
WHERE MOD(f_int1,3) = 0
34831
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
34832
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
34834
SET f_int1 = @cur_value , f_int2 = @cur_value,
34835
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
34836
f_charbig = '#SINGLE#';
34838
# check single-1 success: 1
34839
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
34841
SET f_int1 = @cur_value , f_int2 = @cur_value,
34842
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
34843
f_charbig = '#SINGLE#';
34845
# check single-2 success: 1
34846
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
34847
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
34848
UPDATE t1 SET f_int1 = @cur_value2
34849
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
34851
# check single-3 success: 1
34852
SET @cur_value1= -1;
34853
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
34854
UPDATE t1 SET f_int1 = @cur_value1
34855
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
34857
# check single-4 success: 1
34858
SELECT MAX(f_int1) INTO @cur_value FROM t1;
34859
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
34861
# check single-5 success: 1
34862
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
34864
# check single-6 success: 1
34865
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
34866
ERROR HY000: Table has no partition for value 2147483647
34867
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
34868
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
34869
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
34870
f_charbig = '#NULL#';
34872
SET f_int1 = NULL , f_int2 = -@max_row,
34873
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
34874
f_charbig = '#NULL#';
34875
# check null success: 1
34877
# check null-1 success: 1
34878
UPDATE t1 SET f_int1 = -@max_row
34879
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
34880
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
34882
# check null-2 success: 1
34883
UPDATE t1 SET f_int1 = NULL
34884
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
34885
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
34887
# check null-3 success: 1
34889
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
34890
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
34892
# check null-4 success: 1
34894
WHERE f_int1 = 0 AND f_int2 = 0
34895
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
34896
AND f_charbig = '#NULL#';
34897
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
34898
SELECT f_int1, f_int1, '', '', 'was inserted'
34899
FROM t0_template source_tab
34900
WHERE MOD(f_int1,3) = 0
34901
AND f_int1 BETWEEN @max_row_div2 AND @max_row
34903
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
34904
f_int2 = 2 * @max_row + source_tab.f_int1,
34905
f_charbig = 'was updated';
34907
# check unique-1-a success: 1
34909
# check unique-1-b success: 1
34910
DELETE FROM t1 WHERE f_charbig = 'was inserted';
34911
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34912
f_int2 = CAST(f_char1 AS SIGNED INT),
34913
f_charbig = CONCAT('===',f_char1,'===')
34914
WHERE f_charbig = 'was updated';
34915
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
34916
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
34917
FROM t0_template source_tab
34918
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
34920
# check replace success: 1
34922
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
34924
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
34925
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
34926
UPDATE t1 SET f_int2 = f_int1,
34927
f_char1 = CAST(f_int1 AS CHAR),
34928
f_char2 = CAST(f_int1 AS CHAR),
34929
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
34930
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
34932
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
34933
SELECT f_int1, f_int1, '', '', 'was inserted'
34934
FROM t0_template source_tab
34935
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
34937
# check transactions-1 success: 1
34940
# check transactions-2 success: 1
34943
# check transactions-3 success: 1
34944
DELETE FROM t1 WHERE f_charbig = 'was inserted';
34948
# check transactions-4 success: 1
34949
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
34950
SELECT f_int1, f_int1, '', '', 'was inserted'
34951
FROM t0_template source_tab
34952
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
34954
# check transactions-5 success: 1
34957
Warning 1196 Some non-transactional changed tables couldn't be rolled back
34959
# check transactions-6 success: 1
34960
# INFO: Storage engine used for t1 seems to be not transactional.
34963
# check transactions-7 success: 1
34964
DELETE FROM t1 WHERE f_charbig = 'was inserted';
34966
SET @@session.sql_mode = 'traditional';
34967
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
34968
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
34969
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
34970
'', '', 'was inserted' FROM t0_template
34971
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
34972
ERROR 22012: Division by 0
34975
# check transactions-8 success: 1
34976
# INFO: Storage engine used for t1 seems to be unable to revert
34977
# changes made by the failing statement.
34978
SET @@session.sql_mode = '';
34980
DELETE FROM t1 WHERE f_charbig = 'was inserted';
34982
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
34984
# check special-1 success: 1
34985
UPDATE t1 SET f_charbig = '';
34987
# check special-2 success: 1
34988
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
34989
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
34990
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
34991
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34992
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34993
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34994
'just inserted' FROM t0_template
34995
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34996
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
34998
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34999
f_charbig = 'updated by trigger'
35000
WHERE f_int1 = new.f_int1;
35002
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35003
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
35004
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35006
# check trigger-1 success: 1
35007
DROP TRIGGER trg_1;
35008
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35009
f_int2 = CAST(f_char1 AS SIGNED INT),
35010
f_charbig = 'just inserted'
35011
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
35013
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35014
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35015
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
35016
'just inserted' FROM t0_template
35017
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35018
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
35020
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
35021
f_charbig = 'updated by trigger'
35022
WHERE f_int1 = new.f_int1;
35024
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35025
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
35026
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35028
# check trigger-2 success: 1
35029
DROP TRIGGER trg_1;
35030
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35031
f_int2 = CAST(f_char1 AS SIGNED INT),
35032
f_charbig = 'just inserted'
35033
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
35035
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35036
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35037
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
35038
'just inserted' FROM t0_template
35039
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35040
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
35042
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
35043
f_charbig = 'updated by trigger'
35044
WHERE f_int1 = new.f_int1;
35046
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
35047
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
35049
# check trigger-3 success: 1
35050
DROP TRIGGER trg_1;
35051
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35052
f_int2 = CAST(f_char1 AS SIGNED INT),
35053
f_charbig = 'just inserted'
35054
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
35056
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35057
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35058
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
35059
'just inserted' FROM t0_template
35060
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35061
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
35063
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
35064
f_charbig = 'updated by trigger'
35065
WHERE f_int1 = - old.f_int1;
35067
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
35068
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
35070
# check trigger-4 success: 1
35071
DROP TRIGGER trg_1;
35072
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35073
f_int2 = CAST(f_char1 AS SIGNED INT),
35074
f_charbig = 'just inserted'
35075
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
35077
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35078
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35079
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
35080
'just inserted' FROM t0_template
35081
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35082
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
35084
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
35085
f_charbig = 'updated by trigger'
35086
WHERE f_int1 = new.f_int1;
35088
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
35089
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
35091
# check trigger-5 success: 1
35092
DROP TRIGGER trg_1;
35093
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35094
f_int2 = CAST(f_char1 AS SIGNED INT),
35095
f_charbig = 'just inserted'
35096
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
35098
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35099
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35100
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
35101
'just inserted' FROM t0_template
35102
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35103
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
35105
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
35106
f_charbig = 'updated by trigger'
35107
WHERE f_int1 = - old.f_int1;
35109
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
35110
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
35112
# check trigger-6 success: 1
35113
DROP TRIGGER trg_1;
35114
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35115
f_int2 = CAST(f_char1 AS SIGNED INT),
35116
f_charbig = 'just inserted'
35117
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
35119
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35120
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35121
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
35122
'just inserted' FROM t0_template
35123
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35124
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
35126
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
35127
f_charbig = 'updated by trigger'
35128
WHERE f_int1 = - old.f_int1;
35131
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
35133
# check trigger-7 success: 1
35134
DROP TRIGGER trg_1;
35135
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35136
f_int2 = CAST(f_char1 AS SIGNED INT),
35137
f_charbig = 'just inserted'
35138
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
35140
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35141
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35142
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
35143
'just inserted' FROM t0_template
35144
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35145
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
35147
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
35148
f_charbig = 'updated by trigger'
35149
WHERE f_int1 = - old.f_int1;
35152
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
35154
# check trigger-8 success: 1
35155
DROP TRIGGER trg_1;
35156
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35157
f_int2 = CAST(f_char1 AS SIGNED INT),
35158
f_charbig = 'just inserted'
35159
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
35161
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35163
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35164
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
35166
SET new.f_int1 = old.f_int1 + @max_row,
35167
new.f_int2 = old.f_int2 - @max_row,
35168
new.f_charbig = '####updated per update trigger####';
35171
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
35172
f_charbig = '####updated per update statement itself####';
35174
# check trigger-9 success: 1
35175
DROP TRIGGER trg_2;
35176
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35177
f_int2 = CAST(f_char1 AS SIGNED INT),
35178
f_charbig = CONCAT('===',f_char1,'===');
35179
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
35181
SET new.f_int1 = new.f_int1 + @max_row,
35182
new.f_int2 = new.f_int2 - @max_row,
35183
new.f_charbig = '####updated per update trigger####';
35186
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
35187
f_charbig = '####updated per update statement itself####';
35189
# check trigger-10 success: 1
35190
DROP TRIGGER trg_2;
35191
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35192
f_int2 = CAST(f_char1 AS SIGNED INT),
35193
f_charbig = CONCAT('===',f_char1,'===');
35194
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
35196
SET new.f_int1 = @my_max1 + @counter,
35197
new.f_int2 = @my_min2 - @counter,
35198
new.f_charbig = '####updated per insert trigger####';
35199
SET @counter = @counter + 1;
35202
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
35203
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
35204
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
35205
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
35206
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
35208
DROP TRIGGER trg_3;
35210
# check trigger-11 success: 1
35212
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
35213
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
35214
AND f_charbig = '####updated per insert trigger####';
35215
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
35217
SET new.f_int1 = @my_max1 + @counter,
35218
new.f_int2 = @my_min2 - @counter,
35219
new.f_charbig = '####updated per insert trigger####';
35220
SET @counter = @counter + 1;
35223
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
35224
INSERT INTO t1 (f_char1, f_char2, f_charbig)
35225
SELECT CAST(f_int1 AS CHAR),
35226
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
35227
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
35229
DROP TRIGGER trg_3;
35231
# check trigger-12 success: 1
35233
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
35234
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
35235
AND f_charbig = '####updated per insert trigger####';
35237
Table Op Msg_type Msg_text
35238
test.t1 analyze status OK
35239
CHECK TABLE t1 EXTENDED;
35240
Table Op Msg_type Msg_text
35241
test.t1 check status OK
35242
CHECKSUM TABLE t1 EXTENDED;
35244
test.t1 <some_value>
35246
Table Op Msg_type Msg_text
35247
test.t1 optimize status OK
35248
# check layout success: 1
35249
REPAIR TABLE t1 EXTENDED;
35250
Table Op Msg_type Msg_text
35251
test.t1 repair status OK
35252
# check layout success: 1
35255
# check TRUNCATE success: 1
35256
# check layout success: 1
35257
# End usability test (inc/partition_check.inc)
35264
f_charbig VARCHAR(1000)
35265
, UNIQUE INDEX uidx (f_int2,f_int1)
35267
PARTITION BY RANGE(f_int1) SUBPARTITION BY HASH(f_int2) SUBPARTITIONS 2
35268
(PARTITION parta VALUES LESS THAN (0),
35269
PARTITION partb VALUES LESS THAN (5),
35270
PARTITION partc VALUES LESS THAN (10),
35271
PARTITION partd VALUES LESS THAN (2147483646));
35272
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
35273
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
35274
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
35275
ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
35276
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
35277
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
35278
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
35279
# Start usability test (inc/partition_check.inc)
35281
SHOW CREATE TABLE t1;
35283
t1 CREATE TABLE `t1` (
35284
`f_int1` bigint(20) DEFAULT NULL,
35285
`f_int2` bigint(20) DEFAULT NULL,
35286
`f_char1` char(20) DEFAULT NULL,
35287
`f_char2` char(20) DEFAULT NULL,
35288
`f_charbig` varchar(1000) DEFAULT NULL,
35289
UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
35290
) ENGINE=MyISAM DEFAULT CHARSET=latin1
35291
/*!50100 PARTITION BY RANGE (f_int1)
35292
SUBPARTITION BY HASH (f_int2)
35294
(PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM,
35295
PARTITION partb VALUES LESS THAN (5) ENGINE = MyISAM,
35296
PARTITION partc VALUES LESS THAN (10) ENGINE = MyISAM,
35297
PARTITION partd VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
35300
t1#P#parta#SP#partasp0.MYD
35301
t1#P#parta#SP#partasp0.MYI
35302
t1#P#parta#SP#partasp1.MYD
35303
t1#P#parta#SP#partasp1.MYI
35304
t1#P#partb#SP#partbsp0.MYD
35305
t1#P#partb#SP#partbsp0.MYI
35306
t1#P#partb#SP#partbsp1.MYD
35307
t1#P#partb#SP#partbsp1.MYI
35308
t1#P#partc#SP#partcsp0.MYD
35309
t1#P#partc#SP#partcsp0.MYI
35310
t1#P#partc#SP#partcsp1.MYD
35311
t1#P#partc#SP#partcsp1.MYI
35312
t1#P#partd#SP#partdsp0.MYD
35313
t1#P#partd#SP#partdsp0.MYI
35314
t1#P#partd#SP#partdsp1.MYD
35315
t1#P#partd#SP#partdsp1.MYI
35319
# check prerequisites-1 success: 1
35320
# check COUNT(*) success: 1
35321
# check MIN/MAX(f_int1) success: 1
35322
# check MIN/MAX(f_int2) success: 1
35323
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
35324
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
35325
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
35326
WHERE f_int1 IN (2,3);
35327
ERROR 23000: Duplicate entry '2-2' for key 'uidx'
35328
# check prerequisites-3 success: 1
35329
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
35330
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
35331
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
35332
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
35333
WHERE f_int1 IN (2,3);
35334
DELETE FROM t1 WHERE f_charbig = 'delete me';
35335
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
35336
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
35337
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
35338
WHERE f_int1 IN (2,3);
35339
DELETE FROM t1 WHERE f_charbig = 'delete me';
35340
# check read via f_int1 success: 1
35341
# check read via f_int2 success: 1
35343
# check multiple-1 success: 1
35344
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
35346
# check multiple-2 success: 1
35347
INSERT INTO t1 SELECT * FROM t0_template
35348
WHERE MOD(f_int1,3) = 0;
35350
# check multiple-3 success: 1
35351
UPDATE t1 SET f_int1 = f_int1 + @max_row
35352
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
35353
AND @max_row_div2 + @max_row_div4;
35355
# check multiple-4 success: 1
35357
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
35358
AND @max_row_div2 + @max_row_div4 + @max_row;
35360
# check multiple-5 success: 1
35361
SELECT COUNT(*) INTO @try_count FROM t0_template
35362
WHERE MOD(f_int1,3) = 0
35363
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
35364
SELECT COUNT(*) INTO @clash_count
35365
FROM t1 INNER JOIN t0_template USING(f_int1)
35366
WHERE MOD(f_int1,3) = 0
35367
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
35368
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
35370
SET f_int1 = @cur_value , f_int2 = @cur_value,
35371
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
35372
f_charbig = '#SINGLE#';
35374
# check single-1 success: 1
35375
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
35377
SET f_int1 = @cur_value , f_int2 = @cur_value,
35378
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
35379
f_charbig = '#SINGLE#';
35381
# check single-2 success: 1
35382
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
35383
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
35384
UPDATE t1 SET f_int1 = @cur_value2
35385
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
35387
# check single-3 success: 1
35388
SET @cur_value1= -1;
35389
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
35390
UPDATE t1 SET f_int1 = @cur_value1
35391
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
35393
# check single-4 success: 1
35394
SELECT MAX(f_int1) INTO @cur_value FROM t1;
35395
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
35397
# check single-5 success: 1
35398
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
35400
# check single-6 success: 1
35401
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
35402
ERROR HY000: Table has no partition for value 2147483647
35403
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
35404
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
35405
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
35406
f_charbig = '#NULL#';
35408
SET f_int1 = NULL , f_int2 = -@max_row,
35409
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
35410
f_charbig = '#NULL#';
35411
# check null success: 1
35413
# check null-1 success: 1
35414
UPDATE t1 SET f_int1 = -@max_row
35415
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
35416
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
35418
# check null-2 success: 1
35419
UPDATE t1 SET f_int1 = NULL
35420
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
35421
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
35423
# check null-3 success: 1
35425
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
35426
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
35428
# check null-4 success: 1
35430
WHERE f_int1 = 0 AND f_int2 = 0
35431
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
35432
AND f_charbig = '#NULL#';
35433
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
35434
SELECT f_int1, f_int1, '', '', 'was inserted'
35435
FROM t0_template source_tab
35436
WHERE MOD(f_int1,3) = 0
35437
AND f_int1 BETWEEN @max_row_div2 AND @max_row
35439
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
35440
f_int2 = 2 * @max_row + source_tab.f_int1,
35441
f_charbig = 'was updated';
35443
# check unique-1-a success: 1
35445
# check unique-1-b success: 1
35446
DELETE FROM t1 WHERE f_charbig = 'was inserted';
35447
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35448
f_int2 = CAST(f_char1 AS SIGNED INT),
35449
f_charbig = CONCAT('===',f_char1,'===')
35450
WHERE f_charbig = 'was updated';
35451
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
35452
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
35453
FROM t0_template source_tab
35454
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
35456
# check replace success: 1
35458
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
35460
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
35461
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
35462
UPDATE t1 SET f_int2 = f_int1,
35463
f_char1 = CAST(f_int1 AS CHAR),
35464
f_char2 = CAST(f_int1 AS CHAR),
35465
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
35466
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
35468
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
35469
SELECT f_int1, f_int1, '', '', 'was inserted'
35470
FROM t0_template source_tab
35471
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
35473
# check transactions-1 success: 1
35476
# check transactions-2 success: 1
35479
# check transactions-3 success: 1
35480
DELETE FROM t1 WHERE f_charbig = 'was inserted';
35484
# check transactions-4 success: 1
35485
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
35486
SELECT f_int1, f_int1, '', '', 'was inserted'
35487
FROM t0_template source_tab
35488
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
35490
# check transactions-5 success: 1
35493
Warning 1196 Some non-transactional changed tables couldn't be rolled back
35495
# check transactions-6 success: 1
35496
# INFO: Storage engine used for t1 seems to be not transactional.
35499
# check transactions-7 success: 1
35500
DELETE FROM t1 WHERE f_charbig = 'was inserted';
35502
SET @@session.sql_mode = 'traditional';
35503
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
35504
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
35505
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
35506
'', '', 'was inserted' FROM t0_template
35507
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
35508
ERROR 22012: Division by 0
35511
# check transactions-8 success: 1
35512
# INFO: Storage engine used for t1 seems to be unable to revert
35513
# changes made by the failing statement.
35514
SET @@session.sql_mode = '';
35516
DELETE FROM t1 WHERE f_charbig = 'was inserted';
35518
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
35520
# check special-1 success: 1
35521
UPDATE t1 SET f_charbig = '';
35523
# check special-2 success: 1
35524
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
35525
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
35526
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
35527
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35528
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35529
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
35530
'just inserted' FROM t0_template
35531
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35532
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
35534
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
35535
f_charbig = 'updated by trigger'
35536
WHERE f_int1 = new.f_int1;
35538
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35539
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
35540
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35542
# check trigger-1 success: 1
35543
DROP TRIGGER trg_1;
35544
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35545
f_int2 = CAST(f_char1 AS SIGNED INT),
35546
f_charbig = 'just inserted'
35547
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
35549
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35550
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35551
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
35552
'just inserted' FROM t0_template
35553
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35554
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
35556
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
35557
f_charbig = 'updated by trigger'
35558
WHERE f_int1 = new.f_int1;
35560
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35561
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
35562
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35564
# check trigger-2 success: 1
35565
DROP TRIGGER trg_1;
35566
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35567
f_int2 = CAST(f_char1 AS SIGNED INT),
35568
f_charbig = 'just inserted'
35569
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
35571
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35572
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35573
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
35574
'just inserted' FROM t0_template
35575
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35576
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
35578
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
35579
f_charbig = 'updated by trigger'
35580
WHERE f_int1 = new.f_int1;
35582
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
35583
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
35585
# check trigger-3 success: 1
35586
DROP TRIGGER trg_1;
35587
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35588
f_int2 = CAST(f_char1 AS SIGNED INT),
35589
f_charbig = 'just inserted'
35590
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
35592
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35593
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35594
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
35595
'just inserted' FROM t0_template
35596
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35597
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
35599
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
35600
f_charbig = 'updated by trigger'
35601
WHERE f_int1 = - old.f_int1;
35603
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
35604
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
35606
# check trigger-4 success: 1
35607
DROP TRIGGER trg_1;
35608
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35609
f_int2 = CAST(f_char1 AS SIGNED INT),
35610
f_charbig = 'just inserted'
35611
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
35613
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35614
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35615
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
35616
'just inserted' FROM t0_template
35617
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35618
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
35620
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
35621
f_charbig = 'updated by trigger'
35622
WHERE f_int1 = new.f_int1;
35624
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
35625
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
35627
# check trigger-5 success: 1
35628
DROP TRIGGER trg_1;
35629
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35630
f_int2 = CAST(f_char1 AS SIGNED INT),
35631
f_charbig = 'just inserted'
35632
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
35634
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35635
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35636
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
35637
'just inserted' FROM t0_template
35638
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35639
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
35641
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
35642
f_charbig = 'updated by trigger'
35643
WHERE f_int1 = - old.f_int1;
35645
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
35646
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
35648
# check trigger-6 success: 1
35649
DROP TRIGGER trg_1;
35650
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35651
f_int2 = CAST(f_char1 AS SIGNED INT),
35652
f_charbig = 'just inserted'
35653
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
35655
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35656
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35657
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
35658
'just inserted' FROM t0_template
35659
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35660
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
35662
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
35663
f_charbig = 'updated by trigger'
35664
WHERE f_int1 = - old.f_int1;
35667
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
35669
# check trigger-7 success: 1
35670
DROP TRIGGER trg_1;
35671
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35672
f_int2 = CAST(f_char1 AS SIGNED INT),
35673
f_charbig = 'just inserted'
35674
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
35676
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35677
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35678
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
35679
'just inserted' FROM t0_template
35680
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35681
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
35683
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
35684
f_charbig = 'updated by trigger'
35685
WHERE f_int1 = - old.f_int1;
35688
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
35690
# check trigger-8 success: 1
35691
DROP TRIGGER trg_1;
35692
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35693
f_int2 = CAST(f_char1 AS SIGNED INT),
35694
f_charbig = 'just inserted'
35695
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
35697
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35699
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35700
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
35702
SET new.f_int1 = old.f_int1 + @max_row,
35703
new.f_int2 = old.f_int2 - @max_row,
35704
new.f_charbig = '####updated per update trigger####';
35707
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
35708
f_charbig = '####updated per update statement itself####';
35710
# check trigger-9 success: 1
35711
DROP TRIGGER trg_2;
35712
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35713
f_int2 = CAST(f_char1 AS SIGNED INT),
35714
f_charbig = CONCAT('===',f_char1,'===');
35715
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
35717
SET new.f_int1 = new.f_int1 + @max_row,
35718
new.f_int2 = new.f_int2 - @max_row,
35719
new.f_charbig = '####updated per update trigger####';
35722
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
35723
f_charbig = '####updated per update statement itself####';
35725
# check trigger-10 success: 1
35726
DROP TRIGGER trg_2;
35727
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35728
f_int2 = CAST(f_char1 AS SIGNED INT),
35729
f_charbig = CONCAT('===',f_char1,'===');
35730
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
35732
SET new.f_int1 = @my_max1 + @counter,
35733
new.f_int2 = @my_min2 - @counter,
35734
new.f_charbig = '####updated per insert trigger####';
35735
SET @counter = @counter + 1;
35738
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
35739
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
35740
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
35741
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
35742
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
35744
DROP TRIGGER trg_3;
35746
# check trigger-11 success: 1
35748
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
35749
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
35750
AND f_charbig = '####updated per insert trigger####';
35751
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
35753
SET new.f_int1 = @my_max1 + @counter,
35754
new.f_int2 = @my_min2 - @counter,
35755
new.f_charbig = '####updated per insert trigger####';
35756
SET @counter = @counter + 1;
35759
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
35760
INSERT INTO t1 (f_char1, f_char2, f_charbig)
35761
SELECT CAST(f_int1 AS CHAR),
35762
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
35763
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
35765
DROP TRIGGER trg_3;
35767
# check trigger-12 success: 1
35769
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
35770
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
35771
AND f_charbig = '####updated per insert trigger####';
35773
Table Op Msg_type Msg_text
35774
test.t1 analyze status OK
35775
CHECK TABLE t1 EXTENDED;
35776
Table Op Msg_type Msg_text
35777
test.t1 check status OK
35778
CHECKSUM TABLE t1 EXTENDED;
35780
test.t1 <some_value>
35782
Table Op Msg_type Msg_text
35783
test.t1 optimize status OK
35784
# check layout success: 1
35785
REPAIR TABLE t1 EXTENDED;
35786
Table Op Msg_type Msg_text
35787
test.t1 repair status OK
35788
# check layout success: 1
35791
# check TRUNCATE success: 1
35792
# check layout success: 1
35793
# End usability test (inc/partition_check.inc)
35800
f_charbig VARCHAR(1000)
35801
, UNIQUE INDEX uidx (f_int2,f_int1)
35803
PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int2)
35804
(PARTITION part1 VALUES LESS THAN (0)
35805
(SUBPARTITION subpart11, SUBPARTITION subpart12),
35806
PARTITION part2 VALUES LESS THAN (5)
35807
(SUBPARTITION subpart21, SUBPARTITION subpart22),
35808
PARTITION part3 VALUES LESS THAN (10)
35809
(SUBPARTITION subpart31, SUBPARTITION subpart32),
35810
PARTITION part4 VALUES LESS THAN (2147483646)
35811
(SUBPARTITION subpart41, SUBPARTITION subpart42));
35812
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
35813
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
35814
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
35815
ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
35816
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
35817
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
35818
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
35819
# Start usability test (inc/partition_check.inc)
35821
SHOW CREATE TABLE t1;
35823
t1 CREATE TABLE `t1` (
35824
`f_int1` bigint(20) DEFAULT NULL,
35825
`f_int2` bigint(20) DEFAULT NULL,
35826
`f_char1` char(20) DEFAULT NULL,
35827
`f_char2` char(20) DEFAULT NULL,
35828
`f_charbig` varchar(1000) DEFAULT NULL,
35829
UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
35830
) ENGINE=MyISAM DEFAULT CHARSET=latin1
35831
/*!50100 PARTITION BY RANGE (f_int1)
35832
SUBPARTITION BY KEY (f_int2)
35833
(PARTITION part1 VALUES LESS THAN (0)
35834
(SUBPARTITION subpart11 ENGINE = MyISAM,
35835
SUBPARTITION subpart12 ENGINE = MyISAM),
35836
PARTITION part2 VALUES LESS THAN (5)
35837
(SUBPARTITION subpart21 ENGINE = MyISAM,
35838
SUBPARTITION subpart22 ENGINE = MyISAM),
35839
PARTITION part3 VALUES LESS THAN (10)
35840
(SUBPARTITION subpart31 ENGINE = MyISAM,
35841
SUBPARTITION subpart32 ENGINE = MyISAM),
35842
PARTITION part4 VALUES LESS THAN (2147483646)
35843
(SUBPARTITION subpart41 ENGINE = MyISAM,
35844
SUBPARTITION subpart42 ENGINE = MyISAM)) */
35847
t1#P#part1#SP#subpart11.MYD
35848
t1#P#part1#SP#subpart11.MYI
35849
t1#P#part1#SP#subpart12.MYD
35850
t1#P#part1#SP#subpart12.MYI
35851
t1#P#part2#SP#subpart21.MYD
35852
t1#P#part2#SP#subpart21.MYI
35853
t1#P#part2#SP#subpart22.MYD
35854
t1#P#part2#SP#subpart22.MYI
35855
t1#P#part3#SP#subpart31.MYD
35856
t1#P#part3#SP#subpart31.MYI
35857
t1#P#part3#SP#subpart32.MYD
35858
t1#P#part3#SP#subpart32.MYI
35859
t1#P#part4#SP#subpart41.MYD
35860
t1#P#part4#SP#subpart41.MYI
35861
t1#P#part4#SP#subpart42.MYD
35862
t1#P#part4#SP#subpart42.MYI
35866
# check prerequisites-1 success: 1
35867
# check COUNT(*) success: 1
35868
# check MIN/MAX(f_int1) success: 1
35869
# check MIN/MAX(f_int2) success: 1
35870
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
35871
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
35872
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
35873
WHERE f_int1 IN (2,3);
35874
ERROR 23000: Duplicate entry '2-2' for key 'uidx'
35875
# check prerequisites-3 success: 1
35876
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
35877
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
35878
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
35879
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
35880
WHERE f_int1 IN (2,3);
35881
DELETE FROM t1 WHERE f_charbig = 'delete me';
35882
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
35883
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
35884
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
35885
WHERE f_int1 IN (2,3);
35886
DELETE FROM t1 WHERE f_charbig = 'delete me';
35887
# check read via f_int1 success: 1
35888
# check read via f_int2 success: 1
35890
# check multiple-1 success: 1
35891
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
35893
# check multiple-2 success: 1
35894
INSERT INTO t1 SELECT * FROM t0_template
35895
WHERE MOD(f_int1,3) = 0;
35897
# check multiple-3 success: 1
35898
UPDATE t1 SET f_int1 = f_int1 + @max_row
35899
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
35900
AND @max_row_div2 + @max_row_div4;
35902
# check multiple-4 success: 1
35904
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
35905
AND @max_row_div2 + @max_row_div4 + @max_row;
35907
# check multiple-5 success: 1
35908
SELECT COUNT(*) INTO @try_count FROM t0_template
35909
WHERE MOD(f_int1,3) = 0
35910
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
35911
SELECT COUNT(*) INTO @clash_count
35912
FROM t1 INNER JOIN t0_template USING(f_int1)
35913
WHERE MOD(f_int1,3) = 0
35914
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
35915
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
35917
SET f_int1 = @cur_value , f_int2 = @cur_value,
35918
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
35919
f_charbig = '#SINGLE#';
35921
# check single-1 success: 1
35922
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
35924
SET f_int1 = @cur_value , f_int2 = @cur_value,
35925
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
35926
f_charbig = '#SINGLE#';
35928
# check single-2 success: 1
35929
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
35930
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
35931
UPDATE t1 SET f_int1 = @cur_value2
35932
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
35934
# check single-3 success: 1
35935
SET @cur_value1= -1;
35936
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
35937
UPDATE t1 SET f_int1 = @cur_value1
35938
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
35940
# check single-4 success: 1
35941
SELECT MAX(f_int1) INTO @cur_value FROM t1;
35942
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
35944
# check single-5 success: 1
35945
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
35947
# check single-6 success: 1
35948
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
35949
ERROR HY000: Table has no partition for value 2147483647
35950
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
35951
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
35952
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
35953
f_charbig = '#NULL#';
35955
SET f_int1 = NULL , f_int2 = -@max_row,
35956
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
35957
f_charbig = '#NULL#';
35958
# check null success: 1
35960
# check null-1 success: 1
35961
UPDATE t1 SET f_int1 = -@max_row
35962
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
35963
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
35965
# check null-2 success: 1
35966
UPDATE t1 SET f_int1 = NULL
35967
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
35968
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
35970
# check null-3 success: 1
35972
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
35973
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
35975
# check null-4 success: 1
35977
WHERE f_int1 = 0 AND f_int2 = 0
35978
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
35979
AND f_charbig = '#NULL#';
35980
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
35981
SELECT f_int1, f_int1, '', '', 'was inserted'
35982
FROM t0_template source_tab
35983
WHERE MOD(f_int1,3) = 0
35984
AND f_int1 BETWEEN @max_row_div2 AND @max_row
35986
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
35987
f_int2 = 2 * @max_row + source_tab.f_int1,
35988
f_charbig = 'was updated';
35990
# check unique-1-a success: 1
35992
# check unique-1-b success: 1
35993
DELETE FROM t1 WHERE f_charbig = 'was inserted';
35994
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35995
f_int2 = CAST(f_char1 AS SIGNED INT),
35996
f_charbig = CONCAT('===',f_char1,'===')
35997
WHERE f_charbig = 'was updated';
35998
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
35999
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
36000
FROM t0_template source_tab
36001
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
36003
# check replace success: 1
36005
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
36007
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
36008
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
36009
UPDATE t1 SET f_int2 = f_int1,
36010
f_char1 = CAST(f_int1 AS CHAR),
36011
f_char2 = CAST(f_int1 AS CHAR),
36012
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
36013
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
36015
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
36016
SELECT f_int1, f_int1, '', '', 'was inserted'
36017
FROM t0_template source_tab
36018
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
36020
# check transactions-1 success: 1
36023
# check transactions-2 success: 1
36026
# check transactions-3 success: 1
36027
DELETE FROM t1 WHERE f_charbig = 'was inserted';
36031
# check transactions-4 success: 1
36032
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
36033
SELECT f_int1, f_int1, '', '', 'was inserted'
36034
FROM t0_template source_tab
36035
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
36037
# check transactions-5 success: 1
36040
Warning 1196 Some non-transactional changed tables couldn't be rolled back
36042
# check transactions-6 success: 1
36043
# INFO: Storage engine used for t1 seems to be not transactional.
36046
# check transactions-7 success: 1
36047
DELETE FROM t1 WHERE f_charbig = 'was inserted';
36049
SET @@session.sql_mode = 'traditional';
36050
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
36051
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
36052
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
36053
'', '', 'was inserted' FROM t0_template
36054
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
36055
ERROR 22012: Division by 0
36058
# check transactions-8 success: 1
36059
# INFO: Storage engine used for t1 seems to be unable to revert
36060
# changes made by the failing statement.
36061
SET @@session.sql_mode = '';
36063
DELETE FROM t1 WHERE f_charbig = 'was inserted';
36065
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
36067
# check special-1 success: 1
36068
UPDATE t1 SET f_charbig = '';
36070
# check special-2 success: 1
36071
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
36072
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
36073
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
36074
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36075
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
36076
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
36077
'just inserted' FROM t0_template
36078
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36079
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
36081
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
36082
f_charbig = 'updated by trigger'
36083
WHERE f_int1 = new.f_int1;
36085
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
36086
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
36087
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36089
# check trigger-1 success: 1
36090
DROP TRIGGER trg_1;
36091
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
36092
f_int2 = CAST(f_char1 AS SIGNED INT),
36093
f_charbig = 'just inserted'
36094
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
36096
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36097
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
36098
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
36099
'just inserted' FROM t0_template
36100
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36101
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
36103
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
36104
f_charbig = 'updated by trigger'
36105
WHERE f_int1 = new.f_int1;
36107
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
36108
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
36109
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36111
# check trigger-2 success: 1
36112
DROP TRIGGER trg_1;
36113
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
36114
f_int2 = CAST(f_char1 AS SIGNED INT),
36115
f_charbig = 'just inserted'
36116
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
36118
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36119
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
36120
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
36121
'just inserted' FROM t0_template
36122
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36123
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
36125
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
36126
f_charbig = 'updated by trigger'
36127
WHERE f_int1 = new.f_int1;
36129
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
36130
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
36132
# check trigger-3 success: 1
36133
DROP TRIGGER trg_1;
36134
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
36135
f_int2 = CAST(f_char1 AS SIGNED INT),
36136
f_charbig = 'just inserted'
36137
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
36139
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36140
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
36141
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
36142
'just inserted' FROM t0_template
36143
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36144
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
36146
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
36147
f_charbig = 'updated by trigger'
36148
WHERE f_int1 = - old.f_int1;
36150
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
36151
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
36153
# check trigger-4 success: 1
36154
DROP TRIGGER trg_1;
36155
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
36156
f_int2 = CAST(f_char1 AS SIGNED INT),
36157
f_charbig = 'just inserted'
36158
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
36160
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36161
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
36162
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
36163
'just inserted' FROM t0_template
36164
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36165
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
36167
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
36168
f_charbig = 'updated by trigger'
36169
WHERE f_int1 = new.f_int1;
36171
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
36172
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
36174
# check trigger-5 success: 1
36175
DROP TRIGGER trg_1;
36176
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
36177
f_int2 = CAST(f_char1 AS SIGNED INT),
36178
f_charbig = 'just inserted'
36179
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
36181
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36182
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
36183
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
36184
'just inserted' FROM t0_template
36185
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36186
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
36188
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
36189
f_charbig = 'updated by trigger'
36190
WHERE f_int1 = - old.f_int1;
36192
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
36193
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
36195
# check trigger-6 success: 1
36196
DROP TRIGGER trg_1;
36197
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
36198
f_int2 = CAST(f_char1 AS SIGNED INT),
36199
f_charbig = 'just inserted'
36200
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
36202
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36203
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
36204
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
36205
'just inserted' FROM t0_template
36206
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36207
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
36209
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
36210
f_charbig = 'updated by trigger'
36211
WHERE f_int1 = - old.f_int1;
36214
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
36216
# check trigger-7 success: 1
36217
DROP TRIGGER trg_1;
36218
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
36219
f_int2 = CAST(f_char1 AS SIGNED INT),
36220
f_charbig = 'just inserted'
36221
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
36223
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36224
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
36225
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
36226
'just inserted' FROM t0_template
36227
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36228
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
36230
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
36231
f_charbig = 'updated by trigger'
36232
WHERE f_int1 = - old.f_int1;
36235
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
36237
# check trigger-8 success: 1
36238
DROP TRIGGER trg_1;
36239
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
36240
f_int2 = CAST(f_char1 AS SIGNED INT),
36241
f_charbig = 'just inserted'
36242
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
36244
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36246
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36247
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
36249
SET new.f_int1 = old.f_int1 + @max_row,
36250
new.f_int2 = old.f_int2 - @max_row,
36251
new.f_charbig = '####updated per update trigger####';
36254
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
36255
f_charbig = '####updated per update statement itself####';
36257
# check trigger-9 success: 1
36258
DROP TRIGGER trg_2;
36259
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
36260
f_int2 = CAST(f_char1 AS SIGNED INT),
36261
f_charbig = CONCAT('===',f_char1,'===');
36262
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
36264
SET new.f_int1 = new.f_int1 + @max_row,
36265
new.f_int2 = new.f_int2 - @max_row,
36266
new.f_charbig = '####updated per update trigger####';
36269
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
36270
f_charbig = '####updated per update statement itself####';
36272
# check trigger-10 success: 1
36273
DROP TRIGGER trg_2;
36274
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
36275
f_int2 = CAST(f_char1 AS SIGNED INT),
36276
f_charbig = CONCAT('===',f_char1,'===');
36277
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
36279
SET new.f_int1 = @my_max1 + @counter,
36280
new.f_int2 = @my_min2 - @counter,
36281
new.f_charbig = '####updated per insert trigger####';
36282
SET @counter = @counter + 1;
36285
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
36286
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
36287
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
36288
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
36289
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
36291
DROP TRIGGER trg_3;
36293
# check trigger-11 success: 1
36295
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
36296
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
36297
AND f_charbig = '####updated per insert trigger####';
36298
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
36300
SET new.f_int1 = @my_max1 + @counter,
36301
new.f_int2 = @my_min2 - @counter,
36302
new.f_charbig = '####updated per insert trigger####';
36303
SET @counter = @counter + 1;
36306
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
36307
INSERT INTO t1 (f_char1, f_char2, f_charbig)
36308
SELECT CAST(f_int1 AS CHAR),
36309
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
36310
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
36312
DROP TRIGGER trg_3;
36314
# check trigger-12 success: 1
36316
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
36317
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
36318
AND f_charbig = '####updated per insert trigger####';
36320
Table Op Msg_type Msg_text
36321
test.t1 analyze status OK
36322
CHECK TABLE t1 EXTENDED;
36323
Table Op Msg_type Msg_text
36324
test.t1 check status OK
36325
CHECKSUM TABLE t1 EXTENDED;
36327
test.t1 <some_value>
36329
Table Op Msg_type Msg_text
36330
test.t1 optimize status OK
36331
# check layout success: 1
36332
REPAIR TABLE t1 EXTENDED;
36333
Table Op Msg_type Msg_text
36334
test.t1 repair status OK
36335
# check layout success: 1
36338
# check TRUNCATE success: 1
36339
# check layout success: 1
36340
# End usability test (inc/partition_check.inc)
36347
f_charbig VARCHAR(1000)
36348
, UNIQUE INDEX uidx (f_int2,f_int1)
36350
PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int2 + 1)
36351
(PARTITION part1 VALUES IN (0)
36352
(SUBPARTITION sp11, SUBPARTITION sp12),
36353
PARTITION part2 VALUES IN (1)
36354
(SUBPARTITION sp21, SUBPARTITION sp22),
36355
PARTITION part3 VALUES IN (2)
36356
(SUBPARTITION sp31, SUBPARTITION sp32),
36357
PARTITION part4 VALUES IN (NULL)
36358
(SUBPARTITION sp41, SUBPARTITION sp42));
36359
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
36360
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
36361
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
36362
ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
36363
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
36364
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
36365
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
36366
# Start usability test (inc/partition_check.inc)
36368
SHOW CREATE TABLE t1;
36370
t1 CREATE TABLE `t1` (
36371
`f_int1` bigint(20) DEFAULT NULL,
36372
`f_int2` bigint(20) DEFAULT NULL,
36373
`f_char1` char(20) DEFAULT NULL,
36374
`f_char2` char(20) DEFAULT NULL,
36375
`f_charbig` varchar(1000) DEFAULT NULL,
36376
UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
36377
) ENGINE=MyISAM DEFAULT CHARSET=latin1
36378
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
36379
SUBPARTITION BY HASH (f_int2 + 1)
36380
(PARTITION part1 VALUES IN (0)
36381
(SUBPARTITION sp11 ENGINE = MyISAM,
36382
SUBPARTITION sp12 ENGINE = MyISAM),
36383
PARTITION part2 VALUES IN (1)
36384
(SUBPARTITION sp21 ENGINE = MyISAM,
36385
SUBPARTITION sp22 ENGINE = MyISAM),
36386
PARTITION part3 VALUES IN (2)
36387
(SUBPARTITION sp31 ENGINE = MyISAM,
36388
SUBPARTITION sp32 ENGINE = MyISAM),
36389
PARTITION part4 VALUES IN (NULL)
36390
(SUBPARTITION sp41 ENGINE = MyISAM,
36391
SUBPARTITION sp42 ENGINE = MyISAM)) */
36394
t1#P#part1#SP#sp11.MYD
36395
t1#P#part1#SP#sp11.MYI
36396
t1#P#part1#SP#sp12.MYD
36397
t1#P#part1#SP#sp12.MYI
36398
t1#P#part2#SP#sp21.MYD
36399
t1#P#part2#SP#sp21.MYI
36400
t1#P#part2#SP#sp22.MYD
36401
t1#P#part2#SP#sp22.MYI
36402
t1#P#part3#SP#sp31.MYD
36403
t1#P#part3#SP#sp31.MYI
36404
t1#P#part3#SP#sp32.MYD
36405
t1#P#part3#SP#sp32.MYI
36406
t1#P#part4#SP#sp41.MYD
36407
t1#P#part4#SP#sp41.MYI
36408
t1#P#part4#SP#sp42.MYD
36409
t1#P#part4#SP#sp42.MYI
36413
# check prerequisites-1 success: 1
36414
# check COUNT(*) success: 1
36415
# check MIN/MAX(f_int1) success: 1
36416
# check MIN/MAX(f_int2) success: 1
36417
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
36418
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
36419
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
36420
WHERE f_int1 IN (2,3);
36421
ERROR 23000: Duplicate entry '2-2' for key 'uidx'
36422
# check prerequisites-3 success: 1
36423
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
36424
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
36425
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
36426
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
36427
WHERE f_int1 IN (2,3);
36428
DELETE FROM t1 WHERE f_charbig = 'delete me';
36429
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
36430
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
36431
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
36432
WHERE f_int1 IN (2,3);
36433
DELETE FROM t1 WHERE f_charbig = 'delete me';
36434
# check read via f_int1 success: 1
36435
# check read via f_int2 success: 1
36437
# check multiple-1 success: 1
36438
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
36440
# check multiple-2 success: 1
36441
INSERT INTO t1 SELECT * FROM t0_template
36442
WHERE MOD(f_int1,3) = 0;
36444
# check multiple-3 success: 1
36445
UPDATE t1 SET f_int1 = f_int1 + @max_row
36446
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
36447
AND @max_row_div2 + @max_row_div4;
36449
# check multiple-4 success: 1
36451
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
36452
AND @max_row_div2 + @max_row_div4 + @max_row;
36454
# check multiple-5 success: 1
36455
SELECT COUNT(*) INTO @try_count FROM t0_template
36456
WHERE MOD(f_int1,3) = 0
36457
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
36458
SELECT COUNT(*) INTO @clash_count
36459
FROM t1 INNER JOIN t0_template USING(f_int1)
36460
WHERE MOD(f_int1,3) = 0
36461
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
36462
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
36464
SET f_int1 = @cur_value , f_int2 = @cur_value,
36465
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
36466
f_charbig = '#SINGLE#';
36468
# check single-1 success: 1
36469
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
36471
SET f_int1 = @cur_value , f_int2 = @cur_value,
36472
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
36473
f_charbig = '#SINGLE#';
36475
# check single-2 success: 1
36476
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
36477
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
36478
UPDATE t1 SET f_int1 = @cur_value2
36479
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
36481
# check single-3 success: 1
36482
SET @cur_value1= -1;
36483
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
36484
UPDATE t1 SET f_int1 = @cur_value1
36485
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
36487
# check single-4 success: 1
36488
SELECT MAX(f_int1) INTO @cur_value FROM t1;
36489
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
36491
# check single-5 success: 1
36492
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
36494
# check single-6 success: 1
36495
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
36497
# check single-7 success: 1
36498
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
36499
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
36500
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
36501
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
36502
f_charbig = '#NULL#';
36504
SET f_int1 = NULL , f_int2 = -@max_row,
36505
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
36506
f_charbig = '#NULL#';
36507
# check null success: 1
36509
# check null-1 success: 1
36510
UPDATE t1 SET f_int1 = -@max_row
36511
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
36512
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
36514
# check null-2 success: 1
36515
UPDATE t1 SET f_int1 = NULL
36516
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
36517
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
36519
# check null-3 success: 1
36521
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
36522
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
36524
# check null-4 success: 1
36526
WHERE f_int1 = 0 AND f_int2 = 0
36527
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
36528
AND f_charbig = '#NULL#';
36529
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
36530
SELECT f_int1, f_int1, '', '', 'was inserted'
36531
FROM t0_template source_tab
36532
WHERE MOD(f_int1,3) = 0
36533
AND f_int1 BETWEEN @max_row_div2 AND @max_row
36535
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
36536
f_int2 = 2 * @max_row + source_tab.f_int1,
36537
f_charbig = 'was updated';
36539
# check unique-1-a success: 1
36541
# check unique-1-b success: 1
36542
DELETE FROM t1 WHERE f_charbig = 'was inserted';
36543
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
36544
f_int2 = CAST(f_char1 AS SIGNED INT),
36545
f_charbig = CONCAT('===',f_char1,'===')
36546
WHERE f_charbig = 'was updated';
36547
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
36548
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
36549
FROM t0_template source_tab
36550
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
36552
# check replace success: 1
36554
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
36556
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
36557
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
36558
UPDATE t1 SET f_int2 = f_int1,
36559
f_char1 = CAST(f_int1 AS CHAR),
36560
f_char2 = CAST(f_int1 AS CHAR),
36561
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
36562
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
36564
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
36565
SELECT f_int1, f_int1, '', '', 'was inserted'
36566
FROM t0_template source_tab
36567
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
36569
# check transactions-1 success: 1
36572
# check transactions-2 success: 1
36575
# check transactions-3 success: 1
36576
DELETE FROM t1 WHERE f_charbig = 'was inserted';
36580
# check transactions-4 success: 1
36581
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
36582
SELECT f_int1, f_int1, '', '', 'was inserted'
36583
FROM t0_template source_tab
36584
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
36586
# check transactions-5 success: 1
36589
Warning 1196 Some non-transactional changed tables couldn't be rolled back
36591
# check transactions-6 success: 1
36592
# INFO: Storage engine used for t1 seems to be not transactional.
36595
# check transactions-7 success: 1
36596
DELETE FROM t1 WHERE f_charbig = 'was inserted';
36598
SET @@session.sql_mode = 'traditional';
36599
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
36600
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
36601
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
36602
'', '', 'was inserted' FROM t0_template
36603
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
36604
ERROR 22012: Division by 0
36607
# check transactions-8 success: 1
36608
# INFO: Storage engine used for t1 seems to be unable to revert
36609
# changes made by the failing statement.
36610
SET @@session.sql_mode = '';
36612
DELETE FROM t1 WHERE f_charbig = 'was inserted';
36614
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
36616
# check special-1 success: 1
36617
UPDATE t1 SET f_charbig = '';
36619
# check special-2 success: 1
36620
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
36621
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
36622
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
36623
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36624
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
36625
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
36626
'just inserted' FROM t0_template
36627
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36628
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
36630
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
36631
f_charbig = 'updated by trigger'
36632
WHERE f_int1 = new.f_int1;
36634
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
36635
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
36636
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36638
# check trigger-1 success: 1
36639
DROP TRIGGER trg_1;
36640
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
36641
f_int2 = CAST(f_char1 AS SIGNED INT),
36642
f_charbig = 'just inserted'
36643
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
36645
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36646
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
36647
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
36648
'just inserted' FROM t0_template
36649
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36650
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
36652
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
36653
f_charbig = 'updated by trigger'
36654
WHERE f_int1 = new.f_int1;
36656
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
36657
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
36658
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36660
# check trigger-2 success: 1
36661
DROP TRIGGER trg_1;
36662
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
36663
f_int2 = CAST(f_char1 AS SIGNED INT),
36664
f_charbig = 'just inserted'
36665
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
36667
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36668
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
36669
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
36670
'just inserted' FROM t0_template
36671
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36672
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
36674
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
36675
f_charbig = 'updated by trigger'
36676
WHERE f_int1 = new.f_int1;
36678
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
36679
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
36681
# check trigger-3 success: 1
36682
DROP TRIGGER trg_1;
36683
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
36684
f_int2 = CAST(f_char1 AS SIGNED INT),
36685
f_charbig = 'just inserted'
36686
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
36688
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36689
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
36690
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
36691
'just inserted' FROM t0_template
36692
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36693
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
36695
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
36696
f_charbig = 'updated by trigger'
36697
WHERE f_int1 = - old.f_int1;
36699
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
36700
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
36702
# check trigger-4 success: 1
36703
DROP TRIGGER trg_1;
36704
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
36705
f_int2 = CAST(f_char1 AS SIGNED INT),
36706
f_charbig = 'just inserted'
36707
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
36709
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36710
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
36711
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
36712
'just inserted' FROM t0_template
36713
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36714
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
36716
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
36717
f_charbig = 'updated by trigger'
36718
WHERE f_int1 = new.f_int1;
36720
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
36721
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
36723
# check trigger-5 success: 1
36724
DROP TRIGGER trg_1;
36725
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
36726
f_int2 = CAST(f_char1 AS SIGNED INT),
36727
f_charbig = 'just inserted'
36728
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
36730
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36731
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
36732
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
36733
'just inserted' FROM t0_template
36734
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36735
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
36737
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
36738
f_charbig = 'updated by trigger'
36739
WHERE f_int1 = - old.f_int1;
36741
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
36742
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
36744
# check trigger-6 success: 1
36745
DROP TRIGGER trg_1;
36746
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
36747
f_int2 = CAST(f_char1 AS SIGNED INT),
36748
f_charbig = 'just inserted'
36749
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
36751
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36752
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
36753
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
36754
'just inserted' FROM t0_template
36755
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36756
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
36758
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
36759
f_charbig = 'updated by trigger'
36760
WHERE f_int1 = - old.f_int1;
36763
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
36765
# check trigger-7 success: 1
36766
DROP TRIGGER trg_1;
36767
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
36768
f_int2 = CAST(f_char1 AS SIGNED INT),
36769
f_charbig = 'just inserted'
36770
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
36772
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36773
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
36774
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
36775
'just inserted' FROM t0_template
36776
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36777
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
36779
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
36780
f_charbig = 'updated by trigger'
36781
WHERE f_int1 = - old.f_int1;
36784
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
36786
# check trigger-8 success: 1
36787
DROP TRIGGER trg_1;
36788
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
36789
f_int2 = CAST(f_char1 AS SIGNED INT),
36790
f_charbig = 'just inserted'
36791
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
36793
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36795
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36796
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
36798
SET new.f_int1 = old.f_int1 + @max_row,
36799
new.f_int2 = old.f_int2 - @max_row,
36800
new.f_charbig = '####updated per update trigger####';
36803
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
36804
f_charbig = '####updated per update statement itself####';
36806
# check trigger-9 success: 1
36807
DROP TRIGGER trg_2;
36808
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
36809
f_int2 = CAST(f_char1 AS SIGNED INT),
36810
f_charbig = CONCAT('===',f_char1,'===');
36811
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
36813
SET new.f_int1 = new.f_int1 + @max_row,
36814
new.f_int2 = new.f_int2 - @max_row,
36815
new.f_charbig = '####updated per update trigger####';
36818
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
36819
f_charbig = '####updated per update statement itself####';
36821
# check trigger-10 success: 1
36822
DROP TRIGGER trg_2;
36823
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
36824
f_int2 = CAST(f_char1 AS SIGNED INT),
36825
f_charbig = CONCAT('===',f_char1,'===');
36826
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
36828
SET new.f_int1 = @my_max1 + @counter,
36829
new.f_int2 = @my_min2 - @counter,
36830
new.f_charbig = '####updated per insert trigger####';
36831
SET @counter = @counter + 1;
36834
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
36835
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
36836
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
36837
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
36838
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
36840
DROP TRIGGER trg_3;
36842
# check trigger-11 success: 1
36844
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
36845
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
36846
AND f_charbig = '####updated per insert trigger####';
36847
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
36849
SET new.f_int1 = @my_max1 + @counter,
36850
new.f_int2 = @my_min2 - @counter,
36851
new.f_charbig = '####updated per insert trigger####';
36852
SET @counter = @counter + 1;
36855
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
36856
INSERT INTO t1 (f_char1, f_char2, f_charbig)
36857
SELECT CAST(f_int1 AS CHAR),
36858
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
36859
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
36861
DROP TRIGGER trg_3;
36863
# check trigger-12 success: 1
36865
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
36866
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
36867
AND f_charbig = '####updated per insert trigger####';
36869
Table Op Msg_type Msg_text
36870
test.t1 analyze status OK
36871
CHECK TABLE t1 EXTENDED;
36872
Table Op Msg_type Msg_text
36873
test.t1 check status OK
36874
CHECKSUM TABLE t1 EXTENDED;
36876
test.t1 <some_value>
36878
Table Op Msg_type Msg_text
36879
test.t1 optimize status OK
36880
# check layout success: 1
36881
REPAIR TABLE t1 EXTENDED;
36882
Table Op Msg_type Msg_text
36883
test.t1 repair status OK
36884
# check layout success: 1
36887
# check TRUNCATE success: 1
36888
# check layout success: 1
36889
# End usability test (inc/partition_check.inc)
36896
f_charbig VARCHAR(1000)
36897
, UNIQUE INDEX uidx (f_int2,f_int1)
36899
PARTITION BY LIST(ABS(MOD(f_int1,2)))
36900
SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3
36901
(PARTITION part1 VALUES IN (0),
36902
PARTITION part2 VALUES IN (1),
36903
PARTITION part3 VALUES IN (NULL));
36904
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
36905
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
36906
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
36907
ALTER TABLE t1 MODIFY f_int1 BIGINT, MODIFY f_int2 BIGINT;
36908
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
36909
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
36910
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
36911
# Start usability test (inc/partition_check.inc)
36913
SHOW CREATE TABLE t1;
36915
t1 CREATE TABLE `t1` (
36916
`f_int1` bigint(20) DEFAULT NULL,
36917
`f_int2` bigint(20) DEFAULT NULL,
36918
`f_char1` char(20) DEFAULT NULL,
36919
`f_char2` char(20) DEFAULT NULL,
36920
`f_charbig` varchar(1000) DEFAULT NULL,
36921
UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
36922
) ENGINE=MyISAM DEFAULT CHARSET=latin1
36923
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
36924
SUBPARTITION BY KEY (f_int2)
36926
(PARTITION part1 VALUES IN (0) ENGINE = MyISAM,
36927
PARTITION part2 VALUES IN (1) ENGINE = MyISAM,
36928
PARTITION part3 VALUES IN (NULL) ENGINE = MyISAM) */
36931
t1#P#part1#SP#part1sp0.MYD
36932
t1#P#part1#SP#part1sp0.MYI
36933
t1#P#part1#SP#part1sp1.MYD
36934
t1#P#part1#SP#part1sp1.MYI
36935
t1#P#part1#SP#part1sp2.MYD
36936
t1#P#part1#SP#part1sp2.MYI
36937
t1#P#part2#SP#part2sp0.MYD
36938
t1#P#part2#SP#part2sp0.MYI
36939
t1#P#part2#SP#part2sp1.MYD
36940
t1#P#part2#SP#part2sp1.MYI
36941
t1#P#part2#SP#part2sp2.MYD
36942
t1#P#part2#SP#part2sp2.MYI
36943
t1#P#part3#SP#part3sp0.MYD
36944
t1#P#part3#SP#part3sp0.MYI
36945
t1#P#part3#SP#part3sp1.MYD
36946
t1#P#part3#SP#part3sp1.MYI
36947
t1#P#part3#SP#part3sp2.MYD
36948
t1#P#part3#SP#part3sp2.MYI
36952
# check prerequisites-1 success: 1
36953
# check COUNT(*) success: 1
36954
# check MIN/MAX(f_int1) success: 1
36955
# check MIN/MAX(f_int2) success: 1
36956
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
36957
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
36958
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
36959
WHERE f_int1 IN (2,3);
36960
ERROR 23000: Duplicate entry '2-2' for key 'uidx'
36961
# check prerequisites-3 success: 1
36962
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
36963
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
36964
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
36965
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
36966
WHERE f_int1 IN (2,3);
36967
DELETE FROM t1 WHERE f_charbig = 'delete me';
36968
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
36969
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
36970
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
36971
WHERE f_int1 IN (2,3);
36972
DELETE FROM t1 WHERE f_charbig = 'delete me';
36973
# check read via f_int1 success: 1
36974
# check read via f_int2 success: 1
36976
# check multiple-1 success: 1
36977
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
36979
# check multiple-2 success: 1
36980
INSERT INTO t1 SELECT * FROM t0_template
36981
WHERE MOD(f_int1,3) = 0;
36983
# check multiple-3 success: 1
36984
UPDATE t1 SET f_int1 = f_int1 + @max_row
36985
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
36986
AND @max_row_div2 + @max_row_div4;
36988
# check multiple-4 success: 1
36990
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
36991
AND @max_row_div2 + @max_row_div4 + @max_row;
36993
# check multiple-5 success: 1
36994
SELECT COUNT(*) INTO @try_count FROM t0_template
36995
WHERE MOD(f_int1,3) = 0
36996
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
36997
SELECT COUNT(*) INTO @clash_count
36998
FROM t1 INNER JOIN t0_template USING(f_int1)
36999
WHERE MOD(f_int1,3) = 0
37000
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
37001
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
37003
SET f_int1 = @cur_value , f_int2 = @cur_value,
37004
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
37005
f_charbig = '#SINGLE#';
37007
# check single-1 success: 1
37008
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
37010
SET f_int1 = @cur_value , f_int2 = @cur_value,
37011
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
37012
f_charbig = '#SINGLE#';
37014
# check single-2 success: 1
37015
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
37016
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
37017
UPDATE t1 SET f_int1 = @cur_value2
37018
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
37020
# check single-3 success: 1
37021
SET @cur_value1= -1;
37022
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
37023
UPDATE t1 SET f_int1 = @cur_value1
37024
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
37026
# check single-4 success: 1
37027
SELECT MAX(f_int1) INTO @cur_value FROM t1;
37028
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
37030
# check single-5 success: 1
37031
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
37033
# check single-6 success: 1
37034
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
37036
# check single-7 success: 1
37037
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
37038
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
37039
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
37040
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
37041
f_charbig = '#NULL#';
37043
SET f_int1 = NULL , f_int2 = -@max_row,
37044
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
37045
f_charbig = '#NULL#';
37046
# check null success: 1
37048
# check null-1 success: 1
37049
UPDATE t1 SET f_int1 = -@max_row
37050
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
37051
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
37053
# check null-2 success: 1
37054
UPDATE t1 SET f_int1 = NULL
37055
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
37056
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
37058
# check null-3 success: 1
37060
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
37061
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
37063
# check null-4 success: 1
37065
WHERE f_int1 = 0 AND f_int2 = 0
37066
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
37067
AND f_charbig = '#NULL#';
37068
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
37069
SELECT f_int1, f_int1, '', '', 'was inserted'
37070
FROM t0_template source_tab
37071
WHERE MOD(f_int1,3) = 0
37072
AND f_int1 BETWEEN @max_row_div2 AND @max_row
37074
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
37075
f_int2 = 2 * @max_row + source_tab.f_int1,
37076
f_charbig = 'was updated';
37078
# check unique-1-a success: 1
37080
# check unique-1-b success: 1
37081
DELETE FROM t1 WHERE f_charbig = 'was inserted';
37082
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
37083
f_int2 = CAST(f_char1 AS SIGNED INT),
37084
f_charbig = CONCAT('===',f_char1,'===')
37085
WHERE f_charbig = 'was updated';
37086
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
37087
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
37088
FROM t0_template source_tab
37089
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
37091
# check replace success: 1
37093
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
37095
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
37096
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
37097
UPDATE t1 SET f_int2 = f_int1,
37098
f_char1 = CAST(f_int1 AS CHAR),
37099
f_char2 = CAST(f_int1 AS CHAR),
37100
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
37101
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
37103
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
37104
SELECT f_int1, f_int1, '', '', 'was inserted'
37105
FROM t0_template source_tab
37106
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
37108
# check transactions-1 success: 1
37111
# check transactions-2 success: 1
37114
# check transactions-3 success: 1
37115
DELETE FROM t1 WHERE f_charbig = 'was inserted';
37119
# check transactions-4 success: 1
37120
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
37121
SELECT f_int1, f_int1, '', '', 'was inserted'
37122
FROM t0_template source_tab
37123
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
37125
# check transactions-5 success: 1
37128
Warning 1196 Some non-transactional changed tables couldn't be rolled back
37130
# check transactions-6 success: 1
37131
# INFO: Storage engine used for t1 seems to be not transactional.
37134
# check transactions-7 success: 1
37135
DELETE FROM t1 WHERE f_charbig = 'was inserted';
37137
SET @@session.sql_mode = 'traditional';
37138
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
37139
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
37140
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
37141
'', '', 'was inserted' FROM t0_template
37142
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
37143
ERROR 22012: Division by 0
37146
# check transactions-8 success: 1
37147
# INFO: Storage engine used for t1 seems to be unable to revert
37148
# changes made by the failing statement.
37149
SET @@session.sql_mode = '';
37151
DELETE FROM t1 WHERE f_charbig = 'was inserted';
37153
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
37155
# check special-1 success: 1
37156
UPDATE t1 SET f_charbig = '';
37158
# check special-2 success: 1
37159
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
37160
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
37161
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
37162
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37163
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
37164
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
37165
'just inserted' FROM t0_template
37166
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37167
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
37169
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
37170
f_charbig = 'updated by trigger'
37171
WHERE f_int1 = new.f_int1;
37173
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
37174
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
37175
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37177
# check trigger-1 success: 1
37178
DROP TRIGGER trg_1;
37179
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
37180
f_int2 = CAST(f_char1 AS SIGNED INT),
37181
f_charbig = 'just inserted'
37182
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
37184
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37185
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
37186
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
37187
'just inserted' FROM t0_template
37188
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37189
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
37191
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
37192
f_charbig = 'updated by trigger'
37193
WHERE f_int1 = new.f_int1;
37195
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
37196
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
37197
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37199
# check trigger-2 success: 1
37200
DROP TRIGGER trg_1;
37201
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
37202
f_int2 = CAST(f_char1 AS SIGNED INT),
37203
f_charbig = 'just inserted'
37204
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
37206
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37207
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
37208
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
37209
'just inserted' FROM t0_template
37210
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37211
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
37213
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
37214
f_charbig = 'updated by trigger'
37215
WHERE f_int1 = new.f_int1;
37217
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
37218
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
37220
# check trigger-3 success: 1
37221
DROP TRIGGER trg_1;
37222
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
37223
f_int2 = CAST(f_char1 AS SIGNED INT),
37224
f_charbig = 'just inserted'
37225
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
37227
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37228
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
37229
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
37230
'just inserted' FROM t0_template
37231
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37232
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
37234
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
37235
f_charbig = 'updated by trigger'
37236
WHERE f_int1 = - old.f_int1;
37238
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
37239
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
37241
# check trigger-4 success: 1
37242
DROP TRIGGER trg_1;
37243
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
37244
f_int2 = CAST(f_char1 AS SIGNED INT),
37245
f_charbig = 'just inserted'
37246
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
37248
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37249
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
37250
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
37251
'just inserted' FROM t0_template
37252
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37253
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
37255
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
37256
f_charbig = 'updated by trigger'
37257
WHERE f_int1 = new.f_int1;
37259
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
37260
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
37262
# check trigger-5 success: 1
37263
DROP TRIGGER trg_1;
37264
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
37265
f_int2 = CAST(f_char1 AS SIGNED INT),
37266
f_charbig = 'just inserted'
37267
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
37269
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37270
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
37271
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
37272
'just inserted' FROM t0_template
37273
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37274
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
37276
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
37277
f_charbig = 'updated by trigger'
37278
WHERE f_int1 = - old.f_int1;
37280
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
37281
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
37283
# check trigger-6 success: 1
37284
DROP TRIGGER trg_1;
37285
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
37286
f_int2 = CAST(f_char1 AS SIGNED INT),
37287
f_charbig = 'just inserted'
37288
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
37290
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37291
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
37292
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
37293
'just inserted' FROM t0_template
37294
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37295
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
37297
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
37298
f_charbig = 'updated by trigger'
37299
WHERE f_int1 = - old.f_int1;
37302
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
37304
# check trigger-7 success: 1
37305
DROP TRIGGER trg_1;
37306
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
37307
f_int2 = CAST(f_char1 AS SIGNED INT),
37308
f_charbig = 'just inserted'
37309
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
37311
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37312
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
37313
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
37314
'just inserted' FROM t0_template
37315
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37316
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
37318
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
37319
f_charbig = 'updated by trigger'
37320
WHERE f_int1 = - old.f_int1;
37323
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
37325
# check trigger-8 success: 1
37326
DROP TRIGGER trg_1;
37327
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
37328
f_int2 = CAST(f_char1 AS SIGNED INT),
37329
f_charbig = 'just inserted'
37330
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
37332
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37334
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37335
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
37337
SET new.f_int1 = old.f_int1 + @max_row,
37338
new.f_int2 = old.f_int2 - @max_row,
37339
new.f_charbig = '####updated per update trigger####';
37342
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
37343
f_charbig = '####updated per update statement itself####';
37345
# check trigger-9 success: 1
37346
DROP TRIGGER trg_2;
37347
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
37348
f_int2 = CAST(f_char1 AS SIGNED INT),
37349
f_charbig = CONCAT('===',f_char1,'===');
37350
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
37352
SET new.f_int1 = new.f_int1 + @max_row,
37353
new.f_int2 = new.f_int2 - @max_row,
37354
new.f_charbig = '####updated per update trigger####';
37357
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
37358
f_charbig = '####updated per update statement itself####';
37360
# check trigger-10 success: 1
37361
DROP TRIGGER trg_2;
37362
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
37363
f_int2 = CAST(f_char1 AS SIGNED INT),
37364
f_charbig = CONCAT('===',f_char1,'===');
37365
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
37367
SET new.f_int1 = @my_max1 + @counter,
37368
new.f_int2 = @my_min2 - @counter,
37369
new.f_charbig = '####updated per insert trigger####';
37370
SET @counter = @counter + 1;
37373
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
37374
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
37375
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
37376
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
37377
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
37379
DROP TRIGGER trg_3;
37381
# check trigger-11 success: 1
37383
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
37384
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
37385
AND f_charbig = '####updated per insert trigger####';
37386
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
37388
SET new.f_int1 = @my_max1 + @counter,
37389
new.f_int2 = @my_min2 - @counter,
37390
new.f_charbig = '####updated per insert trigger####';
37391
SET @counter = @counter + 1;
37394
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
37395
INSERT INTO t1 (f_char1, f_char2, f_charbig)
37396
SELECT CAST(f_int1 AS CHAR),
37397
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
37398
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
37400
DROP TRIGGER trg_3;
37402
# check trigger-12 success: 1
37404
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
37405
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
37406
AND f_charbig = '####updated per insert trigger####';
37408
Table Op Msg_type Msg_text
37409
test.t1 analyze status OK
37410
CHECK TABLE t1 EXTENDED;
37411
Table Op Msg_type Msg_text
37412
test.t1 check status OK
37413
CHECKSUM TABLE t1 EXTENDED;
37415
test.t1 <some_value>
37417
Table Op Msg_type Msg_text
37418
test.t1 optimize status OK
37419
# check layout success: 1
37420
REPAIR TABLE t1 EXTENDED;
37421
Table Op Msg_type Msg_text
37422
test.t1 repair status OK
37423
# check layout success: 1
37426
# check TRUNCATE success: 1
37427
# check layout success: 1
37428
# End usability test (inc/partition_check.inc)
37430
DROP VIEW IF EXISTS v1;
37431
DROP TABLE IF EXISTS t1;
37432
DROP TABLE IF EXISTS t0_aux;
37433
DROP TABLE IF EXISTS t0_definition;
37434
DROP TABLE IF EXISTS t0_template;