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
# 2 DROP PRIMARY KEY or UNIQUE INDEX
43
#========================================================================
44
#------------------------------------------------------------------------
45
# 2.1 Partitioning function contains one column(f_int1)
46
#------------------------------------------------------------------------
47
DROP TABLE IF EXISTS t1;
53
f_charbig VARCHAR(1000)
54
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
56
PARTITION BY HASH(f_int1) PARTITIONS 2;
57
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
58
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
59
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
60
ALTER TABLE t1 DROP INDEX uidx1, DROP INDEX uidx2;
61
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
62
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
63
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
64
# Start usability test (inc/partition_check.inc)
68
t1 CREATE TABLE `t1` (
69
`f_int1` int(11) DEFAULT NULL,
70
`f_int2` int(11) DEFAULT NULL,
71
`f_char1` char(20) DEFAULT NULL,
72
`f_char2` char(20) DEFAULT NULL,
73
`f_charbig` varchar(1000) DEFAULT NULL
74
) ENGINE=MyISAM DEFAULT CHARSET=latin1
75
/*!50100 PARTITION BY HASH (f_int1)
86
# check prerequisites-1 success: 1
87
# check COUNT(*) success: 1
88
# check MIN/MAX(f_int1) success: 1
89
# check MIN/MAX(f_int2) success: 1
90
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
91
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
92
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
93
WHERE f_int1 IN (2,3);
94
# check prerequisites-3 success: 1
95
DELETE FROM t1 WHERE f_charbig = 'delete me';
96
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
97
# check read via f_int1 success: 1
98
# check read via f_int2 success: 1
100
# check multiple-1 success: 1
101
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
103
# check multiple-2 success: 1
104
INSERT INTO t1 SELECT * FROM t0_template
105
WHERE MOD(f_int1,3) = 0;
107
# check multiple-3 success: 1
108
UPDATE t1 SET f_int1 = f_int1 + @max_row
109
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
110
AND @max_row_div2 + @max_row_div4;
112
# check multiple-4 success: 1
114
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
115
AND @max_row_div2 + @max_row_div4 + @max_row;
117
# check multiple-5 success: 1
118
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
120
SET f_int1 = @cur_value , f_int2 = @cur_value,
121
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
122
f_charbig = '#SINGLE#';
124
# check single-1 success: 1
125
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
127
SET f_int1 = @cur_value , f_int2 = @cur_value,
128
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
129
f_charbig = '#SINGLE#';
131
# check single-2 success: 1
132
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
133
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
134
UPDATE t1 SET f_int1 = @cur_value2
135
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
137
# check single-3 success: 1
139
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
140
UPDATE t1 SET f_int1 = @cur_value1
141
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
143
# check single-4 success: 1
144
SELECT MAX(f_int1) INTO @cur_value FROM t1;
145
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
147
# check single-5 success: 1
148
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
150
# check single-6 success: 1
151
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
153
# check single-7 success: 1
154
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
155
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
156
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
157
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
158
f_charbig = '#NULL#';
160
SET f_int1 = NULL , f_int2 = -@max_row,
161
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
162
f_charbig = '#NULL#';
163
# check null success: 1
165
# check null-1 success: 1
166
UPDATE t1 SET f_int1 = -@max_row
167
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
168
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
170
# check null-2 success: 1
171
UPDATE t1 SET f_int1 = NULL
172
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
173
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
175
# check null-3 success: 1
177
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
178
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
180
# check null-4 success: 1
182
WHERE f_int1 = 0 AND f_int2 = 0
183
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
184
AND f_charbig = '#NULL#';
186
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
187
SELECT f_int1, f_int1, '', '', 'was inserted'
188
FROM t0_template source_tab
189
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
191
# check transactions-1 success: 1
194
# check transactions-2 success: 1
197
# check transactions-3 success: 1
198
DELETE FROM t1 WHERE f_charbig = 'was inserted';
202
# check transactions-4 success: 1
203
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
204
SELECT f_int1, f_int1, '', '', 'was inserted'
205
FROM t0_template source_tab
206
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
208
# check transactions-5 success: 1
211
Warning 1196 Some non-transactional changed tables couldn't be rolled back
213
# check transactions-6 success: 1
214
# INFO: Storage engine used for t1 seems to be not transactional.
217
# check transactions-7 success: 1
218
DELETE FROM t1 WHERE f_charbig = 'was inserted';
220
SET @@session.sql_mode = 'traditional';
221
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
222
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
223
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
224
'', '', 'was inserted' FROM t0_template
225
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
226
ERROR 22012: Division by 0
229
# check transactions-8 success: 1
230
# INFO: Storage engine used for t1 seems to be unable to revert
231
# changes made by the failing statement.
232
SET @@session.sql_mode = '';
234
DELETE FROM t1 WHERE f_charbig = 'was inserted';
236
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
238
# check special-1 success: 1
239
UPDATE t1 SET f_charbig = '';
241
# check special-2 success: 1
242
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
243
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
244
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
245
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
246
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
247
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
248
'just inserted' FROM t0_template
249
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
250
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
252
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
253
f_charbig = 'updated by trigger'
254
WHERE f_int1 = new.f_int1;
256
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
257
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
258
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
260
# check trigger-1 success: 1
262
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
263
f_int2 = CAST(f_char1 AS SIGNED INT),
264
f_charbig = 'just inserted'
265
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
267
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
268
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
269
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
270
'just inserted' FROM t0_template
271
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
272
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
274
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
275
f_charbig = 'updated by trigger'
276
WHERE f_int1 = new.f_int1;
278
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
279
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
280
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
282
# check trigger-2 success: 1
284
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
285
f_int2 = CAST(f_char1 AS SIGNED INT),
286
f_charbig = 'just inserted'
287
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
289
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
290
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
291
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
292
'just inserted' FROM t0_template
293
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
294
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
296
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
297
f_charbig = 'updated by trigger'
298
WHERE f_int1 = new.f_int1;
300
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
301
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
303
# check trigger-3 success: 1
305
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
306
f_int2 = CAST(f_char1 AS SIGNED INT),
307
f_charbig = 'just inserted'
308
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
310
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
311
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
312
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
313
'just inserted' FROM t0_template
314
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
315
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
317
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
318
f_charbig = 'updated by trigger'
319
WHERE f_int1 = - old.f_int1;
321
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
322
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
324
# check trigger-4 success: 1
326
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
327
f_int2 = CAST(f_char1 AS SIGNED INT),
328
f_charbig = 'just inserted'
329
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
331
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
332
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
333
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
334
'just inserted' FROM t0_template
335
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
336
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
338
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
339
f_charbig = 'updated by trigger'
340
WHERE f_int1 = new.f_int1;
342
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
343
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
345
# check trigger-5 success: 1
347
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
348
f_int2 = CAST(f_char1 AS SIGNED INT),
349
f_charbig = 'just inserted'
350
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
352
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
353
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
354
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
355
'just inserted' FROM t0_template
356
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
357
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
359
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
360
f_charbig = 'updated by trigger'
361
WHERE f_int1 = - old.f_int1;
363
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
364
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
366
# check trigger-6 success: 1
368
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
369
f_int2 = CAST(f_char1 AS SIGNED INT),
370
f_charbig = 'just inserted'
371
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
373
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
374
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
375
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
376
'just inserted' FROM t0_template
377
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
378
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
380
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
381
f_charbig = 'updated by trigger'
382
WHERE f_int1 = - old.f_int1;
385
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
387
# check trigger-7 success: 1
389
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
390
f_int2 = CAST(f_char1 AS SIGNED INT),
391
f_charbig = 'just inserted'
392
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
394
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
395
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
396
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
397
'just inserted' FROM t0_template
398
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
399
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
401
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
402
f_charbig = 'updated by trigger'
403
WHERE f_int1 = - old.f_int1;
406
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
408
# check trigger-8 success: 1
410
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
411
f_int2 = CAST(f_char1 AS SIGNED INT),
412
f_charbig = 'just inserted'
413
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
415
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
417
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
418
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
420
SET new.f_int1 = old.f_int1 + @max_row,
421
new.f_int2 = old.f_int2 - @max_row,
422
new.f_charbig = '####updated per update trigger####';
425
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
426
f_charbig = '####updated per update statement itself####';
428
# check trigger-9 success: 1
430
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
431
f_int2 = CAST(f_char1 AS SIGNED INT),
432
f_charbig = CONCAT('===',f_char1,'===');
433
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
435
SET new.f_int1 = new.f_int1 + @max_row,
436
new.f_int2 = new.f_int2 - @max_row,
437
new.f_charbig = '####updated per update trigger####';
440
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
441
f_charbig = '####updated per update statement itself####';
443
# check trigger-10 success: 1
445
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
446
f_int2 = CAST(f_char1 AS SIGNED INT),
447
f_charbig = CONCAT('===',f_char1,'===');
448
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
450
SET new.f_int1 = @my_max1 + @counter,
451
new.f_int2 = @my_min2 - @counter,
452
new.f_charbig = '####updated per insert trigger####';
453
SET @counter = @counter + 1;
456
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
457
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
458
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
459
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
460
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
464
# check trigger-11 success: 1
466
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
467
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
468
AND f_charbig = '####updated per insert trigger####';
469
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
471
SET new.f_int1 = @my_max1 + @counter,
472
new.f_int2 = @my_min2 - @counter,
473
new.f_charbig = '####updated per insert trigger####';
474
SET @counter = @counter + 1;
477
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
478
INSERT INTO t1 (f_char1, f_char2, f_charbig)
479
SELECT CAST(f_int1 AS CHAR),
480
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
481
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
485
# check trigger-12 success: 1
487
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
488
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
489
AND f_charbig = '####updated per insert trigger####';
491
Table Op Msg_type Msg_text
492
test.t1 analyze status OK
493
CHECK TABLE t1 EXTENDED;
494
Table Op Msg_type Msg_text
495
test.t1 check status OK
496
CHECKSUM TABLE t1 EXTENDED;
500
Table Op Msg_type Msg_text
501
test.t1 optimize status OK
502
# check layout success: 1
503
REPAIR TABLE t1 EXTENDED;
504
Table Op Msg_type Msg_text
505
test.t1 repair status OK
506
# check layout success: 1
509
# check TRUNCATE success: 1
510
# check layout success: 1
511
# End usability test (inc/partition_check.inc)
518
f_charbig VARCHAR(1000)
519
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
521
PARTITION BY KEY(f_int1) PARTITIONS 5;
522
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
523
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
524
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
525
ALTER TABLE t1 DROP INDEX uidx1, DROP INDEX uidx2;
526
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
527
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
528
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
529
# Start usability test (inc/partition_check.inc)
531
SHOW CREATE TABLE t1;
533
t1 CREATE TABLE `t1` (
534
`f_int1` int(11) DEFAULT NULL,
535
`f_int2` int(11) DEFAULT NULL,
536
`f_char1` char(20) DEFAULT NULL,
537
`f_char2` char(20) DEFAULT NULL,
538
`f_charbig` varchar(1000) DEFAULT NULL
539
) ENGINE=MyISAM DEFAULT CHARSET=latin1
540
/*!50100 PARTITION BY KEY (f_int1)
557
# check prerequisites-1 success: 1
558
# check COUNT(*) success: 1
559
# check MIN/MAX(f_int1) success: 1
560
# check MIN/MAX(f_int2) success: 1
561
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
562
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
563
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
564
WHERE f_int1 IN (2,3);
565
# check prerequisites-3 success: 1
566
DELETE FROM t1 WHERE f_charbig = 'delete me';
567
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
568
# check read via f_int1 success: 1
569
# check read via f_int2 success: 1
571
# check multiple-1 success: 1
572
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
574
# check multiple-2 success: 1
575
INSERT INTO t1 SELECT * FROM t0_template
576
WHERE MOD(f_int1,3) = 0;
578
# check multiple-3 success: 1
579
UPDATE t1 SET f_int1 = f_int1 + @max_row
580
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
581
AND @max_row_div2 + @max_row_div4;
583
# check multiple-4 success: 1
585
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
586
AND @max_row_div2 + @max_row_div4 + @max_row;
588
# check multiple-5 success: 1
589
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
591
SET f_int1 = @cur_value , f_int2 = @cur_value,
592
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
593
f_charbig = '#SINGLE#';
595
# check single-1 success: 1
596
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
598
SET f_int1 = @cur_value , f_int2 = @cur_value,
599
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
600
f_charbig = '#SINGLE#';
602
# check single-2 success: 1
603
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
604
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
605
UPDATE t1 SET f_int1 = @cur_value2
606
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
608
# check single-3 success: 1
610
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
611
UPDATE t1 SET f_int1 = @cur_value1
612
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
614
# check single-4 success: 1
615
SELECT MAX(f_int1) INTO @cur_value FROM t1;
616
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
618
# check single-5 success: 1
619
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
621
# check single-6 success: 1
622
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
624
# check single-7 success: 1
625
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
626
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
627
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
628
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
629
f_charbig = '#NULL#';
631
SET f_int1 = NULL , f_int2 = -@max_row,
632
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
633
f_charbig = '#NULL#';
634
# check null success: 1
636
# check null-1 success: 1
637
UPDATE t1 SET f_int1 = -@max_row
638
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
639
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
641
# check null-2 success: 1
642
UPDATE t1 SET f_int1 = NULL
643
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
644
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
646
# check null-3 success: 1
648
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
649
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
651
# check null-4 success: 1
653
WHERE f_int1 = 0 AND f_int2 = 0
654
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
655
AND f_charbig = '#NULL#';
657
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
658
SELECT f_int1, f_int1, '', '', 'was inserted'
659
FROM t0_template source_tab
660
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
662
# check transactions-1 success: 1
665
# check transactions-2 success: 1
668
# check transactions-3 success: 1
669
DELETE FROM t1 WHERE f_charbig = 'was inserted';
673
# check transactions-4 success: 1
674
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
675
SELECT f_int1, f_int1, '', '', 'was inserted'
676
FROM t0_template source_tab
677
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
679
# check transactions-5 success: 1
682
Warning 1196 Some non-transactional changed tables couldn't be rolled back
684
# check transactions-6 success: 1
685
# INFO: Storage engine used for t1 seems to be not transactional.
688
# check transactions-7 success: 1
689
DELETE FROM t1 WHERE f_charbig = 'was inserted';
691
SET @@session.sql_mode = 'traditional';
692
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
693
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
694
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
695
'', '', 'was inserted' FROM t0_template
696
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
697
ERROR 22012: Division by 0
700
# check transactions-8 success: 1
701
# INFO: Storage engine used for t1 seems to be unable to revert
702
# changes made by the failing statement.
703
SET @@session.sql_mode = '';
705
DELETE FROM t1 WHERE f_charbig = 'was inserted';
707
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
709
# check special-1 success: 1
710
UPDATE t1 SET f_charbig = '';
712
# check special-2 success: 1
713
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
714
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
715
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
716
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
717
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
718
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
719
'just inserted' FROM t0_template
720
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
721
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
723
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
724
f_charbig = 'updated by trigger'
725
WHERE f_int1 = new.f_int1;
727
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
728
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
729
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
731
# check trigger-1 success: 1
733
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
734
f_int2 = CAST(f_char1 AS SIGNED INT),
735
f_charbig = 'just inserted'
736
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
738
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
739
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
740
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
741
'just inserted' FROM t0_template
742
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
743
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
745
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
746
f_charbig = 'updated by trigger'
747
WHERE f_int1 = new.f_int1;
749
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
750
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
751
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
753
# check trigger-2 success: 1
755
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
756
f_int2 = CAST(f_char1 AS SIGNED INT),
757
f_charbig = 'just inserted'
758
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
760
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
761
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
762
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
763
'just inserted' FROM t0_template
764
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
765
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
767
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
768
f_charbig = 'updated by trigger'
769
WHERE f_int1 = new.f_int1;
771
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
772
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
774
# check trigger-3 success: 1
776
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
777
f_int2 = CAST(f_char1 AS SIGNED INT),
778
f_charbig = 'just inserted'
779
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
781
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
782
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
783
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
784
'just inserted' FROM t0_template
785
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
786
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
788
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
789
f_charbig = 'updated by trigger'
790
WHERE f_int1 = - old.f_int1;
792
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
793
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
795
# check trigger-4 success: 1
797
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
798
f_int2 = CAST(f_char1 AS SIGNED INT),
799
f_charbig = 'just inserted'
800
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
802
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
803
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
804
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
805
'just inserted' FROM t0_template
806
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
807
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
809
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
810
f_charbig = 'updated by trigger'
811
WHERE f_int1 = new.f_int1;
813
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
814
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
816
# check trigger-5 success: 1
818
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
819
f_int2 = CAST(f_char1 AS SIGNED INT),
820
f_charbig = 'just inserted'
821
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
823
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
824
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
825
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
826
'just inserted' FROM t0_template
827
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
828
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
830
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
831
f_charbig = 'updated by trigger'
832
WHERE f_int1 = - old.f_int1;
834
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
835
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
837
# check trigger-6 success: 1
839
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
840
f_int2 = CAST(f_char1 AS SIGNED INT),
841
f_charbig = 'just inserted'
842
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
844
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
845
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
846
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
847
'just inserted' FROM t0_template
848
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
849
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
851
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
852
f_charbig = 'updated by trigger'
853
WHERE f_int1 = - old.f_int1;
856
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
858
# check trigger-7 success: 1
860
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
861
f_int2 = CAST(f_char1 AS SIGNED INT),
862
f_charbig = 'just inserted'
863
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
865
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
866
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
867
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
868
'just inserted' FROM t0_template
869
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
870
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
872
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
873
f_charbig = 'updated by trigger'
874
WHERE f_int1 = - old.f_int1;
877
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
879
# check trigger-8 success: 1
881
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
882
f_int2 = CAST(f_char1 AS SIGNED INT),
883
f_charbig = 'just inserted'
884
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
886
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
888
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
889
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
891
SET new.f_int1 = old.f_int1 + @max_row,
892
new.f_int2 = old.f_int2 - @max_row,
893
new.f_charbig = '####updated per update trigger####';
896
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
897
f_charbig = '####updated per update statement itself####';
899
# check trigger-9 success: 1
901
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
902
f_int2 = CAST(f_char1 AS SIGNED INT),
903
f_charbig = CONCAT('===',f_char1,'===');
904
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
906
SET new.f_int1 = new.f_int1 + @max_row,
907
new.f_int2 = new.f_int2 - @max_row,
908
new.f_charbig = '####updated per update trigger####';
911
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
912
f_charbig = '####updated per update statement itself####';
914
# check trigger-10 success: 1
916
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
917
f_int2 = CAST(f_char1 AS SIGNED INT),
918
f_charbig = CONCAT('===',f_char1,'===');
919
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
921
SET new.f_int1 = @my_max1 + @counter,
922
new.f_int2 = @my_min2 - @counter,
923
new.f_charbig = '####updated per insert trigger####';
924
SET @counter = @counter + 1;
927
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
928
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
929
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
930
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
931
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
935
# check trigger-11 success: 1
937
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
938
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
939
AND f_charbig = '####updated per insert trigger####';
940
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
942
SET new.f_int1 = @my_max1 + @counter,
943
new.f_int2 = @my_min2 - @counter,
944
new.f_charbig = '####updated per insert trigger####';
945
SET @counter = @counter + 1;
948
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
949
INSERT INTO t1 (f_char1, f_char2, f_charbig)
950
SELECT CAST(f_int1 AS CHAR),
951
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
952
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
956
# check trigger-12 success: 1
958
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
959
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
960
AND f_charbig = '####updated per insert trigger####';
962
Table Op Msg_type Msg_text
963
test.t1 analyze status OK
964
CHECK TABLE t1 EXTENDED;
965
Table Op Msg_type Msg_text
966
test.t1 check status OK
967
CHECKSUM TABLE t1 EXTENDED;
971
Table Op Msg_type Msg_text
972
test.t1 optimize status OK
973
# check layout success: 1
974
REPAIR TABLE t1 EXTENDED;
975
Table Op Msg_type Msg_text
976
test.t1 repair status OK
977
# check layout success: 1
980
# check TRUNCATE success: 1
981
# check layout success: 1
982
# End usability test (inc/partition_check.inc)
989
f_charbig VARCHAR(1000)
990
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
992
PARTITION BY LIST(MOD(f_int1,4))
993
(PARTITION part_3 VALUES IN (-3),
994
PARTITION part_2 VALUES IN (-2),
995
PARTITION part_1 VALUES IN (-1),
996
PARTITION part_N VALUES IN (NULL),
997
PARTITION part0 VALUES IN (0),
998
PARTITION part1 VALUES IN (1),
999
PARTITION part2 VALUES IN (2),
1000
PARTITION part3 VALUES IN (3));
1001
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
1002
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
1003
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
1004
ALTER TABLE t1 DROP INDEX uidx1, DROP INDEX uidx2;
1005
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
1006
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
1007
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
1008
# Start usability test (inc/partition_check.inc)
1010
SHOW CREATE TABLE t1;
1012
t1 CREATE TABLE `t1` (
1013
`f_int1` int(11) DEFAULT NULL,
1014
`f_int2` int(11) DEFAULT NULL,
1015
`f_char1` char(20) DEFAULT NULL,
1016
`f_char2` char(20) DEFAULT NULL,
1017
`f_charbig` varchar(1000) DEFAULT NULL
1018
) ENGINE=MyISAM DEFAULT CHARSET=latin1
1019
/*!50100 PARTITION BY LIST (MOD(f_int1,4))
1020
(PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM,
1021
PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM,
1022
PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM,
1023
PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM,
1024
PARTITION part0 VALUES IN (0) ENGINE = MyISAM,
1025
PARTITION part1 VALUES IN (1) ENGINE = MyISAM,
1026
PARTITION part2 VALUES IN (2) ENGINE = MyISAM,
1027
PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */
1049
# check prerequisites-1 success: 1
1050
# check COUNT(*) success: 1
1051
# check MIN/MAX(f_int1) success: 1
1052
# check MIN/MAX(f_int2) success: 1
1053
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1054
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
1055
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
1056
WHERE f_int1 IN (2,3);
1057
# check prerequisites-3 success: 1
1058
DELETE FROM t1 WHERE f_charbig = 'delete me';
1059
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
1060
# check read via f_int1 success: 1
1061
# check read via f_int2 success: 1
1063
# check multiple-1 success: 1
1064
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
1066
# check multiple-2 success: 1
1067
INSERT INTO t1 SELECT * FROM t0_template
1068
WHERE MOD(f_int1,3) = 0;
1070
# check multiple-3 success: 1
1071
UPDATE t1 SET f_int1 = f_int1 + @max_row
1072
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
1073
AND @max_row_div2 + @max_row_div4;
1075
# check multiple-4 success: 1
1077
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
1078
AND @max_row_div2 + @max_row_div4 + @max_row;
1080
# check multiple-5 success: 1
1081
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
1083
SET f_int1 = @cur_value , f_int2 = @cur_value,
1084
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
1085
f_charbig = '#SINGLE#';
1087
# check single-1 success: 1
1088
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
1090
SET f_int1 = @cur_value , f_int2 = @cur_value,
1091
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
1092
f_charbig = '#SINGLE#';
1094
# check single-2 success: 1
1095
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
1096
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
1097
UPDATE t1 SET f_int1 = @cur_value2
1098
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
1100
# check single-3 success: 1
1101
SET @cur_value1= -1;
1102
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
1103
UPDATE t1 SET f_int1 = @cur_value1
1104
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
1106
# check single-4 success: 1
1107
SELECT MAX(f_int1) INTO @cur_value FROM t1;
1108
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
1110
# check single-5 success: 1
1111
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
1113
# check single-6 success: 1
1114
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
1116
# check single-7 success: 1
1117
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
1118
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
1119
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
1120
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
1121
f_charbig = '#NULL#';
1123
SET f_int1 = NULL , f_int2 = -@max_row,
1124
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
1125
f_charbig = '#NULL#';
1126
# check null success: 1
1128
# check null-1 success: 1
1129
UPDATE t1 SET f_int1 = -@max_row
1130
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
1131
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
1133
# check null-2 success: 1
1134
UPDATE t1 SET f_int1 = NULL
1135
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
1136
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
1138
# check null-3 success: 1
1140
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
1141
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
1143
# check null-4 success: 1
1145
WHERE f_int1 = 0 AND f_int2 = 0
1146
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
1147
AND f_charbig = '#NULL#';
1149
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1150
SELECT f_int1, f_int1, '', '', 'was inserted'
1151
FROM t0_template source_tab
1152
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
1154
# check transactions-1 success: 1
1157
# check transactions-2 success: 1
1160
# check transactions-3 success: 1
1161
DELETE FROM t1 WHERE f_charbig = 'was inserted';
1165
# check transactions-4 success: 1
1166
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1167
SELECT f_int1, f_int1, '', '', 'was inserted'
1168
FROM t0_template source_tab
1169
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
1171
# check transactions-5 success: 1
1174
Warning 1196 Some non-transactional changed tables couldn't be rolled back
1176
# check transactions-6 success: 1
1177
# INFO: Storage engine used for t1 seems to be not transactional.
1180
# check transactions-7 success: 1
1181
DELETE FROM t1 WHERE f_charbig = 'was inserted';
1183
SET @@session.sql_mode = 'traditional';
1184
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
1185
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1186
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
1187
'', '', 'was inserted' FROM t0_template
1188
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
1189
ERROR 22012: Division by 0
1192
# check transactions-8 success: 1
1193
# INFO: Storage engine used for t1 seems to be unable to revert
1194
# changes made by the failing statement.
1195
SET @@session.sql_mode = '';
1197
DELETE FROM t1 WHERE f_charbig = 'was inserted';
1199
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
1201
# check special-1 success: 1
1202
UPDATE t1 SET f_charbig = '';
1204
# check special-2 success: 1
1205
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
1206
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
1207
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
1208
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1209
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1210
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1211
'just inserted' FROM t0_template
1212
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1213
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
1215
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1216
f_charbig = 'updated by trigger'
1217
WHERE f_int1 = new.f_int1;
1219
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1220
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
1221
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1223
# check trigger-1 success: 1
1225
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1226
f_int2 = CAST(f_char1 AS SIGNED INT),
1227
f_charbig = 'just inserted'
1228
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1230
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1231
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1232
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1233
'just inserted' FROM t0_template
1234
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1235
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
1237
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1238
f_charbig = 'updated by trigger'
1239
WHERE f_int1 = new.f_int1;
1241
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1242
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
1243
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1245
# check trigger-2 success: 1
1247
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1248
f_int2 = CAST(f_char1 AS SIGNED INT),
1249
f_charbig = 'just inserted'
1250
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1252
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1253
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1254
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1255
'just inserted' FROM t0_template
1256
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1257
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
1259
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1260
f_charbig = 'updated by trigger'
1261
WHERE f_int1 = new.f_int1;
1263
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
1264
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1266
# check trigger-3 success: 1
1268
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1269
f_int2 = CAST(f_char1 AS SIGNED INT),
1270
f_charbig = 'just inserted'
1271
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1273
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1274
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1275
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1276
'just inserted' FROM t0_template
1277
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1278
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
1280
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1281
f_charbig = 'updated by trigger'
1282
WHERE f_int1 = - old.f_int1;
1284
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
1285
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1287
# check trigger-4 success: 1
1289
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1290
f_int2 = CAST(f_char1 AS SIGNED INT),
1291
f_charbig = 'just inserted'
1292
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1294
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1295
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1296
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1297
'just inserted' FROM t0_template
1298
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1299
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
1301
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1302
f_charbig = 'updated by trigger'
1303
WHERE f_int1 = new.f_int1;
1305
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
1306
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1308
# check trigger-5 success: 1
1310
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1311
f_int2 = CAST(f_char1 AS SIGNED INT),
1312
f_charbig = 'just inserted'
1313
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1315
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1316
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1317
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1318
'just inserted' FROM t0_template
1319
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1320
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
1322
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1323
f_charbig = 'updated by trigger'
1324
WHERE f_int1 = - old.f_int1;
1326
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
1327
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1329
# check trigger-6 success: 1
1331
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1332
f_int2 = CAST(f_char1 AS SIGNED INT),
1333
f_charbig = 'just inserted'
1334
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1336
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1337
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1338
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1339
'just inserted' FROM t0_template
1340
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1341
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
1343
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1344
f_charbig = 'updated by trigger'
1345
WHERE f_int1 = - old.f_int1;
1348
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1350
# check trigger-7 success: 1
1352
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1353
f_int2 = CAST(f_char1 AS SIGNED INT),
1354
f_charbig = 'just inserted'
1355
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1357
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1358
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1359
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1360
'just inserted' FROM t0_template
1361
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1362
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
1364
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1365
f_charbig = 'updated by trigger'
1366
WHERE f_int1 = - old.f_int1;
1369
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1371
# check trigger-8 success: 1
1373
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1374
f_int2 = CAST(f_char1 AS SIGNED INT),
1375
f_charbig = 'just inserted'
1376
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1378
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1380
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1381
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
1383
SET new.f_int1 = old.f_int1 + @max_row,
1384
new.f_int2 = old.f_int2 - @max_row,
1385
new.f_charbig = '####updated per update trigger####';
1388
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
1389
f_charbig = '####updated per update statement itself####';
1391
# check trigger-9 success: 1
1393
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1394
f_int2 = CAST(f_char1 AS SIGNED INT),
1395
f_charbig = CONCAT('===',f_char1,'===');
1396
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
1398
SET new.f_int1 = new.f_int1 + @max_row,
1399
new.f_int2 = new.f_int2 - @max_row,
1400
new.f_charbig = '####updated per update trigger####';
1403
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
1404
f_charbig = '####updated per update statement itself####';
1406
# check trigger-10 success: 1
1408
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1409
f_int2 = CAST(f_char1 AS SIGNED INT),
1410
f_charbig = CONCAT('===',f_char1,'===');
1411
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
1413
SET new.f_int1 = @my_max1 + @counter,
1414
new.f_int2 = @my_min2 - @counter,
1415
new.f_charbig = '####updated per insert trigger####';
1416
SET @counter = @counter + 1;
1419
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
1420
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1421
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
1422
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
1423
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
1427
# check trigger-11 success: 1
1429
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
1430
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
1431
AND f_charbig = '####updated per insert trigger####';
1432
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
1434
SET new.f_int1 = @my_max1 + @counter,
1435
new.f_int2 = @my_min2 - @counter,
1436
new.f_charbig = '####updated per insert trigger####';
1437
SET @counter = @counter + 1;
1440
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
1441
INSERT INTO t1 (f_char1, f_char2, f_charbig)
1442
SELECT CAST(f_int1 AS CHAR),
1443
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
1444
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
1448
# check trigger-12 success: 1
1450
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
1451
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
1452
AND f_charbig = '####updated per insert trigger####';
1454
Table Op Msg_type Msg_text
1455
test.t1 analyze status OK
1456
CHECK TABLE t1 EXTENDED;
1457
Table Op Msg_type Msg_text
1458
test.t1 check status OK
1459
CHECKSUM TABLE t1 EXTENDED;
1461
test.t1 <some_value>
1463
Table Op Msg_type Msg_text
1464
test.t1 optimize status OK
1465
# check layout success: 1
1466
REPAIR TABLE t1 EXTENDED;
1467
Table Op Msg_type Msg_text
1468
test.t1 repair status OK
1469
# check layout success: 1
1472
# check TRUNCATE success: 1
1473
# check layout success: 1
1474
# End usability test (inc/partition_check.inc)
1481
f_charbig VARCHAR(1000)
1482
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
1484
PARTITION BY RANGE(f_int1)
1485
(PARTITION parta VALUES LESS THAN (0),
1486
PARTITION partb VALUES LESS THAN (5),
1487
PARTITION partc VALUES LESS THAN (10),
1488
PARTITION partd VALUES LESS THAN (10 + 5),
1489
PARTITION parte VALUES LESS THAN (20),
1490
PARTITION partf VALUES LESS THAN (2147483646));
1491
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
1492
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
1493
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
1494
ALTER TABLE t1 DROP INDEX uidx1, DROP INDEX uidx2;
1495
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
1496
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
1497
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
1498
# Start usability test (inc/partition_check.inc)
1500
SHOW CREATE TABLE t1;
1502
t1 CREATE TABLE `t1` (
1503
`f_int1` int(11) DEFAULT NULL,
1504
`f_int2` int(11) DEFAULT NULL,
1505
`f_char1` char(20) DEFAULT NULL,
1506
`f_char2` char(20) DEFAULT NULL,
1507
`f_charbig` varchar(1000) DEFAULT NULL
1508
) ENGINE=MyISAM DEFAULT CHARSET=latin1
1509
/*!50100 PARTITION BY RANGE (f_int1)
1510
(PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM,
1511
PARTITION partb VALUES LESS THAN (5) ENGINE = MyISAM,
1512
PARTITION partc VALUES LESS THAN (10) ENGINE = MyISAM,
1513
PARTITION partd VALUES LESS THAN (15) ENGINE = MyISAM,
1514
PARTITION parte VALUES LESS THAN (20) ENGINE = MyISAM,
1515
PARTITION partf VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
1533
# check prerequisites-1 success: 1
1534
# check COUNT(*) success: 1
1535
# check MIN/MAX(f_int1) success: 1
1536
# check MIN/MAX(f_int2) success: 1
1537
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1538
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
1539
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
1540
WHERE f_int1 IN (2,3);
1541
# check prerequisites-3 success: 1
1542
DELETE FROM t1 WHERE f_charbig = 'delete me';
1543
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
1544
# check read via f_int1 success: 1
1545
# check read via f_int2 success: 1
1547
# check multiple-1 success: 1
1548
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
1550
# check multiple-2 success: 1
1551
INSERT INTO t1 SELECT * FROM t0_template
1552
WHERE MOD(f_int1,3) = 0;
1554
# check multiple-3 success: 1
1555
UPDATE t1 SET f_int1 = f_int1 + @max_row
1556
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
1557
AND @max_row_div2 + @max_row_div4;
1559
# check multiple-4 success: 1
1561
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
1562
AND @max_row_div2 + @max_row_div4 + @max_row;
1564
# check multiple-5 success: 1
1565
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
1567
SET f_int1 = @cur_value , f_int2 = @cur_value,
1568
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
1569
f_charbig = '#SINGLE#';
1571
# check single-1 success: 1
1572
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
1574
SET f_int1 = @cur_value , f_int2 = @cur_value,
1575
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
1576
f_charbig = '#SINGLE#';
1578
# check single-2 success: 1
1579
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
1580
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
1581
UPDATE t1 SET f_int1 = @cur_value2
1582
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
1584
# check single-3 success: 1
1585
SET @cur_value1= -1;
1586
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
1587
UPDATE t1 SET f_int1 = @cur_value1
1588
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
1590
# check single-4 success: 1
1591
SELECT MAX(f_int1) INTO @cur_value FROM t1;
1592
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
1594
# check single-5 success: 1
1595
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
1597
# check single-6 success: 1
1598
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
1599
ERROR HY000: Table has no partition for value 2147483647
1600
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
1601
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
1602
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
1603
f_charbig = '#NULL#';
1605
SET f_int1 = NULL , f_int2 = -@max_row,
1606
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
1607
f_charbig = '#NULL#';
1608
# check null success: 1
1610
# check null-1 success: 1
1611
UPDATE t1 SET f_int1 = -@max_row
1612
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
1613
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
1615
# check null-2 success: 1
1616
UPDATE t1 SET f_int1 = NULL
1617
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
1618
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
1620
# check null-3 success: 1
1622
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
1623
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
1625
# check null-4 success: 1
1627
WHERE f_int1 = 0 AND f_int2 = 0
1628
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
1629
AND f_charbig = '#NULL#';
1631
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1632
SELECT f_int1, f_int1, '', '', 'was inserted'
1633
FROM t0_template source_tab
1634
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
1636
# check transactions-1 success: 1
1639
# check transactions-2 success: 1
1642
# check transactions-3 success: 1
1643
DELETE FROM t1 WHERE f_charbig = 'was inserted';
1647
# check transactions-4 success: 1
1648
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1649
SELECT f_int1, f_int1, '', '', 'was inserted'
1650
FROM t0_template source_tab
1651
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
1653
# check transactions-5 success: 1
1656
Warning 1196 Some non-transactional changed tables couldn't be rolled back
1658
# check transactions-6 success: 1
1659
# INFO: Storage engine used for t1 seems to be not transactional.
1662
# check transactions-7 success: 1
1663
DELETE FROM t1 WHERE f_charbig = 'was inserted';
1665
SET @@session.sql_mode = 'traditional';
1666
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
1667
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1668
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
1669
'', '', 'was inserted' FROM t0_template
1670
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
1671
ERROR 22012: Division by 0
1674
# check transactions-8 success: 1
1675
# INFO: Storage engine used for t1 seems to be unable to revert
1676
# changes made by the failing statement.
1677
SET @@session.sql_mode = '';
1679
DELETE FROM t1 WHERE f_charbig = 'was inserted';
1681
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
1683
# check special-1 success: 1
1684
UPDATE t1 SET f_charbig = '';
1686
# check special-2 success: 1
1687
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
1688
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
1689
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
1690
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1691
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1692
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1693
'just inserted' FROM t0_template
1694
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1695
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
1697
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1698
f_charbig = 'updated by trigger'
1699
WHERE f_int1 = new.f_int1;
1701
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1702
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
1703
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1705
# check trigger-1 success: 1
1707
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1708
f_int2 = CAST(f_char1 AS SIGNED INT),
1709
f_charbig = 'just inserted'
1710
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1712
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1713
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1714
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1715
'just inserted' FROM t0_template
1716
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1717
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
1719
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1720
f_charbig = 'updated by trigger'
1721
WHERE f_int1 = new.f_int1;
1723
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1724
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
1725
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1727
# check trigger-2 success: 1
1729
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1730
f_int2 = CAST(f_char1 AS SIGNED INT),
1731
f_charbig = 'just inserted'
1732
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1734
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1735
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1736
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1737
'just inserted' FROM t0_template
1738
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1739
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
1741
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1742
f_charbig = 'updated by trigger'
1743
WHERE f_int1 = new.f_int1;
1745
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
1746
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1748
# check trigger-3 success: 1
1750
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1751
f_int2 = CAST(f_char1 AS SIGNED INT),
1752
f_charbig = 'just inserted'
1753
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1755
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1756
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1757
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1758
'just inserted' FROM t0_template
1759
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1760
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
1762
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1763
f_charbig = 'updated by trigger'
1764
WHERE f_int1 = - old.f_int1;
1766
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
1767
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1769
# check trigger-4 success: 1
1771
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1772
f_int2 = CAST(f_char1 AS SIGNED INT),
1773
f_charbig = 'just inserted'
1774
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1776
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1777
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1778
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1779
'just inserted' FROM t0_template
1780
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1781
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
1783
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1784
f_charbig = 'updated by trigger'
1785
WHERE f_int1 = new.f_int1;
1787
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
1788
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1790
# check trigger-5 success: 1
1792
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1793
f_int2 = CAST(f_char1 AS SIGNED INT),
1794
f_charbig = 'just inserted'
1795
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1797
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1798
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1799
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1800
'just inserted' FROM t0_template
1801
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1802
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
1804
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1805
f_charbig = 'updated by trigger'
1806
WHERE f_int1 = - old.f_int1;
1808
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
1809
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1811
# check trigger-6 success: 1
1813
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1814
f_int2 = CAST(f_char1 AS SIGNED INT),
1815
f_charbig = 'just inserted'
1816
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1818
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1819
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1820
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1821
'just inserted' FROM t0_template
1822
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1823
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
1825
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1826
f_charbig = 'updated by trigger'
1827
WHERE f_int1 = - old.f_int1;
1830
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1832
# check trigger-7 success: 1
1834
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1835
f_int2 = CAST(f_char1 AS SIGNED INT),
1836
f_charbig = 'just inserted'
1837
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1839
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1840
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1841
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1842
'just inserted' FROM t0_template
1843
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1844
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
1846
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1847
f_charbig = 'updated by trigger'
1848
WHERE f_int1 = - old.f_int1;
1851
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1853
# check trigger-8 success: 1
1855
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1856
f_int2 = CAST(f_char1 AS SIGNED INT),
1857
f_charbig = 'just inserted'
1858
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1860
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1862
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1863
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
1865
SET new.f_int1 = old.f_int1 + @max_row,
1866
new.f_int2 = old.f_int2 - @max_row,
1867
new.f_charbig = '####updated per update trigger####';
1870
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
1871
f_charbig = '####updated per update statement itself####';
1873
# check trigger-9 success: 1
1875
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1876
f_int2 = CAST(f_char1 AS SIGNED INT),
1877
f_charbig = CONCAT('===',f_char1,'===');
1878
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
1880
SET new.f_int1 = new.f_int1 + @max_row,
1881
new.f_int2 = new.f_int2 - @max_row,
1882
new.f_charbig = '####updated per update trigger####';
1885
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
1886
f_charbig = '####updated per update statement itself####';
1888
# check trigger-10 success: 1
1890
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1891
f_int2 = CAST(f_char1 AS SIGNED INT),
1892
f_charbig = CONCAT('===',f_char1,'===');
1893
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
1895
SET new.f_int1 = @my_max1 + @counter,
1896
new.f_int2 = @my_min2 - @counter,
1897
new.f_charbig = '####updated per insert trigger####';
1898
SET @counter = @counter + 1;
1901
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
1902
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1903
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
1904
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
1905
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
1909
# check trigger-11 success: 1
1911
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
1912
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
1913
AND f_charbig = '####updated per insert trigger####';
1914
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
1916
SET new.f_int1 = @my_max1 + @counter,
1917
new.f_int2 = @my_min2 - @counter,
1918
new.f_charbig = '####updated per insert trigger####';
1919
SET @counter = @counter + 1;
1922
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
1923
INSERT INTO t1 (f_char1, f_char2, f_charbig)
1924
SELECT CAST(f_int1 AS CHAR),
1925
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
1926
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
1930
# check trigger-12 success: 1
1932
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
1933
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
1934
AND f_charbig = '####updated per insert trigger####';
1936
Table Op Msg_type Msg_text
1937
test.t1 analyze status OK
1938
CHECK TABLE t1 EXTENDED;
1939
Table Op Msg_type Msg_text
1940
test.t1 check status OK
1941
CHECKSUM TABLE t1 EXTENDED;
1943
test.t1 <some_value>
1945
Table Op Msg_type Msg_text
1946
test.t1 optimize status OK
1947
# check layout success: 1
1948
REPAIR TABLE t1 EXTENDED;
1949
Table Op Msg_type Msg_text
1950
test.t1 repair status OK
1951
# check layout success: 1
1954
# check TRUNCATE success: 1
1955
# check layout success: 1
1956
# End usability test (inc/partition_check.inc)
1963
f_charbig VARCHAR(1000)
1964
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
1966
PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
1967
(PARTITION parta VALUES LESS THAN (0),
1968
PARTITION partb VALUES LESS THAN (5),
1969
PARTITION partc VALUES LESS THAN (10),
1970
PARTITION partd VALUES LESS THAN (2147483646));
1971
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
1972
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
1973
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
1974
ALTER TABLE t1 DROP INDEX uidx1, DROP INDEX uidx2;
1975
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
1976
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
1977
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
1978
# Start usability test (inc/partition_check.inc)
1980
SHOW CREATE TABLE t1;
1982
t1 CREATE TABLE `t1` (
1983
`f_int1` int(11) DEFAULT NULL,
1984
`f_int2` int(11) DEFAULT NULL,
1985
`f_char1` char(20) DEFAULT NULL,
1986
`f_char2` char(20) DEFAULT NULL,
1987
`f_charbig` varchar(1000) DEFAULT NULL
1988
) ENGINE=MyISAM DEFAULT CHARSET=latin1
1989
/*!50100 PARTITION BY RANGE (f_int1 DIV 2)
1990
SUBPARTITION BY HASH (f_int1)
1992
(PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM,
1993
PARTITION partb VALUES LESS THAN (5) ENGINE = MyISAM,
1994
PARTITION partc VALUES LESS THAN (10) ENGINE = MyISAM,
1995
PARTITION partd VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
1998
t1#P#parta#SP#partasp0.MYD
1999
t1#P#parta#SP#partasp0.MYI
2000
t1#P#parta#SP#partasp1.MYD
2001
t1#P#parta#SP#partasp1.MYI
2002
t1#P#partb#SP#partbsp0.MYD
2003
t1#P#partb#SP#partbsp0.MYI
2004
t1#P#partb#SP#partbsp1.MYD
2005
t1#P#partb#SP#partbsp1.MYI
2006
t1#P#partc#SP#partcsp0.MYD
2007
t1#P#partc#SP#partcsp0.MYI
2008
t1#P#partc#SP#partcsp1.MYD
2009
t1#P#partc#SP#partcsp1.MYI
2010
t1#P#partd#SP#partdsp0.MYD
2011
t1#P#partd#SP#partdsp0.MYI
2012
t1#P#partd#SP#partdsp1.MYD
2013
t1#P#partd#SP#partdsp1.MYI
2017
# check prerequisites-1 success: 1
2018
# check COUNT(*) success: 1
2019
# check MIN/MAX(f_int1) success: 1
2020
# check MIN/MAX(f_int2) success: 1
2021
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2022
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
2023
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
2024
WHERE f_int1 IN (2,3);
2025
# check prerequisites-3 success: 1
2026
DELETE FROM t1 WHERE f_charbig = 'delete me';
2027
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
2028
# check read via f_int1 success: 1
2029
# check read via f_int2 success: 1
2031
# check multiple-1 success: 1
2032
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
2034
# check multiple-2 success: 1
2035
INSERT INTO t1 SELECT * FROM t0_template
2036
WHERE MOD(f_int1,3) = 0;
2038
# check multiple-3 success: 1
2039
UPDATE t1 SET f_int1 = f_int1 + @max_row
2040
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
2041
AND @max_row_div2 + @max_row_div4;
2043
# check multiple-4 success: 1
2045
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
2046
AND @max_row_div2 + @max_row_div4 + @max_row;
2048
# check multiple-5 success: 1
2049
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
2051
SET f_int1 = @cur_value , f_int2 = @cur_value,
2052
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
2053
f_charbig = '#SINGLE#';
2055
# check single-1 success: 1
2056
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
2058
SET f_int1 = @cur_value , f_int2 = @cur_value,
2059
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
2060
f_charbig = '#SINGLE#';
2062
# check single-2 success: 1
2063
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
2064
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
2065
UPDATE t1 SET f_int1 = @cur_value2
2066
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
2068
# check single-3 success: 1
2069
SET @cur_value1= -1;
2070
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
2071
UPDATE t1 SET f_int1 = @cur_value1
2072
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
2074
# check single-4 success: 1
2075
SELECT MAX(f_int1) INTO @cur_value FROM t1;
2076
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
2078
# check single-5 success: 1
2079
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
2081
# check single-6 success: 1
2082
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
2084
# check single-7 success: 1
2085
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
2086
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
2087
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
2088
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
2089
f_charbig = '#NULL#';
2091
SET f_int1 = NULL , f_int2 = -@max_row,
2092
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
2093
f_charbig = '#NULL#';
2094
# check null success: 1
2096
# check null-1 success: 1
2097
UPDATE t1 SET f_int1 = -@max_row
2098
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
2099
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
2101
# check null-2 success: 1
2102
UPDATE t1 SET f_int1 = NULL
2103
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
2104
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
2106
# check null-3 success: 1
2108
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
2109
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
2111
# check null-4 success: 1
2113
WHERE f_int1 = 0 AND f_int2 = 0
2114
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
2115
AND f_charbig = '#NULL#';
2117
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2118
SELECT f_int1, f_int1, '', '', 'was inserted'
2119
FROM t0_template source_tab
2120
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
2122
# check transactions-1 success: 1
2125
# check transactions-2 success: 1
2128
# check transactions-3 success: 1
2129
DELETE FROM t1 WHERE f_charbig = 'was inserted';
2133
# check transactions-4 success: 1
2134
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2135
SELECT f_int1, f_int1, '', '', 'was inserted'
2136
FROM t0_template source_tab
2137
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
2139
# check transactions-5 success: 1
2142
Warning 1196 Some non-transactional changed tables couldn't be rolled back
2144
# check transactions-6 success: 1
2145
# INFO: Storage engine used for t1 seems to be not transactional.
2148
# check transactions-7 success: 1
2149
DELETE FROM t1 WHERE f_charbig = 'was inserted';
2151
SET @@session.sql_mode = 'traditional';
2152
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
2153
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2154
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
2155
'', '', 'was inserted' FROM t0_template
2156
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
2157
ERROR 22012: Division by 0
2160
# check transactions-8 success: 1
2161
# INFO: Storage engine used for t1 seems to be unable to revert
2162
# changes made by the failing statement.
2163
SET @@session.sql_mode = '';
2165
DELETE FROM t1 WHERE f_charbig = 'was inserted';
2167
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
2169
# check special-1 success: 1
2170
UPDATE t1 SET f_charbig = '';
2172
# check special-2 success: 1
2173
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
2174
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
2175
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
2176
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2177
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2178
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2179
'just inserted' FROM t0_template
2180
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2181
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
2183
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2184
f_charbig = 'updated by trigger'
2185
WHERE f_int1 = new.f_int1;
2187
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2188
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
2189
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2191
# check trigger-1 success: 1
2193
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2194
f_int2 = CAST(f_char1 AS SIGNED INT),
2195
f_charbig = 'just inserted'
2196
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2198
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2199
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2200
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2201
'just inserted' FROM t0_template
2202
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2203
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
2205
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2206
f_charbig = 'updated by trigger'
2207
WHERE f_int1 = new.f_int1;
2209
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2210
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
2211
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2213
# check trigger-2 success: 1
2215
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2216
f_int2 = CAST(f_char1 AS SIGNED INT),
2217
f_charbig = 'just inserted'
2218
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2220
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2221
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2222
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2223
'just inserted' FROM t0_template
2224
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2225
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
2227
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2228
f_charbig = 'updated by trigger'
2229
WHERE f_int1 = new.f_int1;
2231
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
2232
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2234
# check trigger-3 success: 1
2236
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2237
f_int2 = CAST(f_char1 AS SIGNED INT),
2238
f_charbig = 'just inserted'
2239
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2241
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2242
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2243
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2244
'just inserted' FROM t0_template
2245
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2246
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
2248
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2249
f_charbig = 'updated by trigger'
2250
WHERE f_int1 = - old.f_int1;
2252
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
2253
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2255
# check trigger-4 success: 1
2257
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2258
f_int2 = CAST(f_char1 AS SIGNED INT),
2259
f_charbig = 'just inserted'
2260
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2262
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2263
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2264
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2265
'just inserted' FROM t0_template
2266
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2267
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
2269
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2270
f_charbig = 'updated by trigger'
2271
WHERE f_int1 = new.f_int1;
2273
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
2274
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2276
# check trigger-5 success: 1
2278
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2279
f_int2 = CAST(f_char1 AS SIGNED INT),
2280
f_charbig = 'just inserted'
2281
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2283
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2284
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2285
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2286
'just inserted' FROM t0_template
2287
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2288
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
2290
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2291
f_charbig = 'updated by trigger'
2292
WHERE f_int1 = - old.f_int1;
2294
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
2295
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2297
# check trigger-6 success: 1
2299
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2300
f_int2 = CAST(f_char1 AS SIGNED INT),
2301
f_charbig = 'just inserted'
2302
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2304
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2305
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2306
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2307
'just inserted' FROM t0_template
2308
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2309
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
2311
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2312
f_charbig = 'updated by trigger'
2313
WHERE f_int1 = - old.f_int1;
2316
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2318
# check trigger-7 success: 1
2320
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2321
f_int2 = CAST(f_char1 AS SIGNED INT),
2322
f_charbig = 'just inserted'
2323
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2325
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2326
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2327
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2328
'just inserted' FROM t0_template
2329
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2330
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
2332
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2333
f_charbig = 'updated by trigger'
2334
WHERE f_int1 = - old.f_int1;
2337
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2339
# check trigger-8 success: 1
2341
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2342
f_int2 = CAST(f_char1 AS SIGNED INT),
2343
f_charbig = 'just inserted'
2344
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2346
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2348
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2349
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
2351
SET new.f_int1 = old.f_int1 + @max_row,
2352
new.f_int2 = old.f_int2 - @max_row,
2353
new.f_charbig = '####updated per update trigger####';
2356
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
2357
f_charbig = '####updated per update statement itself####';
2359
# check trigger-9 success: 1
2361
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2362
f_int2 = CAST(f_char1 AS SIGNED INT),
2363
f_charbig = CONCAT('===',f_char1,'===');
2364
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
2366
SET new.f_int1 = new.f_int1 + @max_row,
2367
new.f_int2 = new.f_int2 - @max_row,
2368
new.f_charbig = '####updated per update trigger####';
2371
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
2372
f_charbig = '####updated per update statement itself####';
2374
# check trigger-10 success: 1
2376
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2377
f_int2 = CAST(f_char1 AS SIGNED INT),
2378
f_charbig = CONCAT('===',f_char1,'===');
2379
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
2381
SET new.f_int1 = @my_max1 + @counter,
2382
new.f_int2 = @my_min2 - @counter,
2383
new.f_charbig = '####updated per insert trigger####';
2384
SET @counter = @counter + 1;
2387
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
2388
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2389
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
2390
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
2391
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
2395
# check trigger-11 success: 1
2397
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
2398
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
2399
AND f_charbig = '####updated per insert trigger####';
2400
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
2402
SET new.f_int1 = @my_max1 + @counter,
2403
new.f_int2 = @my_min2 - @counter,
2404
new.f_charbig = '####updated per insert trigger####';
2405
SET @counter = @counter + 1;
2408
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
2409
INSERT INTO t1 (f_char1, f_char2, f_charbig)
2410
SELECT CAST(f_int1 AS CHAR),
2411
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
2412
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
2416
# check trigger-12 success: 1
2418
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
2419
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
2420
AND f_charbig = '####updated per insert trigger####';
2422
Table Op Msg_type Msg_text
2423
test.t1 analyze status OK
2424
CHECK TABLE t1 EXTENDED;
2425
Table Op Msg_type Msg_text
2426
test.t1 check status OK
2427
CHECKSUM TABLE t1 EXTENDED;
2429
test.t1 <some_value>
2431
Table Op Msg_type Msg_text
2432
test.t1 optimize status OK
2433
# check layout success: 1
2434
REPAIR TABLE t1 EXTENDED;
2435
Table Op Msg_type Msg_text
2436
test.t1 repair status OK
2437
# check layout success: 1
2440
# check TRUNCATE success: 1
2441
# check layout success: 1
2442
# End usability test (inc/partition_check.inc)
2449
f_charbig VARCHAR(1000)
2450
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
2452
PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
2453
(PARTITION part1 VALUES LESS THAN (0)
2454
(SUBPARTITION subpart11, SUBPARTITION subpart12),
2455
PARTITION part2 VALUES LESS THAN (5)
2456
(SUBPARTITION subpart21, SUBPARTITION subpart22),
2457
PARTITION part3 VALUES LESS THAN (10)
2458
(SUBPARTITION subpart31, SUBPARTITION subpart32),
2459
PARTITION part4 VALUES LESS THAN (2147483646)
2460
(SUBPARTITION subpart41, SUBPARTITION subpart42));
2461
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
2462
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
2463
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
2464
ALTER TABLE t1 DROP INDEX uidx1, DROP INDEX uidx2;
2465
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
2466
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
2467
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
2468
# Start usability test (inc/partition_check.inc)
2470
SHOW CREATE TABLE t1;
2472
t1 CREATE TABLE `t1` (
2473
`f_int1` int(11) DEFAULT NULL,
2474
`f_int2` int(11) DEFAULT NULL,
2475
`f_char1` char(20) DEFAULT NULL,
2476
`f_char2` char(20) DEFAULT NULL,
2477
`f_charbig` varchar(1000) DEFAULT NULL
2478
) ENGINE=MyISAM DEFAULT CHARSET=latin1
2479
/*!50100 PARTITION BY RANGE (f_int1)
2480
SUBPARTITION BY KEY (f_int1)
2481
(PARTITION part1 VALUES LESS THAN (0)
2482
(SUBPARTITION subpart11 ENGINE = MyISAM,
2483
SUBPARTITION subpart12 ENGINE = MyISAM),
2484
PARTITION part2 VALUES LESS THAN (5)
2485
(SUBPARTITION subpart21 ENGINE = MyISAM,
2486
SUBPARTITION subpart22 ENGINE = MyISAM),
2487
PARTITION part3 VALUES LESS THAN (10)
2488
(SUBPARTITION subpart31 ENGINE = MyISAM,
2489
SUBPARTITION subpart32 ENGINE = MyISAM),
2490
PARTITION part4 VALUES LESS THAN (2147483646)
2491
(SUBPARTITION subpart41 ENGINE = MyISAM,
2492
SUBPARTITION subpart42 ENGINE = MyISAM)) */
2495
t1#P#part1#SP#subpart11.MYD
2496
t1#P#part1#SP#subpart11.MYI
2497
t1#P#part1#SP#subpart12.MYD
2498
t1#P#part1#SP#subpart12.MYI
2499
t1#P#part2#SP#subpart21.MYD
2500
t1#P#part2#SP#subpart21.MYI
2501
t1#P#part2#SP#subpart22.MYD
2502
t1#P#part2#SP#subpart22.MYI
2503
t1#P#part3#SP#subpart31.MYD
2504
t1#P#part3#SP#subpart31.MYI
2505
t1#P#part3#SP#subpart32.MYD
2506
t1#P#part3#SP#subpart32.MYI
2507
t1#P#part4#SP#subpart41.MYD
2508
t1#P#part4#SP#subpart41.MYI
2509
t1#P#part4#SP#subpart42.MYD
2510
t1#P#part4#SP#subpart42.MYI
2514
# check prerequisites-1 success: 1
2515
# check COUNT(*) success: 1
2516
# check MIN/MAX(f_int1) success: 1
2517
# check MIN/MAX(f_int2) success: 1
2518
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2519
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
2520
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
2521
WHERE f_int1 IN (2,3);
2522
# check prerequisites-3 success: 1
2523
DELETE FROM t1 WHERE f_charbig = 'delete me';
2524
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
2525
# check read via f_int1 success: 1
2526
# check read via f_int2 success: 1
2528
# check multiple-1 success: 1
2529
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
2531
# check multiple-2 success: 1
2532
INSERT INTO t1 SELECT * FROM t0_template
2533
WHERE MOD(f_int1,3) = 0;
2535
# check multiple-3 success: 1
2536
UPDATE t1 SET f_int1 = f_int1 + @max_row
2537
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
2538
AND @max_row_div2 + @max_row_div4;
2540
# check multiple-4 success: 1
2542
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
2543
AND @max_row_div2 + @max_row_div4 + @max_row;
2545
# check multiple-5 success: 1
2546
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
2548
SET f_int1 = @cur_value , f_int2 = @cur_value,
2549
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
2550
f_charbig = '#SINGLE#';
2552
# check single-1 success: 1
2553
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
2555
SET f_int1 = @cur_value , f_int2 = @cur_value,
2556
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
2557
f_charbig = '#SINGLE#';
2559
# check single-2 success: 1
2560
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
2561
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
2562
UPDATE t1 SET f_int1 = @cur_value2
2563
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
2565
# check single-3 success: 1
2566
SET @cur_value1= -1;
2567
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
2568
UPDATE t1 SET f_int1 = @cur_value1
2569
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
2571
# check single-4 success: 1
2572
SELECT MAX(f_int1) INTO @cur_value FROM t1;
2573
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
2575
# check single-5 success: 1
2576
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
2578
# check single-6 success: 1
2579
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
2580
ERROR HY000: Table has no partition for value 2147483647
2581
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
2582
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
2583
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
2584
f_charbig = '#NULL#';
2586
SET f_int1 = NULL , f_int2 = -@max_row,
2587
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
2588
f_charbig = '#NULL#';
2589
# check null success: 1
2591
# check null-1 success: 1
2592
UPDATE t1 SET f_int1 = -@max_row
2593
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
2594
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
2596
# check null-2 success: 1
2597
UPDATE t1 SET f_int1 = NULL
2598
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
2599
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
2601
# check null-3 success: 1
2603
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
2604
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
2606
# check null-4 success: 1
2608
WHERE f_int1 = 0 AND f_int2 = 0
2609
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
2610
AND f_charbig = '#NULL#';
2612
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2613
SELECT f_int1, f_int1, '', '', 'was inserted'
2614
FROM t0_template source_tab
2615
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
2617
# check transactions-1 success: 1
2620
# check transactions-2 success: 1
2623
# check transactions-3 success: 1
2624
DELETE FROM t1 WHERE f_charbig = 'was inserted';
2628
# check transactions-4 success: 1
2629
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2630
SELECT f_int1, f_int1, '', '', 'was inserted'
2631
FROM t0_template source_tab
2632
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
2634
# check transactions-5 success: 1
2637
Warning 1196 Some non-transactional changed tables couldn't be rolled back
2639
# check transactions-6 success: 1
2640
# INFO: Storage engine used for t1 seems to be not transactional.
2643
# check transactions-7 success: 1
2644
DELETE FROM t1 WHERE f_charbig = 'was inserted';
2646
SET @@session.sql_mode = 'traditional';
2647
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
2648
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2649
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
2650
'', '', 'was inserted' FROM t0_template
2651
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
2652
ERROR 22012: Division by 0
2655
# check transactions-8 success: 1
2656
# INFO: Storage engine used for t1 seems to be unable to revert
2657
# changes made by the failing statement.
2658
SET @@session.sql_mode = '';
2660
DELETE FROM t1 WHERE f_charbig = 'was inserted';
2662
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
2664
# check special-1 success: 1
2665
UPDATE t1 SET f_charbig = '';
2667
# check special-2 success: 1
2668
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
2669
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
2670
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
2671
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2672
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2673
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2674
'just inserted' FROM t0_template
2675
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2676
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
2678
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2679
f_charbig = 'updated by trigger'
2680
WHERE f_int1 = new.f_int1;
2682
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2683
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
2684
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2686
# check trigger-1 success: 1
2688
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2689
f_int2 = CAST(f_char1 AS SIGNED INT),
2690
f_charbig = 'just inserted'
2691
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2693
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2694
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2695
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2696
'just inserted' FROM t0_template
2697
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2698
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
2700
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2701
f_charbig = 'updated by trigger'
2702
WHERE f_int1 = new.f_int1;
2704
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2705
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
2706
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2708
# check trigger-2 success: 1
2710
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2711
f_int2 = CAST(f_char1 AS SIGNED INT),
2712
f_charbig = 'just inserted'
2713
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2715
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2716
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2717
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2718
'just inserted' FROM t0_template
2719
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2720
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
2722
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2723
f_charbig = 'updated by trigger'
2724
WHERE f_int1 = new.f_int1;
2726
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
2727
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2729
# check trigger-3 success: 1
2731
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2732
f_int2 = CAST(f_char1 AS SIGNED INT),
2733
f_charbig = 'just inserted'
2734
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2736
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2737
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2738
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2739
'just inserted' FROM t0_template
2740
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2741
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
2743
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2744
f_charbig = 'updated by trigger'
2745
WHERE f_int1 = - old.f_int1;
2747
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
2748
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2750
# check trigger-4 success: 1
2752
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2753
f_int2 = CAST(f_char1 AS SIGNED INT),
2754
f_charbig = 'just inserted'
2755
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2757
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2758
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2759
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2760
'just inserted' FROM t0_template
2761
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2762
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
2764
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2765
f_charbig = 'updated by trigger'
2766
WHERE f_int1 = new.f_int1;
2768
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
2769
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2771
# check trigger-5 success: 1
2773
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2774
f_int2 = CAST(f_char1 AS SIGNED INT),
2775
f_charbig = 'just inserted'
2776
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2778
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2779
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2780
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2781
'just inserted' FROM t0_template
2782
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2783
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
2785
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2786
f_charbig = 'updated by trigger'
2787
WHERE f_int1 = - old.f_int1;
2789
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
2790
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2792
# check trigger-6 success: 1
2794
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2795
f_int2 = CAST(f_char1 AS SIGNED INT),
2796
f_charbig = 'just inserted'
2797
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2799
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2800
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2801
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2802
'just inserted' FROM t0_template
2803
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2804
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
2806
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2807
f_charbig = 'updated by trigger'
2808
WHERE f_int1 = - old.f_int1;
2811
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2813
# check trigger-7 success: 1
2815
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2816
f_int2 = CAST(f_char1 AS SIGNED INT),
2817
f_charbig = 'just inserted'
2818
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2820
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2821
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2822
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2823
'just inserted' FROM t0_template
2824
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2825
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
2827
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2828
f_charbig = 'updated by trigger'
2829
WHERE f_int1 = - old.f_int1;
2832
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2834
# check trigger-8 success: 1
2836
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2837
f_int2 = CAST(f_char1 AS SIGNED INT),
2838
f_charbig = 'just inserted'
2839
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2841
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2843
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2844
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
2846
SET new.f_int1 = old.f_int1 + @max_row,
2847
new.f_int2 = old.f_int2 - @max_row,
2848
new.f_charbig = '####updated per update trigger####';
2851
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
2852
f_charbig = '####updated per update statement itself####';
2854
# check trigger-9 success: 1
2856
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2857
f_int2 = CAST(f_char1 AS SIGNED INT),
2858
f_charbig = CONCAT('===',f_char1,'===');
2859
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
2861
SET new.f_int1 = new.f_int1 + @max_row,
2862
new.f_int2 = new.f_int2 - @max_row,
2863
new.f_charbig = '####updated per update trigger####';
2866
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
2867
f_charbig = '####updated per update statement itself####';
2869
# check trigger-10 success: 1
2871
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2872
f_int2 = CAST(f_char1 AS SIGNED INT),
2873
f_charbig = CONCAT('===',f_char1,'===');
2874
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
2876
SET new.f_int1 = @my_max1 + @counter,
2877
new.f_int2 = @my_min2 - @counter,
2878
new.f_charbig = '####updated per insert trigger####';
2879
SET @counter = @counter + 1;
2882
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
2883
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2884
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
2885
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
2886
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
2890
# check trigger-11 success: 1
2892
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
2893
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
2894
AND f_charbig = '####updated per insert trigger####';
2895
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
2897
SET new.f_int1 = @my_max1 + @counter,
2898
new.f_int2 = @my_min2 - @counter,
2899
new.f_charbig = '####updated per insert trigger####';
2900
SET @counter = @counter + 1;
2903
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
2904
INSERT INTO t1 (f_char1, f_char2, f_charbig)
2905
SELECT CAST(f_int1 AS CHAR),
2906
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
2907
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
2911
# check trigger-12 success: 1
2913
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
2914
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
2915
AND f_charbig = '####updated per insert trigger####';
2917
Table Op Msg_type Msg_text
2918
test.t1 analyze status OK
2919
CHECK TABLE t1 EXTENDED;
2920
Table Op Msg_type Msg_text
2921
test.t1 check status OK
2922
CHECKSUM TABLE t1 EXTENDED;
2924
test.t1 <some_value>
2926
Table Op Msg_type Msg_text
2927
test.t1 optimize status OK
2928
# check layout success: 1
2929
REPAIR TABLE t1 EXTENDED;
2930
Table Op Msg_type Msg_text
2931
test.t1 repair status OK
2932
# check layout success: 1
2935
# check TRUNCATE success: 1
2936
# check layout success: 1
2937
# End usability test (inc/partition_check.inc)
2944
f_charbig VARCHAR(1000)
2945
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
2947
PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
2948
(PARTITION part1 VALUES IN (0)
2949
(SUBPARTITION sp11, SUBPARTITION sp12),
2950
PARTITION part2 VALUES IN (1)
2951
(SUBPARTITION sp21, SUBPARTITION sp22),
2952
PARTITION part3 VALUES IN (2)
2953
(SUBPARTITION sp31, SUBPARTITION sp32),
2954
PARTITION part4 VALUES IN (NULL)
2955
(SUBPARTITION sp41, SUBPARTITION sp42));
2956
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
2957
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
2958
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
2959
ALTER TABLE t1 DROP INDEX uidx1, DROP INDEX uidx2;
2960
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
2961
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
2962
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
2963
# Start usability test (inc/partition_check.inc)
2965
SHOW CREATE TABLE t1;
2967
t1 CREATE TABLE `t1` (
2968
`f_int1` int(11) DEFAULT NULL,
2969
`f_int2` int(11) DEFAULT NULL,
2970
`f_char1` char(20) DEFAULT NULL,
2971
`f_char2` char(20) DEFAULT NULL,
2972
`f_charbig` varchar(1000) DEFAULT NULL
2973
) ENGINE=MyISAM DEFAULT CHARSET=latin1
2974
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
2975
SUBPARTITION BY HASH (f_int1 + 1)
2976
(PARTITION part1 VALUES IN (0)
2977
(SUBPARTITION sp11 ENGINE = MyISAM,
2978
SUBPARTITION sp12 ENGINE = MyISAM),
2979
PARTITION part2 VALUES IN (1)
2980
(SUBPARTITION sp21 ENGINE = MyISAM,
2981
SUBPARTITION sp22 ENGINE = MyISAM),
2982
PARTITION part3 VALUES IN (2)
2983
(SUBPARTITION sp31 ENGINE = MyISAM,
2984
SUBPARTITION sp32 ENGINE = MyISAM),
2985
PARTITION part4 VALUES IN (NULL)
2986
(SUBPARTITION sp41 ENGINE = MyISAM,
2987
SUBPARTITION sp42 ENGINE = MyISAM)) */
2990
t1#P#part1#SP#sp11.MYD
2991
t1#P#part1#SP#sp11.MYI
2992
t1#P#part1#SP#sp12.MYD
2993
t1#P#part1#SP#sp12.MYI
2994
t1#P#part2#SP#sp21.MYD
2995
t1#P#part2#SP#sp21.MYI
2996
t1#P#part2#SP#sp22.MYD
2997
t1#P#part2#SP#sp22.MYI
2998
t1#P#part3#SP#sp31.MYD
2999
t1#P#part3#SP#sp31.MYI
3000
t1#P#part3#SP#sp32.MYD
3001
t1#P#part3#SP#sp32.MYI
3002
t1#P#part4#SP#sp41.MYD
3003
t1#P#part4#SP#sp41.MYI
3004
t1#P#part4#SP#sp42.MYD
3005
t1#P#part4#SP#sp42.MYI
3009
# check prerequisites-1 success: 1
3010
# check COUNT(*) success: 1
3011
# check MIN/MAX(f_int1) success: 1
3012
# check MIN/MAX(f_int2) success: 1
3013
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3014
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
3015
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
3016
WHERE f_int1 IN (2,3);
3017
# check prerequisites-3 success: 1
3018
DELETE FROM t1 WHERE f_charbig = 'delete me';
3019
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
3020
# check read via f_int1 success: 1
3021
# check read via f_int2 success: 1
3023
# check multiple-1 success: 1
3024
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
3026
# check multiple-2 success: 1
3027
INSERT INTO t1 SELECT * FROM t0_template
3028
WHERE MOD(f_int1,3) = 0;
3030
# check multiple-3 success: 1
3031
UPDATE t1 SET f_int1 = f_int1 + @max_row
3032
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
3033
AND @max_row_div2 + @max_row_div4;
3035
# check multiple-4 success: 1
3037
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
3038
AND @max_row_div2 + @max_row_div4 + @max_row;
3040
# check multiple-5 success: 1
3041
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
3043
SET f_int1 = @cur_value , f_int2 = @cur_value,
3044
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
3045
f_charbig = '#SINGLE#';
3047
# check single-1 success: 1
3048
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
3050
SET f_int1 = @cur_value , f_int2 = @cur_value,
3051
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
3052
f_charbig = '#SINGLE#';
3054
# check single-2 success: 1
3055
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
3056
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
3057
UPDATE t1 SET f_int1 = @cur_value2
3058
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
3060
# check single-3 success: 1
3061
SET @cur_value1= -1;
3062
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
3063
UPDATE t1 SET f_int1 = @cur_value1
3064
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
3066
# check single-4 success: 1
3067
SELECT MAX(f_int1) INTO @cur_value FROM t1;
3068
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
3070
# check single-5 success: 1
3071
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
3073
# check single-6 success: 1
3074
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
3076
# check single-7 success: 1
3077
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
3078
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
3079
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
3080
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
3081
f_charbig = '#NULL#';
3083
SET f_int1 = NULL , f_int2 = -@max_row,
3084
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
3085
f_charbig = '#NULL#';
3086
# check null success: 1
3088
# check null-1 success: 1
3089
UPDATE t1 SET f_int1 = -@max_row
3090
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
3091
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
3093
# check null-2 success: 1
3094
UPDATE t1 SET f_int1 = NULL
3095
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
3096
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
3098
# check null-3 success: 1
3100
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
3101
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
3103
# check null-4 success: 1
3105
WHERE f_int1 = 0 AND f_int2 = 0
3106
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
3107
AND f_charbig = '#NULL#';
3109
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3110
SELECT f_int1, f_int1, '', '', 'was inserted'
3111
FROM t0_template source_tab
3112
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
3114
# check transactions-1 success: 1
3117
# check transactions-2 success: 1
3120
# check transactions-3 success: 1
3121
DELETE FROM t1 WHERE f_charbig = 'was inserted';
3125
# check transactions-4 success: 1
3126
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3127
SELECT f_int1, f_int1, '', '', 'was inserted'
3128
FROM t0_template source_tab
3129
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
3131
# check transactions-5 success: 1
3134
Warning 1196 Some non-transactional changed tables couldn't be rolled back
3136
# check transactions-6 success: 1
3137
# INFO: Storage engine used for t1 seems to be not transactional.
3140
# check transactions-7 success: 1
3141
DELETE FROM t1 WHERE f_charbig = 'was inserted';
3143
SET @@session.sql_mode = 'traditional';
3144
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
3145
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3146
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
3147
'', '', 'was inserted' FROM t0_template
3148
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
3149
ERROR 22012: Division by 0
3152
# check transactions-8 success: 1
3153
# INFO: Storage engine used for t1 seems to be unable to revert
3154
# changes made by the failing statement.
3155
SET @@session.sql_mode = '';
3157
DELETE FROM t1 WHERE f_charbig = 'was inserted';
3159
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
3161
# check special-1 success: 1
3162
UPDATE t1 SET f_charbig = '';
3164
# check special-2 success: 1
3165
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
3166
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
3167
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
3168
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3169
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3170
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3171
'just inserted' FROM t0_template
3172
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3173
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
3175
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3176
f_charbig = 'updated by trigger'
3177
WHERE f_int1 = new.f_int1;
3179
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3180
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
3181
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3183
# check trigger-1 success: 1
3185
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3186
f_int2 = CAST(f_char1 AS SIGNED INT),
3187
f_charbig = 'just inserted'
3188
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3190
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3191
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3192
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3193
'just inserted' FROM t0_template
3194
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3195
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
3197
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3198
f_charbig = 'updated by trigger'
3199
WHERE f_int1 = new.f_int1;
3201
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3202
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
3203
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3205
# check trigger-2 success: 1
3207
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3208
f_int2 = CAST(f_char1 AS SIGNED INT),
3209
f_charbig = 'just inserted'
3210
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3212
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3213
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3214
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3215
'just inserted' FROM t0_template
3216
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3217
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
3219
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3220
f_charbig = 'updated by trigger'
3221
WHERE f_int1 = new.f_int1;
3223
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3224
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3226
# check trigger-3 success: 1
3228
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3229
f_int2 = CAST(f_char1 AS SIGNED INT),
3230
f_charbig = 'just inserted'
3231
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3233
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3234
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3235
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3236
'just inserted' FROM t0_template
3237
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3238
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
3240
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3241
f_charbig = 'updated by trigger'
3242
WHERE f_int1 = - old.f_int1;
3244
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3245
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3247
# check trigger-4 success: 1
3249
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3250
f_int2 = CAST(f_char1 AS SIGNED INT),
3251
f_charbig = 'just inserted'
3252
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3254
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3255
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3256
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3257
'just inserted' FROM t0_template
3258
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3259
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
3261
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3262
f_charbig = 'updated by trigger'
3263
WHERE f_int1 = new.f_int1;
3265
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3266
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3268
# check trigger-5 success: 1
3270
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3271
f_int2 = CAST(f_char1 AS SIGNED INT),
3272
f_charbig = 'just inserted'
3273
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3275
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3276
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3277
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3278
'just inserted' FROM t0_template
3279
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3280
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
3282
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3283
f_charbig = 'updated by trigger'
3284
WHERE f_int1 = - old.f_int1;
3286
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3287
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3289
# check trigger-6 success: 1
3291
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3292
f_int2 = CAST(f_char1 AS SIGNED INT),
3293
f_charbig = 'just inserted'
3294
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3296
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3297
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3298
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3299
'just inserted' FROM t0_template
3300
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3301
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
3303
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3304
f_charbig = 'updated by trigger'
3305
WHERE f_int1 = - old.f_int1;
3308
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3310
# check trigger-7 success: 1
3312
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3313
f_int2 = CAST(f_char1 AS SIGNED INT),
3314
f_charbig = 'just inserted'
3315
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3317
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3318
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3319
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3320
'just inserted' FROM t0_template
3321
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3322
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
3324
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3325
f_charbig = 'updated by trigger'
3326
WHERE f_int1 = - old.f_int1;
3329
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3331
# check trigger-8 success: 1
3333
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3334
f_int2 = CAST(f_char1 AS SIGNED INT),
3335
f_charbig = 'just inserted'
3336
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3338
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3340
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3341
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
3343
SET new.f_int1 = old.f_int1 + @max_row,
3344
new.f_int2 = old.f_int2 - @max_row,
3345
new.f_charbig = '####updated per update trigger####';
3348
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
3349
f_charbig = '####updated per update statement itself####';
3351
# check trigger-9 success: 1
3353
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3354
f_int2 = CAST(f_char1 AS SIGNED INT),
3355
f_charbig = CONCAT('===',f_char1,'===');
3356
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
3358
SET new.f_int1 = new.f_int1 + @max_row,
3359
new.f_int2 = new.f_int2 - @max_row,
3360
new.f_charbig = '####updated per update trigger####';
3363
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
3364
f_charbig = '####updated per update statement itself####';
3366
# check trigger-10 success: 1
3368
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3369
f_int2 = CAST(f_char1 AS SIGNED INT),
3370
f_charbig = CONCAT('===',f_char1,'===');
3371
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
3373
SET new.f_int1 = @my_max1 + @counter,
3374
new.f_int2 = @my_min2 - @counter,
3375
new.f_charbig = '####updated per insert trigger####';
3376
SET @counter = @counter + 1;
3379
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
3380
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3381
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
3382
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
3383
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
3387
# check trigger-11 success: 1
3389
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
3390
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
3391
AND f_charbig = '####updated per insert trigger####';
3392
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
3394
SET new.f_int1 = @my_max1 + @counter,
3395
new.f_int2 = @my_min2 - @counter,
3396
new.f_charbig = '####updated per insert trigger####';
3397
SET @counter = @counter + 1;
3400
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
3401
INSERT INTO t1 (f_char1, f_char2, f_charbig)
3402
SELECT CAST(f_int1 AS CHAR),
3403
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
3404
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
3408
# check trigger-12 success: 1
3410
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
3411
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
3412
AND f_charbig = '####updated per insert trigger####';
3414
Table Op Msg_type Msg_text
3415
test.t1 analyze status OK
3416
CHECK TABLE t1 EXTENDED;
3417
Table Op Msg_type Msg_text
3418
test.t1 check status OK
3419
CHECKSUM TABLE t1 EXTENDED;
3421
test.t1 <some_value>
3423
Table Op Msg_type Msg_text
3424
test.t1 optimize status OK
3425
# check layout success: 1
3426
REPAIR TABLE t1 EXTENDED;
3427
Table Op Msg_type Msg_text
3428
test.t1 repair status OK
3429
# check layout success: 1
3432
# check TRUNCATE success: 1
3433
# check layout success: 1
3434
# End usability test (inc/partition_check.inc)
3441
f_charbig VARCHAR(1000)
3442
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
3444
PARTITION BY LIST(ABS(MOD(f_int1,2)))
3445
SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
3446
(PARTITION part1 VALUES IN (0),
3447
PARTITION part2 VALUES IN (1),
3448
PARTITION part3 VALUES IN (NULL));
3449
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
3450
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
3451
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
3452
ALTER TABLE t1 DROP INDEX uidx1, DROP INDEX uidx2;
3453
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
3454
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
3455
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
3456
# Start usability test (inc/partition_check.inc)
3458
SHOW CREATE TABLE t1;
3460
t1 CREATE TABLE `t1` (
3461
`f_int1` int(11) DEFAULT NULL,
3462
`f_int2` int(11) DEFAULT NULL,
3463
`f_char1` char(20) DEFAULT NULL,
3464
`f_char2` char(20) DEFAULT NULL,
3465
`f_charbig` varchar(1000) DEFAULT NULL
3466
) ENGINE=MyISAM DEFAULT CHARSET=latin1
3467
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
3468
SUBPARTITION BY KEY (f_int1)
3470
(PARTITION part1 VALUES IN (0) ENGINE = MyISAM,
3471
PARTITION part2 VALUES IN (1) ENGINE = MyISAM,
3472
PARTITION part3 VALUES IN (NULL) ENGINE = MyISAM) */
3475
t1#P#part1#SP#part1sp0.MYD
3476
t1#P#part1#SP#part1sp0.MYI
3477
t1#P#part1#SP#part1sp1.MYD
3478
t1#P#part1#SP#part1sp1.MYI
3479
t1#P#part1#SP#part1sp2.MYD
3480
t1#P#part1#SP#part1sp2.MYI
3481
t1#P#part2#SP#part2sp0.MYD
3482
t1#P#part2#SP#part2sp0.MYI
3483
t1#P#part2#SP#part2sp1.MYD
3484
t1#P#part2#SP#part2sp1.MYI
3485
t1#P#part2#SP#part2sp2.MYD
3486
t1#P#part2#SP#part2sp2.MYI
3487
t1#P#part3#SP#part3sp0.MYD
3488
t1#P#part3#SP#part3sp0.MYI
3489
t1#P#part3#SP#part3sp1.MYD
3490
t1#P#part3#SP#part3sp1.MYI
3491
t1#P#part3#SP#part3sp2.MYD
3492
t1#P#part3#SP#part3sp2.MYI
3496
# check prerequisites-1 success: 1
3497
# check COUNT(*) success: 1
3498
# check MIN/MAX(f_int1) success: 1
3499
# check MIN/MAX(f_int2) success: 1
3500
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3501
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
3502
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
3503
WHERE f_int1 IN (2,3);
3504
# check prerequisites-3 success: 1
3505
DELETE FROM t1 WHERE f_charbig = 'delete me';
3506
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
3507
# check read via f_int1 success: 1
3508
# check read via f_int2 success: 1
3510
# check multiple-1 success: 1
3511
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
3513
# check multiple-2 success: 1
3514
INSERT INTO t1 SELECT * FROM t0_template
3515
WHERE MOD(f_int1,3) = 0;
3517
# check multiple-3 success: 1
3518
UPDATE t1 SET f_int1 = f_int1 + @max_row
3519
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
3520
AND @max_row_div2 + @max_row_div4;
3522
# check multiple-4 success: 1
3524
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
3525
AND @max_row_div2 + @max_row_div4 + @max_row;
3527
# check multiple-5 success: 1
3528
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
3530
SET f_int1 = @cur_value , f_int2 = @cur_value,
3531
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
3532
f_charbig = '#SINGLE#';
3534
# check single-1 success: 1
3535
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
3537
SET f_int1 = @cur_value , f_int2 = @cur_value,
3538
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
3539
f_charbig = '#SINGLE#';
3541
# check single-2 success: 1
3542
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
3543
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
3544
UPDATE t1 SET f_int1 = @cur_value2
3545
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
3547
# check single-3 success: 1
3548
SET @cur_value1= -1;
3549
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
3550
UPDATE t1 SET f_int1 = @cur_value1
3551
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
3553
# check single-4 success: 1
3554
SELECT MAX(f_int1) INTO @cur_value FROM t1;
3555
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
3557
# check single-5 success: 1
3558
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
3560
# check single-6 success: 1
3561
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
3563
# check single-7 success: 1
3564
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
3565
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
3566
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
3567
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
3568
f_charbig = '#NULL#';
3570
SET f_int1 = NULL , f_int2 = -@max_row,
3571
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
3572
f_charbig = '#NULL#';
3573
# check null success: 1
3575
# check null-1 success: 1
3576
UPDATE t1 SET f_int1 = -@max_row
3577
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
3578
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
3580
# check null-2 success: 1
3581
UPDATE t1 SET f_int1 = NULL
3582
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
3583
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
3585
# check null-3 success: 1
3587
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
3588
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
3590
# check null-4 success: 1
3592
WHERE f_int1 = 0 AND f_int2 = 0
3593
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
3594
AND f_charbig = '#NULL#';
3596
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3597
SELECT f_int1, f_int1, '', '', 'was inserted'
3598
FROM t0_template source_tab
3599
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
3601
# check transactions-1 success: 1
3604
# check transactions-2 success: 1
3607
# check transactions-3 success: 1
3608
DELETE FROM t1 WHERE f_charbig = 'was inserted';
3612
# check transactions-4 success: 1
3613
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3614
SELECT f_int1, f_int1, '', '', 'was inserted'
3615
FROM t0_template source_tab
3616
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
3618
# check transactions-5 success: 1
3621
Warning 1196 Some non-transactional changed tables couldn't be rolled back
3623
# check transactions-6 success: 1
3624
# INFO: Storage engine used for t1 seems to be not transactional.
3627
# check transactions-7 success: 1
3628
DELETE FROM t1 WHERE f_charbig = 'was inserted';
3630
SET @@session.sql_mode = 'traditional';
3631
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
3632
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3633
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
3634
'', '', 'was inserted' FROM t0_template
3635
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
3636
ERROR 22012: Division by 0
3639
# check transactions-8 success: 1
3640
# INFO: Storage engine used for t1 seems to be unable to revert
3641
# changes made by the failing statement.
3642
SET @@session.sql_mode = '';
3644
DELETE FROM t1 WHERE f_charbig = 'was inserted';
3646
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
3648
# check special-1 success: 1
3649
UPDATE t1 SET f_charbig = '';
3651
# check special-2 success: 1
3652
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
3653
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
3654
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
3655
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3656
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3657
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3658
'just inserted' FROM t0_template
3659
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3660
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
3662
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3663
f_charbig = 'updated by trigger'
3664
WHERE f_int1 = new.f_int1;
3666
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3667
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
3668
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3670
# check trigger-1 success: 1
3672
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3673
f_int2 = CAST(f_char1 AS SIGNED INT),
3674
f_charbig = 'just inserted'
3675
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3677
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3678
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3679
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3680
'just inserted' FROM t0_template
3681
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3682
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
3684
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3685
f_charbig = 'updated by trigger'
3686
WHERE f_int1 = new.f_int1;
3688
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3689
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
3690
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3692
# check trigger-2 success: 1
3694
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3695
f_int2 = CAST(f_char1 AS SIGNED INT),
3696
f_charbig = 'just inserted'
3697
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3699
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3700
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3701
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3702
'just inserted' FROM t0_template
3703
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3704
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
3706
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3707
f_charbig = 'updated by trigger'
3708
WHERE f_int1 = new.f_int1;
3710
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3711
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3713
# check trigger-3 success: 1
3715
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3716
f_int2 = CAST(f_char1 AS SIGNED INT),
3717
f_charbig = 'just inserted'
3718
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3720
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3721
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3722
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3723
'just inserted' FROM t0_template
3724
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3725
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
3727
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3728
f_charbig = 'updated by trigger'
3729
WHERE f_int1 = - old.f_int1;
3731
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3732
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3734
# check trigger-4 success: 1
3736
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3737
f_int2 = CAST(f_char1 AS SIGNED INT),
3738
f_charbig = 'just inserted'
3739
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3741
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3742
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3743
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3744
'just inserted' FROM t0_template
3745
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3746
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
3748
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3749
f_charbig = 'updated by trigger'
3750
WHERE f_int1 = new.f_int1;
3752
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3753
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3755
# check trigger-5 success: 1
3757
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3758
f_int2 = CAST(f_char1 AS SIGNED INT),
3759
f_charbig = 'just inserted'
3760
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3762
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3763
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3764
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3765
'just inserted' FROM t0_template
3766
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3767
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
3769
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3770
f_charbig = 'updated by trigger'
3771
WHERE f_int1 = - old.f_int1;
3773
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3774
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3776
# check trigger-6 success: 1
3778
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3779
f_int2 = CAST(f_char1 AS SIGNED INT),
3780
f_charbig = 'just inserted'
3781
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3783
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3784
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3785
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3786
'just inserted' FROM t0_template
3787
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3788
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
3790
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3791
f_charbig = 'updated by trigger'
3792
WHERE f_int1 = - old.f_int1;
3795
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3797
# check trigger-7 success: 1
3799
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3800
f_int2 = CAST(f_char1 AS SIGNED INT),
3801
f_charbig = 'just inserted'
3802
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3804
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3805
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3806
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3807
'just inserted' FROM t0_template
3808
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3809
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
3811
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3812
f_charbig = 'updated by trigger'
3813
WHERE f_int1 = - old.f_int1;
3816
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3818
# check trigger-8 success: 1
3820
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3821
f_int2 = CAST(f_char1 AS SIGNED INT),
3822
f_charbig = 'just inserted'
3823
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3825
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3827
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3828
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
3830
SET new.f_int1 = old.f_int1 + @max_row,
3831
new.f_int2 = old.f_int2 - @max_row,
3832
new.f_charbig = '####updated per update trigger####';
3835
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
3836
f_charbig = '####updated per update statement itself####';
3838
# check trigger-9 success: 1
3840
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3841
f_int2 = CAST(f_char1 AS SIGNED INT),
3842
f_charbig = CONCAT('===',f_char1,'===');
3843
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
3845
SET new.f_int1 = new.f_int1 + @max_row,
3846
new.f_int2 = new.f_int2 - @max_row,
3847
new.f_charbig = '####updated per update trigger####';
3850
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
3851
f_charbig = '####updated per update statement itself####';
3853
# check trigger-10 success: 1
3855
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3856
f_int2 = CAST(f_char1 AS SIGNED INT),
3857
f_charbig = CONCAT('===',f_char1,'===');
3858
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
3860
SET new.f_int1 = @my_max1 + @counter,
3861
new.f_int2 = @my_min2 - @counter,
3862
new.f_charbig = '####updated per insert trigger####';
3863
SET @counter = @counter + 1;
3866
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
3867
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3868
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
3869
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
3870
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
3874
# check trigger-11 success: 1
3876
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
3877
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
3878
AND f_charbig = '####updated per insert trigger####';
3879
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
3881
SET new.f_int1 = @my_max1 + @counter,
3882
new.f_int2 = @my_min2 - @counter,
3883
new.f_charbig = '####updated per insert trigger####';
3884
SET @counter = @counter + 1;
3887
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
3888
INSERT INTO t1 (f_char1, f_char2, f_charbig)
3889
SELECT CAST(f_int1 AS CHAR),
3890
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
3891
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
3895
# check trigger-12 success: 1
3897
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
3898
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
3899
AND f_charbig = '####updated per insert trigger####';
3901
Table Op Msg_type Msg_text
3902
test.t1 analyze status OK
3903
CHECK TABLE t1 EXTENDED;
3904
Table Op Msg_type Msg_text
3905
test.t1 check status OK
3906
CHECKSUM TABLE t1 EXTENDED;
3908
test.t1 <some_value>
3910
Table Op Msg_type Msg_text
3911
test.t1 optimize status OK
3912
# check layout success: 1
3913
REPAIR TABLE t1 EXTENDED;
3914
Table Op Msg_type Msg_text
3915
test.t1 repair status OK
3916
# check layout success: 1
3919
# check TRUNCATE success: 1
3920
# check layout success: 1
3921
# End usability test (inc/partition_check.inc)
3923
#------------------------------------------------------------------------
3924
# 2.2 Partitioning function contains two columns (f_int1,f_int2)
3925
#------------------------------------------------------------------------
3926
# 2.2.2 DROP UNIQUE INDEX consisting of two columns
3927
DROP TABLE IF EXISTS t1;
3933
f_charbig VARCHAR(1000)
3934
, UNIQUE INDEX uidx1 (f_int1,f_int2)
3936
PARTITION BY HASH(f_int1 + f_int2) PARTITIONS 2;
3937
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
3938
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
3939
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
3940
ALTER TABLE t1 DROP INDEX uidx1;
3941
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
3942
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
3943
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
3944
# Start usability test (inc/partition_check.inc)
3946
SHOW CREATE TABLE t1;
3948
t1 CREATE TABLE `t1` (
3949
`f_int1` int(11) DEFAULT NULL,
3950
`f_int2` int(11) DEFAULT NULL,
3951
`f_char1` char(20) DEFAULT NULL,
3952
`f_char2` char(20) DEFAULT NULL,
3953
`f_charbig` varchar(1000) DEFAULT NULL
3954
) ENGINE=MyISAM DEFAULT CHARSET=latin1
3955
/*!50100 PARTITION BY HASH (f_int1 + f_int2)
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
# check prerequisites-3 success: 1
3975
DELETE FROM t1 WHERE f_charbig = 'delete me';
3976
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
3977
# check read via f_int1 success: 1
3978
# check read via f_int2 success: 1
3980
# check multiple-1 success: 1
3981
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
3983
# check multiple-2 success: 1
3984
INSERT INTO t1 SELECT * FROM t0_template
3985
WHERE MOD(f_int1,3) = 0;
3987
# check multiple-3 success: 1
3988
UPDATE t1 SET f_int1 = f_int1 + @max_row
3989
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
3990
AND @max_row_div2 + @max_row_div4;
3992
# check multiple-4 success: 1
3994
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
3995
AND @max_row_div2 + @max_row_div4 + @max_row;
3997
# check multiple-5 success: 1
3998
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
4000
SET f_int1 = @cur_value , f_int2 = @cur_value,
4001
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
4002
f_charbig = '#SINGLE#';
4004
# check single-1 success: 1
4005
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
4007
SET f_int1 = @cur_value , f_int2 = @cur_value,
4008
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
4009
f_charbig = '#SINGLE#';
4011
# check single-2 success: 1
4012
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
4013
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
4014
UPDATE t1 SET f_int1 = @cur_value2
4015
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
4017
# check single-3 success: 1
4018
SET @cur_value1= -1;
4019
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
4020
UPDATE t1 SET f_int1 = @cur_value1
4021
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
4023
# check single-4 success: 1
4024
SELECT MAX(f_int1) INTO @cur_value FROM t1;
4025
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
4027
# check single-5 success: 1
4028
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
4030
# check single-6 success: 1
4031
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
4033
# check single-7 success: 1
4034
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
4035
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
4036
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
4037
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
4038
f_charbig = '#NULL#';
4040
SET f_int1 = NULL , f_int2 = -@max_row,
4041
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
4042
f_charbig = '#NULL#';
4043
# check null success: 1
4045
# check null-1 success: 1
4046
UPDATE t1 SET f_int1 = -@max_row
4047
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
4048
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
4050
# check null-2 success: 1
4051
UPDATE t1 SET f_int1 = NULL
4052
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
4053
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
4055
# check null-3 success: 1
4057
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
4058
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
4060
# check null-4 success: 1
4062
WHERE f_int1 = 0 AND f_int2 = 0
4063
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
4064
AND f_charbig = '#NULL#';
4066
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4067
SELECT f_int1, f_int1, '', '', 'was inserted'
4068
FROM t0_template source_tab
4069
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
4071
# check transactions-1 success: 1
4074
# check transactions-2 success: 1
4077
# check transactions-3 success: 1
4078
DELETE FROM t1 WHERE f_charbig = 'was inserted';
4082
# check transactions-4 success: 1
4083
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4084
SELECT f_int1, f_int1, '', '', 'was inserted'
4085
FROM t0_template source_tab
4086
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
4088
# check transactions-5 success: 1
4091
Warning 1196 Some non-transactional changed tables couldn't be rolled back
4093
# check transactions-6 success: 1
4094
# INFO: Storage engine used for t1 seems to be not transactional.
4097
# check transactions-7 success: 1
4098
DELETE FROM t1 WHERE f_charbig = 'was inserted';
4100
SET @@session.sql_mode = 'traditional';
4101
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
4102
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4103
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
4104
'', '', 'was inserted' FROM t0_template
4105
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
4106
ERROR 22012: Division by 0
4109
# check transactions-8 success: 1
4110
# INFO: Storage engine used for t1 seems to be unable to revert
4111
# changes made by the failing statement.
4112
SET @@session.sql_mode = '';
4114
DELETE FROM t1 WHERE f_charbig = 'was inserted';
4116
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
4118
# check special-1 success: 1
4119
UPDATE t1 SET f_charbig = '';
4121
# check special-2 success: 1
4122
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
4123
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
4124
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
4125
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4126
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4127
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4128
'just inserted' FROM t0_template
4129
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4130
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
4132
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4133
f_charbig = 'updated by trigger'
4134
WHERE f_int1 = new.f_int1;
4136
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4137
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
4138
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4140
# check trigger-1 success: 1
4142
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4143
f_int2 = CAST(f_char1 AS SIGNED INT),
4144
f_charbig = 'just inserted'
4145
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4147
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4148
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4149
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4150
'just inserted' FROM t0_template
4151
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4152
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
4154
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4155
f_charbig = 'updated by trigger'
4156
WHERE f_int1 = new.f_int1;
4158
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4159
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
4160
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4162
# check trigger-2 success: 1
4164
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4165
f_int2 = CAST(f_char1 AS SIGNED INT),
4166
f_charbig = 'just inserted'
4167
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4169
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4170
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4171
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4172
'just inserted' FROM t0_template
4173
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4174
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
4176
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4177
f_charbig = 'updated by trigger'
4178
WHERE f_int1 = new.f_int1;
4180
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
4181
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4183
# check trigger-3 success: 1
4185
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4186
f_int2 = CAST(f_char1 AS SIGNED INT),
4187
f_charbig = 'just inserted'
4188
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4190
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4191
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4192
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4193
'just inserted' FROM t0_template
4194
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4195
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
4197
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4198
f_charbig = 'updated by trigger'
4199
WHERE f_int1 = - old.f_int1;
4201
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
4202
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4204
# check trigger-4 success: 1
4206
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4207
f_int2 = CAST(f_char1 AS SIGNED INT),
4208
f_charbig = 'just inserted'
4209
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4211
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4212
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4213
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4214
'just inserted' FROM t0_template
4215
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4216
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
4218
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4219
f_charbig = 'updated by trigger'
4220
WHERE f_int1 = new.f_int1;
4222
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
4223
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4225
# check trigger-5 success: 1
4227
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4228
f_int2 = CAST(f_char1 AS SIGNED INT),
4229
f_charbig = 'just inserted'
4230
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4232
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4233
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4234
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4235
'just inserted' FROM t0_template
4236
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4237
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
4239
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4240
f_charbig = 'updated by trigger'
4241
WHERE f_int1 = - old.f_int1;
4243
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
4244
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4246
# check trigger-6 success: 1
4248
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4249
f_int2 = CAST(f_char1 AS SIGNED INT),
4250
f_charbig = 'just inserted'
4251
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4253
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4254
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4255
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4256
'just inserted' FROM t0_template
4257
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4258
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
4260
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4261
f_charbig = 'updated by trigger'
4262
WHERE f_int1 = - old.f_int1;
4265
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4267
# check trigger-7 success: 1
4269
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4270
f_int2 = CAST(f_char1 AS SIGNED INT),
4271
f_charbig = 'just inserted'
4272
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4274
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4275
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4276
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4277
'just inserted' FROM t0_template
4278
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4279
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
4281
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4282
f_charbig = 'updated by trigger'
4283
WHERE f_int1 = - old.f_int1;
4286
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4288
# check trigger-8 success: 1
4290
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4291
f_int2 = CAST(f_char1 AS SIGNED INT),
4292
f_charbig = 'just inserted'
4293
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4295
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4297
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4298
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
4300
SET new.f_int1 = old.f_int1 + @max_row,
4301
new.f_int2 = old.f_int2 - @max_row,
4302
new.f_charbig = '####updated per update trigger####';
4305
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
4306
f_charbig = '####updated per update statement itself####';
4308
# check trigger-9 success: 1
4310
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4311
f_int2 = CAST(f_char1 AS SIGNED INT),
4312
f_charbig = CONCAT('===',f_char1,'===');
4313
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
4315
SET new.f_int1 = new.f_int1 + @max_row,
4316
new.f_int2 = new.f_int2 - @max_row,
4317
new.f_charbig = '####updated per update trigger####';
4320
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
4321
f_charbig = '####updated per update statement itself####';
4323
# check trigger-10 success: 1
4325
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4326
f_int2 = CAST(f_char1 AS SIGNED INT),
4327
f_charbig = CONCAT('===',f_char1,'===');
4328
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
4330
SET new.f_int1 = @my_max1 + @counter,
4331
new.f_int2 = @my_min2 - @counter,
4332
new.f_charbig = '####updated per insert trigger####';
4333
SET @counter = @counter + 1;
4336
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
4337
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4338
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
4339
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
4340
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
4344
# check trigger-11 success: 1
4346
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
4347
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
4348
AND f_charbig = '####updated per insert trigger####';
4349
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
4351
SET new.f_int1 = @my_max1 + @counter,
4352
new.f_int2 = @my_min2 - @counter,
4353
new.f_charbig = '####updated per insert trigger####';
4354
SET @counter = @counter + 1;
4357
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
4358
INSERT INTO t1 (f_char1, f_char2, f_charbig)
4359
SELECT CAST(f_int1 AS CHAR),
4360
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
4361
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
4365
# check trigger-12 success: 1
4367
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
4368
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
4369
AND f_charbig = '####updated per insert trigger####';
4371
Table Op Msg_type Msg_text
4372
test.t1 analyze status OK
4373
CHECK TABLE t1 EXTENDED;
4374
Table Op Msg_type Msg_text
4375
test.t1 check status OK
4376
CHECKSUM TABLE t1 EXTENDED;
4378
test.t1 <some_value>
4380
Table Op Msg_type Msg_text
4381
test.t1 optimize status OK
4382
# check layout success: 1
4383
REPAIR TABLE t1 EXTENDED;
4384
Table Op Msg_type Msg_text
4385
test.t1 repair status OK
4386
# check layout success: 1
4389
# check TRUNCATE success: 1
4390
# check layout success: 1
4391
# End usability test (inc/partition_check.inc)
4398
f_charbig VARCHAR(1000)
4399
, UNIQUE INDEX uidx1 (f_int1,f_int2)
4401
PARTITION BY KEY(f_int1,f_int2) PARTITIONS 5;
4402
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
4403
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
4404
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
4405
ALTER TABLE t1 DROP INDEX uidx1;
4406
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
4407
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
4408
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
4409
# Start usability test (inc/partition_check.inc)
4411
SHOW CREATE TABLE t1;
4413
t1 CREATE TABLE `t1` (
4414
`f_int1` int(11) DEFAULT NULL,
4415
`f_int2` int(11) DEFAULT NULL,
4416
`f_char1` char(20) DEFAULT NULL,
4417
`f_char2` char(20) DEFAULT NULL,
4418
`f_charbig` varchar(1000) DEFAULT NULL
4419
) ENGINE=MyISAM DEFAULT CHARSET=latin1
4420
/*!50100 PARTITION BY KEY (f_int1,f_int2)
4437
# check prerequisites-1 success: 1
4438
# check COUNT(*) success: 1
4439
# check MIN/MAX(f_int1) success: 1
4440
# check MIN/MAX(f_int2) success: 1
4441
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4442
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
4443
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
4444
WHERE f_int1 IN (2,3);
4445
# check prerequisites-3 success: 1
4446
DELETE FROM t1 WHERE f_charbig = 'delete me';
4447
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
4448
# check read via f_int1 success: 1
4449
# check read via f_int2 success: 1
4451
# check multiple-1 success: 1
4452
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
4454
# check multiple-2 success: 1
4455
INSERT INTO t1 SELECT * FROM t0_template
4456
WHERE MOD(f_int1,3) = 0;
4458
# check multiple-3 success: 1
4459
UPDATE t1 SET f_int1 = f_int1 + @max_row
4460
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
4461
AND @max_row_div2 + @max_row_div4;
4463
# check multiple-4 success: 1
4465
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
4466
AND @max_row_div2 + @max_row_div4 + @max_row;
4468
# check multiple-5 success: 1
4469
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
4471
SET f_int1 = @cur_value , f_int2 = @cur_value,
4472
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
4473
f_charbig = '#SINGLE#';
4475
# check single-1 success: 1
4476
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
4478
SET f_int1 = @cur_value , f_int2 = @cur_value,
4479
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
4480
f_charbig = '#SINGLE#';
4482
# check single-2 success: 1
4483
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
4484
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
4485
UPDATE t1 SET f_int1 = @cur_value2
4486
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
4488
# check single-3 success: 1
4489
SET @cur_value1= -1;
4490
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
4491
UPDATE t1 SET f_int1 = @cur_value1
4492
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
4494
# check single-4 success: 1
4495
SELECT MAX(f_int1) INTO @cur_value FROM t1;
4496
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
4498
# check single-5 success: 1
4499
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
4501
# check single-6 success: 1
4502
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
4504
# check single-7 success: 1
4505
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
4506
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
4507
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
4508
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
4509
f_charbig = '#NULL#';
4511
SET f_int1 = NULL , f_int2 = -@max_row,
4512
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
4513
f_charbig = '#NULL#';
4514
# check null success: 1
4516
# check null-1 success: 1
4517
UPDATE t1 SET f_int1 = -@max_row
4518
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
4519
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
4521
# check null-2 success: 1
4522
UPDATE t1 SET f_int1 = NULL
4523
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
4524
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
4526
# check null-3 success: 1
4528
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
4529
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
4531
# check null-4 success: 1
4533
WHERE f_int1 = 0 AND f_int2 = 0
4534
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
4535
AND f_charbig = '#NULL#';
4537
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4538
SELECT f_int1, f_int1, '', '', 'was inserted'
4539
FROM t0_template source_tab
4540
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
4542
# check transactions-1 success: 1
4545
# check transactions-2 success: 1
4548
# check transactions-3 success: 1
4549
DELETE FROM t1 WHERE f_charbig = 'was inserted';
4553
# check transactions-4 success: 1
4554
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4555
SELECT f_int1, f_int1, '', '', 'was inserted'
4556
FROM t0_template source_tab
4557
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
4559
# check transactions-5 success: 1
4562
Warning 1196 Some non-transactional changed tables couldn't be rolled back
4564
# check transactions-6 success: 1
4565
# INFO: Storage engine used for t1 seems to be not transactional.
4568
# check transactions-7 success: 1
4569
DELETE FROM t1 WHERE f_charbig = 'was inserted';
4571
SET @@session.sql_mode = 'traditional';
4572
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
4573
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4574
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
4575
'', '', 'was inserted' FROM t0_template
4576
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
4577
ERROR 22012: Division by 0
4580
# check transactions-8 success: 1
4581
# INFO: Storage engine used for t1 seems to be unable to revert
4582
# changes made by the failing statement.
4583
SET @@session.sql_mode = '';
4585
DELETE FROM t1 WHERE f_charbig = 'was inserted';
4587
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
4589
# check special-1 success: 1
4590
UPDATE t1 SET f_charbig = '';
4592
# check special-2 success: 1
4593
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
4594
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
4595
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
4596
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4597
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4598
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4599
'just inserted' FROM t0_template
4600
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4601
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
4603
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4604
f_charbig = 'updated by trigger'
4605
WHERE f_int1 = new.f_int1;
4607
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4608
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
4609
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4611
# check trigger-1 success: 1
4613
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4614
f_int2 = CAST(f_char1 AS SIGNED INT),
4615
f_charbig = 'just inserted'
4616
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4618
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4619
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4620
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4621
'just inserted' FROM t0_template
4622
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4623
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
4625
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4626
f_charbig = 'updated by trigger'
4627
WHERE f_int1 = new.f_int1;
4629
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4630
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
4631
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4633
# check trigger-2 success: 1
4635
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4636
f_int2 = CAST(f_char1 AS SIGNED INT),
4637
f_charbig = 'just inserted'
4638
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4640
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4641
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4642
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4643
'just inserted' FROM t0_template
4644
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4645
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
4647
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4648
f_charbig = 'updated by trigger'
4649
WHERE f_int1 = new.f_int1;
4651
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
4652
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4654
# check trigger-3 success: 1
4656
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4657
f_int2 = CAST(f_char1 AS SIGNED INT),
4658
f_charbig = 'just inserted'
4659
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4661
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4662
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4663
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4664
'just inserted' FROM t0_template
4665
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4666
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
4668
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4669
f_charbig = 'updated by trigger'
4670
WHERE f_int1 = - old.f_int1;
4672
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
4673
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4675
# check trigger-4 success: 1
4677
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4678
f_int2 = CAST(f_char1 AS SIGNED INT),
4679
f_charbig = 'just inserted'
4680
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4682
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4683
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4684
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4685
'just inserted' FROM t0_template
4686
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4687
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
4689
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4690
f_charbig = 'updated by trigger'
4691
WHERE f_int1 = new.f_int1;
4693
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
4694
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4696
# check trigger-5 success: 1
4698
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4699
f_int2 = CAST(f_char1 AS SIGNED INT),
4700
f_charbig = 'just inserted'
4701
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4703
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4704
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4705
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4706
'just inserted' FROM t0_template
4707
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4708
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
4710
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4711
f_charbig = 'updated by trigger'
4712
WHERE f_int1 = - old.f_int1;
4714
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
4715
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4717
# check trigger-6 success: 1
4719
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4720
f_int2 = CAST(f_char1 AS SIGNED INT),
4721
f_charbig = 'just inserted'
4722
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4724
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4725
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4726
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4727
'just inserted' FROM t0_template
4728
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4729
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
4731
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4732
f_charbig = 'updated by trigger'
4733
WHERE f_int1 = - old.f_int1;
4736
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4738
# check trigger-7 success: 1
4740
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4741
f_int2 = CAST(f_char1 AS SIGNED INT),
4742
f_charbig = 'just inserted'
4743
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4745
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4746
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4747
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4748
'just inserted' FROM t0_template
4749
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4750
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
4752
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4753
f_charbig = 'updated by trigger'
4754
WHERE f_int1 = - old.f_int1;
4757
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4759
# check trigger-8 success: 1
4761
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4762
f_int2 = CAST(f_char1 AS SIGNED INT),
4763
f_charbig = 'just inserted'
4764
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4766
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4768
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4769
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
4771
SET new.f_int1 = old.f_int1 + @max_row,
4772
new.f_int2 = old.f_int2 - @max_row,
4773
new.f_charbig = '####updated per update trigger####';
4776
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
4777
f_charbig = '####updated per update statement itself####';
4779
# check trigger-9 success: 1
4781
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4782
f_int2 = CAST(f_char1 AS SIGNED INT),
4783
f_charbig = CONCAT('===',f_char1,'===');
4784
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
4786
SET new.f_int1 = new.f_int1 + @max_row,
4787
new.f_int2 = new.f_int2 - @max_row,
4788
new.f_charbig = '####updated per update trigger####';
4791
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
4792
f_charbig = '####updated per update statement itself####';
4794
# check trigger-10 success: 1
4796
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4797
f_int2 = CAST(f_char1 AS SIGNED INT),
4798
f_charbig = CONCAT('===',f_char1,'===');
4799
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
4801
SET new.f_int1 = @my_max1 + @counter,
4802
new.f_int2 = @my_min2 - @counter,
4803
new.f_charbig = '####updated per insert trigger####';
4804
SET @counter = @counter + 1;
4807
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
4808
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4809
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
4810
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
4811
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
4815
# check trigger-11 success: 1
4817
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
4818
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
4819
AND f_charbig = '####updated per insert trigger####';
4820
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
4822
SET new.f_int1 = @my_max1 + @counter,
4823
new.f_int2 = @my_min2 - @counter,
4824
new.f_charbig = '####updated per insert trigger####';
4825
SET @counter = @counter + 1;
4828
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
4829
INSERT INTO t1 (f_char1, f_char2, f_charbig)
4830
SELECT CAST(f_int1 AS CHAR),
4831
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
4832
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
4836
# check trigger-12 success: 1
4838
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
4839
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
4840
AND f_charbig = '####updated per insert trigger####';
4842
Table Op Msg_type Msg_text
4843
test.t1 analyze status OK
4844
CHECK TABLE t1 EXTENDED;
4845
Table Op Msg_type Msg_text
4846
test.t1 check status OK
4847
CHECKSUM TABLE t1 EXTENDED;
4849
test.t1 <some_value>
4851
Table Op Msg_type Msg_text
4852
test.t1 optimize status OK
4853
# check layout success: 1
4854
REPAIR TABLE t1 EXTENDED;
4855
Table Op Msg_type Msg_text
4856
test.t1 repair status OK
4857
# check layout success: 1
4860
# check TRUNCATE success: 1
4861
# check layout success: 1
4862
# End usability test (inc/partition_check.inc)
4869
f_charbig VARCHAR(1000)
4870
, UNIQUE INDEX uidx1 (f_int1,f_int2)
4872
PARTITION BY LIST(MOD(f_int1 + f_int2,4))
4873
(PARTITION part_3 VALUES IN (-3),
4874
PARTITION part_2 VALUES IN (-2),
4875
PARTITION part_1 VALUES IN (-1),
4876
PARTITION part_N VALUES IN (NULL),
4877
PARTITION part0 VALUES IN (0),
4878
PARTITION part1 VALUES IN (1),
4879
PARTITION part2 VALUES IN (2),
4880
PARTITION part3 VALUES IN (3));
4881
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
4882
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
4883
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
4884
ALTER TABLE t1 DROP INDEX uidx1;
4885
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
4886
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
4887
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
4888
# Start usability test (inc/partition_check.inc)
4890
SHOW CREATE TABLE t1;
4892
t1 CREATE TABLE `t1` (
4893
`f_int1` int(11) DEFAULT NULL,
4894
`f_int2` int(11) DEFAULT NULL,
4895
`f_char1` char(20) DEFAULT NULL,
4896
`f_char2` char(20) DEFAULT NULL,
4897
`f_charbig` varchar(1000) DEFAULT NULL
4898
) ENGINE=MyISAM DEFAULT CHARSET=latin1
4899
/*!50100 PARTITION BY LIST (MOD(f_int1 + f_int2,4))
4900
(PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM,
4901
PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM,
4902
PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM,
4903
PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM,
4904
PARTITION part0 VALUES IN (0) ENGINE = MyISAM,
4905
PARTITION part1 VALUES IN (1) ENGINE = MyISAM,
4906
PARTITION part2 VALUES IN (2) ENGINE = MyISAM,
4907
PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */
4929
# check prerequisites-1 success: 1
4930
# check COUNT(*) success: 1
4931
# check MIN/MAX(f_int1) success: 1
4932
# check MIN/MAX(f_int2) success: 1
4933
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4934
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
4935
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
4936
WHERE f_int1 IN (2,3);
4937
# check prerequisites-3 success: 1
4938
DELETE FROM t1 WHERE f_charbig = 'delete me';
4939
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
4940
# check read via f_int1 success: 1
4941
# check read via f_int2 success: 1
4943
# check multiple-1 success: 1
4944
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
4946
# check multiple-2 success: 1
4947
INSERT INTO t1 SELECT * FROM t0_template
4948
WHERE MOD(f_int1,3) = 0;
4950
# check multiple-3 success: 1
4951
UPDATE t1 SET f_int1 = f_int1 + @max_row
4952
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
4953
AND @max_row_div2 + @max_row_div4;
4955
# check multiple-4 success: 1
4957
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
4958
AND @max_row_div2 + @max_row_div4 + @max_row;
4960
# check multiple-5 success: 1
4961
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
4963
SET f_int1 = @cur_value , f_int2 = @cur_value,
4964
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
4965
f_charbig = '#SINGLE#';
4967
# check single-1 success: 1
4968
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
4970
SET f_int1 = @cur_value , f_int2 = @cur_value,
4971
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
4972
f_charbig = '#SINGLE#';
4974
# check single-2 success: 1
4975
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
4976
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
4977
UPDATE t1 SET f_int1 = @cur_value2
4978
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
4980
# check single-3 success: 1
4981
SET @cur_value1= -1;
4982
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
4983
UPDATE t1 SET f_int1 = @cur_value1
4984
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
4986
# check single-4 success: 1
4987
SELECT MAX(f_int1) INTO @cur_value FROM t1;
4988
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
4990
# check single-5 success: 1
4991
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
4993
# check single-6 success: 1
4994
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
4996
# check single-7 success: 1
4997
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
4998
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
4999
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
5000
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
5001
f_charbig = '#NULL#';
5003
SET f_int1 = NULL , f_int2 = -@max_row,
5004
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
5005
f_charbig = '#NULL#';
5006
# check null success: 1
5008
# check null-1 success: 1
5009
UPDATE t1 SET f_int1 = -@max_row
5010
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
5011
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
5013
# check null-2 success: 1
5014
UPDATE t1 SET f_int1 = NULL
5015
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
5016
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
5018
# check null-3 success: 1
5020
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
5021
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
5023
# check null-4 success: 1
5025
WHERE f_int1 = 0 AND f_int2 = 0
5026
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
5027
AND f_charbig = '#NULL#';
5029
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5030
SELECT f_int1, f_int1, '', '', 'was inserted'
5031
FROM t0_template source_tab
5032
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
5034
# check transactions-1 success: 1
5037
# check transactions-2 success: 1
5040
# check transactions-3 success: 1
5041
DELETE FROM t1 WHERE f_charbig = 'was inserted';
5045
# check transactions-4 success: 1
5046
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5047
SELECT f_int1, f_int1, '', '', 'was inserted'
5048
FROM t0_template source_tab
5049
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
5051
# check transactions-5 success: 1
5054
Warning 1196 Some non-transactional changed tables couldn't be rolled back
5056
# check transactions-6 success: 1
5057
# INFO: Storage engine used for t1 seems to be not transactional.
5060
# check transactions-7 success: 1
5061
DELETE FROM t1 WHERE f_charbig = 'was inserted';
5063
SET @@session.sql_mode = 'traditional';
5064
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
5065
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5066
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
5067
'', '', 'was inserted' FROM t0_template
5068
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
5069
ERROR 22012: Division by 0
5072
# check transactions-8 success: 1
5073
# INFO: Storage engine used for t1 seems to be unable to revert
5074
# changes made by the failing statement.
5075
SET @@session.sql_mode = '';
5077
DELETE FROM t1 WHERE f_charbig = 'was inserted';
5079
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
5081
# check special-1 success: 1
5082
UPDATE t1 SET f_charbig = '';
5084
# check special-2 success: 1
5085
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
5086
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
5087
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
5088
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5089
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5090
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5091
'just inserted' FROM t0_template
5092
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5093
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
5095
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5096
f_charbig = 'updated by trigger'
5097
WHERE f_int1 = new.f_int1;
5099
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5100
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
5101
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5103
# check trigger-1 success: 1
5105
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5106
f_int2 = CAST(f_char1 AS SIGNED INT),
5107
f_charbig = 'just inserted'
5108
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5110
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5111
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5112
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5113
'just inserted' FROM t0_template
5114
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5115
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
5117
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5118
f_charbig = 'updated by trigger'
5119
WHERE f_int1 = new.f_int1;
5121
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5122
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
5123
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5125
# check trigger-2 success: 1
5127
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5128
f_int2 = CAST(f_char1 AS SIGNED INT),
5129
f_charbig = 'just inserted'
5130
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5132
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5133
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5134
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5135
'just inserted' FROM t0_template
5136
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5137
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
5139
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5140
f_charbig = 'updated by trigger'
5141
WHERE f_int1 = new.f_int1;
5143
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
5144
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5146
# check trigger-3 success: 1
5148
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5149
f_int2 = CAST(f_char1 AS SIGNED INT),
5150
f_charbig = 'just inserted'
5151
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5153
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5154
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5155
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5156
'just inserted' FROM t0_template
5157
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5158
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
5160
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5161
f_charbig = 'updated by trigger'
5162
WHERE f_int1 = - old.f_int1;
5164
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
5165
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5167
# check trigger-4 success: 1
5169
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5170
f_int2 = CAST(f_char1 AS SIGNED INT),
5171
f_charbig = 'just inserted'
5172
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5174
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5175
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5176
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5177
'just inserted' FROM t0_template
5178
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5179
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
5181
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5182
f_charbig = 'updated by trigger'
5183
WHERE f_int1 = new.f_int1;
5185
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
5186
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5188
# check trigger-5 success: 1
5190
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5191
f_int2 = CAST(f_char1 AS SIGNED INT),
5192
f_charbig = 'just inserted'
5193
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5195
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5196
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5197
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5198
'just inserted' FROM t0_template
5199
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5200
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
5202
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5203
f_charbig = 'updated by trigger'
5204
WHERE f_int1 = - old.f_int1;
5206
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
5207
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5209
# check trigger-6 success: 1
5211
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5212
f_int2 = CAST(f_char1 AS SIGNED INT),
5213
f_charbig = 'just inserted'
5214
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5216
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5217
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5218
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5219
'just inserted' FROM t0_template
5220
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5221
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
5223
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5224
f_charbig = 'updated by trigger'
5225
WHERE f_int1 = - old.f_int1;
5228
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5230
# check trigger-7 success: 1
5232
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5233
f_int2 = CAST(f_char1 AS SIGNED INT),
5234
f_charbig = 'just inserted'
5235
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5237
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5238
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5239
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5240
'just inserted' FROM t0_template
5241
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5242
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
5244
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5245
f_charbig = 'updated by trigger'
5246
WHERE f_int1 = - old.f_int1;
5249
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5251
# check trigger-8 success: 1
5253
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5254
f_int2 = CAST(f_char1 AS SIGNED INT),
5255
f_charbig = 'just inserted'
5256
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5258
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5260
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5261
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
5263
SET new.f_int1 = old.f_int1 + @max_row,
5264
new.f_int2 = old.f_int2 - @max_row,
5265
new.f_charbig = '####updated per update trigger####';
5268
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
5269
f_charbig = '####updated per update statement itself####';
5271
# check trigger-9 success: 1
5273
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5274
f_int2 = CAST(f_char1 AS SIGNED INT),
5275
f_charbig = CONCAT('===',f_char1,'===');
5276
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
5278
SET new.f_int1 = new.f_int1 + @max_row,
5279
new.f_int2 = new.f_int2 - @max_row,
5280
new.f_charbig = '####updated per update trigger####';
5283
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
5284
f_charbig = '####updated per update statement itself####';
5286
# check trigger-10 success: 1
5288
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5289
f_int2 = CAST(f_char1 AS SIGNED INT),
5290
f_charbig = CONCAT('===',f_char1,'===');
5291
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
5293
SET new.f_int1 = @my_max1 + @counter,
5294
new.f_int2 = @my_min2 - @counter,
5295
new.f_charbig = '####updated per insert trigger####';
5296
SET @counter = @counter + 1;
5299
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
5300
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5301
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
5302
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
5303
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
5307
# check trigger-11 success: 1
5309
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
5310
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
5311
AND f_charbig = '####updated per insert trigger####';
5312
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
5314
SET new.f_int1 = @my_max1 + @counter,
5315
new.f_int2 = @my_min2 - @counter,
5316
new.f_charbig = '####updated per insert trigger####';
5317
SET @counter = @counter + 1;
5320
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
5321
INSERT INTO t1 (f_char1, f_char2, f_charbig)
5322
SELECT CAST(f_int1 AS CHAR),
5323
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
5324
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
5328
# check trigger-12 success: 1
5330
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
5331
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
5332
AND f_charbig = '####updated per insert trigger####';
5334
Table Op Msg_type Msg_text
5335
test.t1 analyze status OK
5336
CHECK TABLE t1 EXTENDED;
5337
Table Op Msg_type Msg_text
5338
test.t1 check status OK
5339
CHECKSUM TABLE t1 EXTENDED;
5341
test.t1 <some_value>
5343
Table Op Msg_type Msg_text
5344
test.t1 optimize status OK
5345
# check layout success: 1
5346
REPAIR TABLE t1 EXTENDED;
5347
Table Op Msg_type Msg_text
5348
test.t1 repair status OK
5349
# check layout success: 1
5352
# check TRUNCATE success: 1
5353
# check layout success: 1
5354
# End usability test (inc/partition_check.inc)
5361
f_charbig VARCHAR(1000)
5362
, UNIQUE INDEX uidx1 (f_int1,f_int2)
5364
PARTITION BY RANGE((f_int1 + f_int2) DIV 2)
5365
(PARTITION parta VALUES LESS THAN (0),
5366
PARTITION partb VALUES LESS THAN (5),
5367
PARTITION partc VALUES LESS THAN (10),
5368
PARTITION partd VALUES LESS THAN (10 + 5),
5369
PARTITION parte VALUES LESS THAN (20),
5370
PARTITION partf VALUES LESS THAN (2147483646));
5371
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
5372
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
5373
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
5374
ALTER TABLE t1 DROP INDEX uidx1;
5375
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
5376
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
5377
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
5378
# Start usability test (inc/partition_check.inc)
5380
SHOW CREATE TABLE t1;
5382
t1 CREATE TABLE `t1` (
5383
`f_int1` int(11) DEFAULT NULL,
5384
`f_int2` int(11) DEFAULT NULL,
5385
`f_char1` char(20) DEFAULT NULL,
5386
`f_char2` char(20) DEFAULT NULL,
5387
`f_charbig` varchar(1000) DEFAULT NULL
5388
) ENGINE=MyISAM DEFAULT CHARSET=latin1
5389
/*!50100 PARTITION BY RANGE ((f_int1 + f_int2) DIV 2)
5390
(PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM,
5391
PARTITION partb VALUES LESS THAN (5) ENGINE = MyISAM,
5392
PARTITION partc VALUES LESS THAN (10) ENGINE = MyISAM,
5393
PARTITION partd VALUES LESS THAN (15) ENGINE = MyISAM,
5394
PARTITION parte VALUES LESS THAN (20) ENGINE = MyISAM,
5395
PARTITION partf VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
5413
# check prerequisites-1 success: 1
5414
# check COUNT(*) success: 1
5415
# check MIN/MAX(f_int1) success: 1
5416
# check MIN/MAX(f_int2) success: 1
5417
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5418
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
5419
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
5420
WHERE f_int1 IN (2,3);
5421
# check prerequisites-3 success: 1
5422
DELETE FROM t1 WHERE f_charbig = 'delete me';
5423
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
5424
# check read via f_int1 success: 1
5425
# check read via f_int2 success: 1
5427
# check multiple-1 success: 1
5428
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
5430
# check multiple-2 success: 1
5431
INSERT INTO t1 SELECT * FROM t0_template
5432
WHERE MOD(f_int1,3) = 0;
5434
# check multiple-3 success: 1
5435
UPDATE t1 SET f_int1 = f_int1 + @max_row
5436
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
5437
AND @max_row_div2 + @max_row_div4;
5439
# check multiple-4 success: 1
5441
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
5442
AND @max_row_div2 + @max_row_div4 + @max_row;
5444
# check multiple-5 success: 1
5445
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
5447
SET f_int1 = @cur_value , f_int2 = @cur_value,
5448
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
5449
f_charbig = '#SINGLE#';
5451
# check single-1 success: 1
5452
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
5454
SET f_int1 = @cur_value , f_int2 = @cur_value,
5455
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
5456
f_charbig = '#SINGLE#';
5458
# check single-2 success: 1
5459
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
5460
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
5461
UPDATE t1 SET f_int1 = @cur_value2
5462
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
5464
# check single-3 success: 1
5465
SET @cur_value1= -1;
5466
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
5467
UPDATE t1 SET f_int1 = @cur_value1
5468
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
5470
# check single-4 success: 1
5471
SELECT MAX(f_int1) INTO @cur_value FROM t1;
5472
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
5474
# check single-5 success: 1
5475
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
5477
# check single-6 success: 1
5478
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
5479
ERROR HY000: Table has no partition for value 2147483647
5480
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
5481
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
5482
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
5483
f_charbig = '#NULL#';
5485
SET f_int1 = NULL , f_int2 = -@max_row,
5486
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
5487
f_charbig = '#NULL#';
5488
# check null success: 1
5490
# check null-1 success: 1
5491
UPDATE t1 SET f_int1 = -@max_row
5492
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
5493
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
5495
# check null-2 success: 1
5496
UPDATE t1 SET f_int1 = NULL
5497
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
5498
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
5500
# check null-3 success: 1
5502
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
5503
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
5505
# check null-4 success: 1
5507
WHERE f_int1 = 0 AND f_int2 = 0
5508
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
5509
AND f_charbig = '#NULL#';
5511
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5512
SELECT f_int1, f_int1, '', '', 'was inserted'
5513
FROM t0_template source_tab
5514
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
5516
# check transactions-1 success: 1
5519
# check transactions-2 success: 1
5522
# check transactions-3 success: 1
5523
DELETE FROM t1 WHERE f_charbig = 'was inserted';
5527
# check transactions-4 success: 1
5528
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5529
SELECT f_int1, f_int1, '', '', 'was inserted'
5530
FROM t0_template source_tab
5531
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
5533
# check transactions-5 success: 1
5536
Warning 1196 Some non-transactional changed tables couldn't be rolled back
5538
# check transactions-6 success: 1
5539
# INFO: Storage engine used for t1 seems to be not transactional.
5542
# check transactions-7 success: 1
5543
DELETE FROM t1 WHERE f_charbig = 'was inserted';
5545
SET @@session.sql_mode = 'traditional';
5546
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
5547
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5548
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
5549
'', '', 'was inserted' FROM t0_template
5550
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
5551
ERROR 22012: Division by 0
5554
# check transactions-8 success: 1
5555
# INFO: Storage engine used for t1 seems to be unable to revert
5556
# changes made by the failing statement.
5557
SET @@session.sql_mode = '';
5559
DELETE FROM t1 WHERE f_charbig = 'was inserted';
5561
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
5563
# check special-1 success: 1
5564
UPDATE t1 SET f_charbig = '';
5566
# check special-2 success: 1
5567
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
5568
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
5569
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
5570
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5571
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5572
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5573
'just inserted' FROM t0_template
5574
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5575
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
5577
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5578
f_charbig = 'updated by trigger'
5579
WHERE f_int1 = new.f_int1;
5581
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5582
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
5583
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5585
# check trigger-1 success: 1
5587
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5588
f_int2 = CAST(f_char1 AS SIGNED INT),
5589
f_charbig = 'just inserted'
5590
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5592
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5593
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5594
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5595
'just inserted' FROM t0_template
5596
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5597
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
5599
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5600
f_charbig = 'updated by trigger'
5601
WHERE f_int1 = new.f_int1;
5603
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5604
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
5605
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5607
# check trigger-2 success: 1
5609
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5610
f_int2 = CAST(f_char1 AS SIGNED INT),
5611
f_charbig = 'just inserted'
5612
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5614
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5615
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5616
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5617
'just inserted' FROM t0_template
5618
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5619
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
5621
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5622
f_charbig = 'updated by trigger'
5623
WHERE f_int1 = new.f_int1;
5625
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
5626
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5628
# check trigger-3 success: 1
5630
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5631
f_int2 = CAST(f_char1 AS SIGNED INT),
5632
f_charbig = 'just inserted'
5633
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5635
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5636
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5637
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5638
'just inserted' FROM t0_template
5639
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5640
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
5642
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5643
f_charbig = 'updated by trigger'
5644
WHERE f_int1 = - old.f_int1;
5646
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
5647
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5649
# check trigger-4 success: 1
5651
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5652
f_int2 = CAST(f_char1 AS SIGNED INT),
5653
f_charbig = 'just inserted'
5654
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5656
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5657
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5658
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5659
'just inserted' FROM t0_template
5660
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5661
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
5663
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5664
f_charbig = 'updated by trigger'
5665
WHERE f_int1 = new.f_int1;
5667
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
5668
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5670
# check trigger-5 success: 1
5672
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5673
f_int2 = CAST(f_char1 AS SIGNED INT),
5674
f_charbig = 'just inserted'
5675
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5677
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5678
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5679
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5680
'just inserted' FROM t0_template
5681
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5682
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
5684
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5685
f_charbig = 'updated by trigger'
5686
WHERE f_int1 = - old.f_int1;
5688
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
5689
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5691
# check trigger-6 success: 1
5693
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5694
f_int2 = CAST(f_char1 AS SIGNED INT),
5695
f_charbig = 'just inserted'
5696
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5698
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5699
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5700
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5701
'just inserted' FROM t0_template
5702
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5703
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
5705
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5706
f_charbig = 'updated by trigger'
5707
WHERE f_int1 = - old.f_int1;
5710
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5712
# check trigger-7 success: 1
5714
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5715
f_int2 = CAST(f_char1 AS SIGNED INT),
5716
f_charbig = 'just inserted'
5717
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5719
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5720
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5721
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5722
'just inserted' FROM t0_template
5723
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5724
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
5726
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5727
f_charbig = 'updated by trigger'
5728
WHERE f_int1 = - old.f_int1;
5731
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5733
# check trigger-8 success: 1
5735
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5736
f_int2 = CAST(f_char1 AS SIGNED INT),
5737
f_charbig = 'just inserted'
5738
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5740
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5742
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5743
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
5745
SET new.f_int1 = old.f_int1 + @max_row,
5746
new.f_int2 = old.f_int2 - @max_row,
5747
new.f_charbig = '####updated per update trigger####';
5750
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
5751
f_charbig = '####updated per update statement itself####';
5753
# check trigger-9 success: 1
5755
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5756
f_int2 = CAST(f_char1 AS SIGNED INT),
5757
f_charbig = CONCAT('===',f_char1,'===');
5758
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
5760
SET new.f_int1 = new.f_int1 + @max_row,
5761
new.f_int2 = new.f_int2 - @max_row,
5762
new.f_charbig = '####updated per update trigger####';
5765
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
5766
f_charbig = '####updated per update statement itself####';
5768
# check trigger-10 success: 1
5770
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5771
f_int2 = CAST(f_char1 AS SIGNED INT),
5772
f_charbig = CONCAT('===',f_char1,'===');
5773
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
5775
SET new.f_int1 = @my_max1 + @counter,
5776
new.f_int2 = @my_min2 - @counter,
5777
new.f_charbig = '####updated per insert trigger####';
5778
SET @counter = @counter + 1;
5781
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
5782
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5783
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
5784
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
5785
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
5789
# check trigger-11 success: 1
5791
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
5792
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
5793
AND f_charbig = '####updated per insert trigger####';
5794
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
5796
SET new.f_int1 = @my_max1 + @counter,
5797
new.f_int2 = @my_min2 - @counter,
5798
new.f_charbig = '####updated per insert trigger####';
5799
SET @counter = @counter + 1;
5802
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
5803
INSERT INTO t1 (f_char1, f_char2, f_charbig)
5804
SELECT CAST(f_int1 AS CHAR),
5805
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
5806
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
5810
# check trigger-12 success: 1
5812
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
5813
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
5814
AND f_charbig = '####updated per insert trigger####';
5816
Table Op Msg_type Msg_text
5817
test.t1 analyze status OK
5818
CHECK TABLE t1 EXTENDED;
5819
Table Op Msg_type Msg_text
5820
test.t1 check status OK
5821
CHECKSUM TABLE t1 EXTENDED;
5823
test.t1 <some_value>
5825
Table Op Msg_type Msg_text
5826
test.t1 optimize status OK
5827
# check layout success: 1
5828
REPAIR TABLE t1 EXTENDED;
5829
Table Op Msg_type Msg_text
5830
test.t1 repair status OK
5831
# check layout success: 1
5834
# check TRUNCATE success: 1
5835
# check layout success: 1
5836
# End usability test (inc/partition_check.inc)
5843
f_charbig VARCHAR(1000)
5844
, UNIQUE INDEX uidx1 (f_int1,f_int2)
5846
PARTITION BY RANGE(f_int1) SUBPARTITION BY HASH(f_int2) SUBPARTITIONS 2
5847
(PARTITION parta VALUES LESS THAN (0),
5848
PARTITION partb VALUES LESS THAN (5),
5849
PARTITION partc VALUES LESS THAN (10),
5850
PARTITION partd VALUES LESS THAN (2147483646));
5851
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
5852
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
5853
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
5854
ALTER TABLE t1 DROP INDEX uidx1;
5855
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
5856
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
5857
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
5858
# Start usability test (inc/partition_check.inc)
5860
SHOW CREATE TABLE t1;
5862
t1 CREATE TABLE `t1` (
5863
`f_int1` int(11) DEFAULT NULL,
5864
`f_int2` int(11) DEFAULT NULL,
5865
`f_char1` char(20) DEFAULT NULL,
5866
`f_char2` char(20) DEFAULT NULL,
5867
`f_charbig` varchar(1000) DEFAULT NULL
5868
) ENGINE=MyISAM DEFAULT CHARSET=latin1
5869
/*!50100 PARTITION BY RANGE (f_int1)
5870
SUBPARTITION BY HASH (f_int2)
5872
(PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM,
5873
PARTITION partb VALUES LESS THAN (5) ENGINE = MyISAM,
5874
PARTITION partc VALUES LESS THAN (10) ENGINE = MyISAM,
5875
PARTITION partd VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
5878
t1#P#parta#SP#partasp0.MYD
5879
t1#P#parta#SP#partasp0.MYI
5880
t1#P#parta#SP#partasp1.MYD
5881
t1#P#parta#SP#partasp1.MYI
5882
t1#P#partb#SP#partbsp0.MYD
5883
t1#P#partb#SP#partbsp0.MYI
5884
t1#P#partb#SP#partbsp1.MYD
5885
t1#P#partb#SP#partbsp1.MYI
5886
t1#P#partc#SP#partcsp0.MYD
5887
t1#P#partc#SP#partcsp0.MYI
5888
t1#P#partc#SP#partcsp1.MYD
5889
t1#P#partc#SP#partcsp1.MYI
5890
t1#P#partd#SP#partdsp0.MYD
5891
t1#P#partd#SP#partdsp0.MYI
5892
t1#P#partd#SP#partdsp1.MYD
5893
t1#P#partd#SP#partdsp1.MYI
5897
# check prerequisites-1 success: 1
5898
# check COUNT(*) success: 1
5899
# check MIN/MAX(f_int1) success: 1
5900
# check MIN/MAX(f_int2) success: 1
5901
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5902
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
5903
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
5904
WHERE f_int1 IN (2,3);
5905
# check prerequisites-3 success: 1
5906
DELETE FROM t1 WHERE f_charbig = 'delete me';
5907
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
5908
# check read via f_int1 success: 1
5909
# check read via f_int2 success: 1
5911
# check multiple-1 success: 1
5912
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
5914
# check multiple-2 success: 1
5915
INSERT INTO t1 SELECT * FROM t0_template
5916
WHERE MOD(f_int1,3) = 0;
5918
# check multiple-3 success: 1
5919
UPDATE t1 SET f_int1 = f_int1 + @max_row
5920
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
5921
AND @max_row_div2 + @max_row_div4;
5923
# check multiple-4 success: 1
5925
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
5926
AND @max_row_div2 + @max_row_div4 + @max_row;
5928
# check multiple-5 success: 1
5929
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
5931
SET f_int1 = @cur_value , f_int2 = @cur_value,
5932
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
5933
f_charbig = '#SINGLE#';
5935
# check single-1 success: 1
5936
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
5938
SET f_int1 = @cur_value , f_int2 = @cur_value,
5939
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
5940
f_charbig = '#SINGLE#';
5942
# check single-2 success: 1
5943
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
5944
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
5945
UPDATE t1 SET f_int1 = @cur_value2
5946
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
5948
# check single-3 success: 1
5949
SET @cur_value1= -1;
5950
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
5951
UPDATE t1 SET f_int1 = @cur_value1
5952
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
5954
# check single-4 success: 1
5955
SELECT MAX(f_int1) INTO @cur_value FROM t1;
5956
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
5958
# check single-5 success: 1
5959
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
5961
# check single-6 success: 1
5962
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
5963
ERROR HY000: Table has no partition for value 2147483647
5964
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
5965
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
5966
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
5967
f_charbig = '#NULL#';
5969
SET f_int1 = NULL , f_int2 = -@max_row,
5970
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
5971
f_charbig = '#NULL#';
5972
# check null success: 1
5974
# check null-1 success: 1
5975
UPDATE t1 SET f_int1 = -@max_row
5976
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
5977
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
5979
# check null-2 success: 1
5980
UPDATE t1 SET f_int1 = NULL
5981
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
5982
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
5984
# check null-3 success: 1
5986
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
5987
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
5989
# check null-4 success: 1
5991
WHERE f_int1 = 0 AND f_int2 = 0
5992
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
5993
AND f_charbig = '#NULL#';
5995
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5996
SELECT f_int1, f_int1, '', '', 'was inserted'
5997
FROM t0_template source_tab
5998
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
6000
# check transactions-1 success: 1
6003
# check transactions-2 success: 1
6006
# check transactions-3 success: 1
6007
DELETE FROM t1 WHERE f_charbig = 'was inserted';
6011
# check transactions-4 success: 1
6012
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6013
SELECT f_int1, f_int1, '', '', 'was inserted'
6014
FROM t0_template source_tab
6015
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
6017
# check transactions-5 success: 1
6020
Warning 1196 Some non-transactional changed tables couldn't be rolled back
6022
# check transactions-6 success: 1
6023
# INFO: Storage engine used for t1 seems to be not transactional.
6026
# check transactions-7 success: 1
6027
DELETE FROM t1 WHERE f_charbig = 'was inserted';
6029
SET @@session.sql_mode = 'traditional';
6030
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
6031
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6032
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
6033
'', '', 'was inserted' FROM t0_template
6034
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
6035
ERROR 22012: Division by 0
6038
# check transactions-8 success: 1
6039
# INFO: Storage engine used for t1 seems to be unable to revert
6040
# changes made by the failing statement.
6041
SET @@session.sql_mode = '';
6043
DELETE FROM t1 WHERE f_charbig = 'was inserted';
6045
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
6047
# check special-1 success: 1
6048
UPDATE t1 SET f_charbig = '';
6050
# check special-2 success: 1
6051
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
6052
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
6053
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
6054
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6055
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6056
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6057
'just inserted' FROM t0_template
6058
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6059
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
6061
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6062
f_charbig = 'updated by trigger'
6063
WHERE f_int1 = new.f_int1;
6065
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6066
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
6067
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6069
# check trigger-1 success: 1
6071
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6072
f_int2 = CAST(f_char1 AS SIGNED INT),
6073
f_charbig = 'just inserted'
6074
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6076
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6077
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6078
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6079
'just inserted' FROM t0_template
6080
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6081
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
6083
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6084
f_charbig = 'updated by trigger'
6085
WHERE f_int1 = new.f_int1;
6087
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6088
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
6089
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6091
# check trigger-2 success: 1
6093
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6094
f_int2 = CAST(f_char1 AS SIGNED INT),
6095
f_charbig = 'just inserted'
6096
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6098
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6099
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6100
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6101
'just inserted' FROM t0_template
6102
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6103
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
6105
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6106
f_charbig = 'updated by trigger'
6107
WHERE f_int1 = new.f_int1;
6109
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
6110
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6112
# check trigger-3 success: 1
6114
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6115
f_int2 = CAST(f_char1 AS SIGNED INT),
6116
f_charbig = 'just inserted'
6117
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6119
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6120
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6121
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6122
'just inserted' FROM t0_template
6123
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6124
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
6126
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6127
f_charbig = 'updated by trigger'
6128
WHERE f_int1 = - old.f_int1;
6130
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
6131
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6133
# check trigger-4 success: 1
6135
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6136
f_int2 = CAST(f_char1 AS SIGNED INT),
6137
f_charbig = 'just inserted'
6138
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6140
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6141
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6142
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6143
'just inserted' FROM t0_template
6144
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6145
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
6147
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6148
f_charbig = 'updated by trigger'
6149
WHERE f_int1 = new.f_int1;
6151
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
6152
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6154
# check trigger-5 success: 1
6156
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6157
f_int2 = CAST(f_char1 AS SIGNED INT),
6158
f_charbig = 'just inserted'
6159
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6161
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6162
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6163
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6164
'just inserted' FROM t0_template
6165
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6166
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
6168
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6169
f_charbig = 'updated by trigger'
6170
WHERE f_int1 = - old.f_int1;
6172
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
6173
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6175
# check trigger-6 success: 1
6177
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6178
f_int2 = CAST(f_char1 AS SIGNED INT),
6179
f_charbig = 'just inserted'
6180
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6182
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6183
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6184
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6185
'just inserted' FROM t0_template
6186
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6187
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
6189
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6190
f_charbig = 'updated by trigger'
6191
WHERE f_int1 = - old.f_int1;
6194
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6196
# check trigger-7 success: 1
6198
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6199
f_int2 = CAST(f_char1 AS SIGNED INT),
6200
f_charbig = 'just inserted'
6201
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6203
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6204
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6205
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6206
'just inserted' FROM t0_template
6207
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6208
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
6210
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6211
f_charbig = 'updated by trigger'
6212
WHERE f_int1 = - old.f_int1;
6215
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6217
# check trigger-8 success: 1
6219
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6220
f_int2 = CAST(f_char1 AS SIGNED INT),
6221
f_charbig = 'just inserted'
6222
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6224
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6226
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6227
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
6229
SET new.f_int1 = old.f_int1 + @max_row,
6230
new.f_int2 = old.f_int2 - @max_row,
6231
new.f_charbig = '####updated per update trigger####';
6234
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
6235
f_charbig = '####updated per update statement itself####';
6237
# check trigger-9 success: 1
6239
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6240
f_int2 = CAST(f_char1 AS SIGNED INT),
6241
f_charbig = CONCAT('===',f_char1,'===');
6242
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
6244
SET new.f_int1 = new.f_int1 + @max_row,
6245
new.f_int2 = new.f_int2 - @max_row,
6246
new.f_charbig = '####updated per update trigger####';
6249
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
6250
f_charbig = '####updated per update statement itself####';
6252
# check trigger-10 success: 1
6254
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6255
f_int2 = CAST(f_char1 AS SIGNED INT),
6256
f_charbig = CONCAT('===',f_char1,'===');
6257
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
6259
SET new.f_int1 = @my_max1 + @counter,
6260
new.f_int2 = @my_min2 - @counter,
6261
new.f_charbig = '####updated per insert trigger####';
6262
SET @counter = @counter + 1;
6265
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
6266
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6267
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
6268
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
6269
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
6273
# check trigger-11 success: 1
6275
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
6276
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
6277
AND f_charbig = '####updated per insert trigger####';
6278
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
6280
SET new.f_int1 = @my_max1 + @counter,
6281
new.f_int2 = @my_min2 - @counter,
6282
new.f_charbig = '####updated per insert trigger####';
6283
SET @counter = @counter + 1;
6286
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
6287
INSERT INTO t1 (f_char1, f_char2, f_charbig)
6288
SELECT CAST(f_int1 AS CHAR),
6289
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
6290
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
6294
# check trigger-12 success: 1
6296
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
6297
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
6298
AND f_charbig = '####updated per insert trigger####';
6300
Table Op Msg_type Msg_text
6301
test.t1 analyze status OK
6302
CHECK TABLE t1 EXTENDED;
6303
Table Op Msg_type Msg_text
6304
test.t1 check status OK
6305
CHECKSUM TABLE t1 EXTENDED;
6307
test.t1 <some_value>
6309
Table Op Msg_type Msg_text
6310
test.t1 optimize status OK
6311
# check layout success: 1
6312
REPAIR TABLE t1 EXTENDED;
6313
Table Op Msg_type Msg_text
6314
test.t1 repair status OK
6315
# check layout success: 1
6318
# check TRUNCATE success: 1
6319
# check layout success: 1
6320
# End usability test (inc/partition_check.inc)
6327
f_charbig VARCHAR(1000)
6328
, UNIQUE INDEX uidx1 (f_int1,f_int2)
6330
PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int2)
6331
(PARTITION part1 VALUES LESS THAN (0)
6332
(SUBPARTITION subpart11, SUBPARTITION subpart12),
6333
PARTITION part2 VALUES LESS THAN (5)
6334
(SUBPARTITION subpart21, SUBPARTITION subpart22),
6335
PARTITION part3 VALUES LESS THAN (10)
6336
(SUBPARTITION subpart31, SUBPARTITION subpart32),
6337
PARTITION part4 VALUES LESS THAN (2147483646)
6338
(SUBPARTITION subpart41, SUBPARTITION subpart42));
6339
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
6340
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
6341
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
6342
ALTER TABLE t1 DROP INDEX uidx1;
6343
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
6344
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
6345
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
6346
# Start usability test (inc/partition_check.inc)
6348
SHOW CREATE TABLE t1;
6350
t1 CREATE TABLE `t1` (
6351
`f_int1` int(11) DEFAULT NULL,
6352
`f_int2` int(11) DEFAULT NULL,
6353
`f_char1` char(20) DEFAULT NULL,
6354
`f_char2` char(20) DEFAULT NULL,
6355
`f_charbig` varchar(1000) DEFAULT NULL
6356
) ENGINE=MyISAM DEFAULT CHARSET=latin1
6357
/*!50100 PARTITION BY RANGE (f_int1)
6358
SUBPARTITION BY KEY (f_int2)
6359
(PARTITION part1 VALUES LESS THAN (0)
6360
(SUBPARTITION subpart11 ENGINE = MyISAM,
6361
SUBPARTITION subpart12 ENGINE = MyISAM),
6362
PARTITION part2 VALUES LESS THAN (5)
6363
(SUBPARTITION subpart21 ENGINE = MyISAM,
6364
SUBPARTITION subpart22 ENGINE = MyISAM),
6365
PARTITION part3 VALUES LESS THAN (10)
6366
(SUBPARTITION subpart31 ENGINE = MyISAM,
6367
SUBPARTITION subpart32 ENGINE = MyISAM),
6368
PARTITION part4 VALUES LESS THAN (2147483646)
6369
(SUBPARTITION subpart41 ENGINE = MyISAM,
6370
SUBPARTITION subpart42 ENGINE = MyISAM)) */
6373
t1#P#part1#SP#subpart11.MYD
6374
t1#P#part1#SP#subpart11.MYI
6375
t1#P#part1#SP#subpart12.MYD
6376
t1#P#part1#SP#subpart12.MYI
6377
t1#P#part2#SP#subpart21.MYD
6378
t1#P#part2#SP#subpart21.MYI
6379
t1#P#part2#SP#subpart22.MYD
6380
t1#P#part2#SP#subpart22.MYI
6381
t1#P#part3#SP#subpart31.MYD
6382
t1#P#part3#SP#subpart31.MYI
6383
t1#P#part3#SP#subpart32.MYD
6384
t1#P#part3#SP#subpart32.MYI
6385
t1#P#part4#SP#subpart41.MYD
6386
t1#P#part4#SP#subpart41.MYI
6387
t1#P#part4#SP#subpart42.MYD
6388
t1#P#part4#SP#subpart42.MYI
6392
# check prerequisites-1 success: 1
6393
# check COUNT(*) success: 1
6394
# check MIN/MAX(f_int1) success: 1
6395
# check MIN/MAX(f_int2) success: 1
6396
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6397
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
6398
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
6399
WHERE f_int1 IN (2,3);
6400
# check prerequisites-3 success: 1
6401
DELETE FROM t1 WHERE f_charbig = 'delete me';
6402
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
6403
# check read via f_int1 success: 1
6404
# check read via f_int2 success: 1
6406
# check multiple-1 success: 1
6407
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
6409
# check multiple-2 success: 1
6410
INSERT INTO t1 SELECT * FROM t0_template
6411
WHERE MOD(f_int1,3) = 0;
6413
# check multiple-3 success: 1
6414
UPDATE t1 SET f_int1 = f_int1 + @max_row
6415
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
6416
AND @max_row_div2 + @max_row_div4;
6418
# check multiple-4 success: 1
6420
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
6421
AND @max_row_div2 + @max_row_div4 + @max_row;
6423
# check multiple-5 success: 1
6424
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
6426
SET f_int1 = @cur_value , f_int2 = @cur_value,
6427
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
6428
f_charbig = '#SINGLE#';
6430
# check single-1 success: 1
6431
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
6433
SET f_int1 = @cur_value , f_int2 = @cur_value,
6434
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
6435
f_charbig = '#SINGLE#';
6437
# check single-2 success: 1
6438
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
6439
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
6440
UPDATE t1 SET f_int1 = @cur_value2
6441
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
6443
# check single-3 success: 1
6444
SET @cur_value1= -1;
6445
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
6446
UPDATE t1 SET f_int1 = @cur_value1
6447
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
6449
# check single-4 success: 1
6450
SELECT MAX(f_int1) INTO @cur_value FROM t1;
6451
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
6453
# check single-5 success: 1
6454
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
6456
# check single-6 success: 1
6457
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
6458
ERROR HY000: Table has no partition for value 2147483647
6459
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
6460
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
6461
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
6462
f_charbig = '#NULL#';
6464
SET f_int1 = NULL , f_int2 = -@max_row,
6465
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
6466
f_charbig = '#NULL#';
6467
# check null success: 1
6469
# check null-1 success: 1
6470
UPDATE t1 SET f_int1 = -@max_row
6471
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
6472
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
6474
# check null-2 success: 1
6475
UPDATE t1 SET f_int1 = NULL
6476
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
6477
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
6479
# check null-3 success: 1
6481
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
6482
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
6484
# check null-4 success: 1
6486
WHERE f_int1 = 0 AND f_int2 = 0
6487
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
6488
AND f_charbig = '#NULL#';
6490
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6491
SELECT f_int1, f_int1, '', '', 'was inserted'
6492
FROM t0_template source_tab
6493
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
6495
# check transactions-1 success: 1
6498
# check transactions-2 success: 1
6501
# check transactions-3 success: 1
6502
DELETE FROM t1 WHERE f_charbig = 'was inserted';
6506
# check transactions-4 success: 1
6507
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6508
SELECT f_int1, f_int1, '', '', 'was inserted'
6509
FROM t0_template source_tab
6510
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
6512
# check transactions-5 success: 1
6515
Warning 1196 Some non-transactional changed tables couldn't be rolled back
6517
# check transactions-6 success: 1
6518
# INFO: Storage engine used for t1 seems to be not transactional.
6521
# check transactions-7 success: 1
6522
DELETE FROM t1 WHERE f_charbig = 'was inserted';
6524
SET @@session.sql_mode = 'traditional';
6525
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
6526
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6527
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
6528
'', '', 'was inserted' FROM t0_template
6529
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
6530
ERROR 22012: Division by 0
6533
# check transactions-8 success: 1
6534
# INFO: Storage engine used for t1 seems to be unable to revert
6535
# changes made by the failing statement.
6536
SET @@session.sql_mode = '';
6538
DELETE FROM t1 WHERE f_charbig = 'was inserted';
6540
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
6542
# check special-1 success: 1
6543
UPDATE t1 SET f_charbig = '';
6545
# check special-2 success: 1
6546
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
6547
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
6548
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
6549
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6550
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6551
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6552
'just inserted' FROM t0_template
6553
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6554
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
6556
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6557
f_charbig = 'updated by trigger'
6558
WHERE f_int1 = new.f_int1;
6560
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6561
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
6562
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6564
# check trigger-1 success: 1
6566
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6567
f_int2 = CAST(f_char1 AS SIGNED INT),
6568
f_charbig = 'just inserted'
6569
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6571
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6572
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6573
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6574
'just inserted' FROM t0_template
6575
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6576
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
6578
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6579
f_charbig = 'updated by trigger'
6580
WHERE f_int1 = new.f_int1;
6582
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6583
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
6584
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6586
# check trigger-2 success: 1
6588
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6589
f_int2 = CAST(f_char1 AS SIGNED INT),
6590
f_charbig = 'just inserted'
6591
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6593
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6594
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6595
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6596
'just inserted' FROM t0_template
6597
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6598
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
6600
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6601
f_charbig = 'updated by trigger'
6602
WHERE f_int1 = new.f_int1;
6604
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
6605
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6607
# check trigger-3 success: 1
6609
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6610
f_int2 = CAST(f_char1 AS SIGNED INT),
6611
f_charbig = 'just inserted'
6612
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6614
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6615
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6616
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6617
'just inserted' FROM t0_template
6618
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6619
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
6621
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6622
f_charbig = 'updated by trigger'
6623
WHERE f_int1 = - old.f_int1;
6625
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
6626
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6628
# check trigger-4 success: 1
6630
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6631
f_int2 = CAST(f_char1 AS SIGNED INT),
6632
f_charbig = 'just inserted'
6633
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6635
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6636
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6637
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6638
'just inserted' FROM t0_template
6639
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6640
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
6642
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6643
f_charbig = 'updated by trigger'
6644
WHERE f_int1 = new.f_int1;
6646
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
6647
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6649
# check trigger-5 success: 1
6651
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6652
f_int2 = CAST(f_char1 AS SIGNED INT),
6653
f_charbig = 'just inserted'
6654
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6656
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6657
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6658
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6659
'just inserted' FROM t0_template
6660
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6661
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
6663
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6664
f_charbig = 'updated by trigger'
6665
WHERE f_int1 = - old.f_int1;
6667
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
6668
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6670
# check trigger-6 success: 1
6672
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6673
f_int2 = CAST(f_char1 AS SIGNED INT),
6674
f_charbig = 'just inserted'
6675
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6677
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6678
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6679
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6680
'just inserted' FROM t0_template
6681
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6682
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
6684
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6685
f_charbig = 'updated by trigger'
6686
WHERE f_int1 = - old.f_int1;
6689
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6691
# check trigger-7 success: 1
6693
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6694
f_int2 = CAST(f_char1 AS SIGNED INT),
6695
f_charbig = 'just inserted'
6696
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6698
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6699
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6700
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6701
'just inserted' FROM t0_template
6702
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6703
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
6705
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6706
f_charbig = 'updated by trigger'
6707
WHERE f_int1 = - old.f_int1;
6710
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6712
# check trigger-8 success: 1
6714
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6715
f_int2 = CAST(f_char1 AS SIGNED INT),
6716
f_charbig = 'just inserted'
6717
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6719
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6721
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6722
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
6724
SET new.f_int1 = old.f_int1 + @max_row,
6725
new.f_int2 = old.f_int2 - @max_row,
6726
new.f_charbig = '####updated per update trigger####';
6729
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
6730
f_charbig = '####updated per update statement itself####';
6732
# check trigger-9 success: 1
6734
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6735
f_int2 = CAST(f_char1 AS SIGNED INT),
6736
f_charbig = CONCAT('===',f_char1,'===');
6737
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
6739
SET new.f_int1 = new.f_int1 + @max_row,
6740
new.f_int2 = new.f_int2 - @max_row,
6741
new.f_charbig = '####updated per update trigger####';
6744
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
6745
f_charbig = '####updated per update statement itself####';
6747
# check trigger-10 success: 1
6749
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6750
f_int2 = CAST(f_char1 AS SIGNED INT),
6751
f_charbig = CONCAT('===',f_char1,'===');
6752
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
6754
SET new.f_int1 = @my_max1 + @counter,
6755
new.f_int2 = @my_min2 - @counter,
6756
new.f_charbig = '####updated per insert trigger####';
6757
SET @counter = @counter + 1;
6760
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
6761
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6762
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
6763
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
6764
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
6768
# check trigger-11 success: 1
6770
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
6771
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
6772
AND f_charbig = '####updated per insert trigger####';
6773
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
6775
SET new.f_int1 = @my_max1 + @counter,
6776
new.f_int2 = @my_min2 - @counter,
6777
new.f_charbig = '####updated per insert trigger####';
6778
SET @counter = @counter + 1;
6781
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
6782
INSERT INTO t1 (f_char1, f_char2, f_charbig)
6783
SELECT CAST(f_int1 AS CHAR),
6784
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
6785
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
6789
# check trigger-12 success: 1
6791
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
6792
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
6793
AND f_charbig = '####updated per insert trigger####';
6795
Table Op Msg_type Msg_text
6796
test.t1 analyze status OK
6797
CHECK TABLE t1 EXTENDED;
6798
Table Op Msg_type Msg_text
6799
test.t1 check status OK
6800
CHECKSUM TABLE t1 EXTENDED;
6802
test.t1 <some_value>
6804
Table Op Msg_type Msg_text
6805
test.t1 optimize status OK
6806
# check layout success: 1
6807
REPAIR TABLE t1 EXTENDED;
6808
Table Op Msg_type Msg_text
6809
test.t1 repair status OK
6810
# check layout success: 1
6813
# check TRUNCATE success: 1
6814
# check layout success: 1
6815
# End usability test (inc/partition_check.inc)
6822
f_charbig VARCHAR(1000)
6823
, UNIQUE INDEX uidx1 (f_int1,f_int2)
6825
PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int2 + 1)
6826
(PARTITION part1 VALUES IN (0)
6827
(SUBPARTITION sp11, SUBPARTITION sp12),
6828
PARTITION part2 VALUES IN (1)
6829
(SUBPARTITION sp21, SUBPARTITION sp22),
6830
PARTITION part3 VALUES IN (2)
6831
(SUBPARTITION sp31, SUBPARTITION sp32),
6832
PARTITION part4 VALUES IN (NULL)
6833
(SUBPARTITION sp41, SUBPARTITION sp42));
6834
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
6835
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
6836
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
6837
ALTER TABLE t1 DROP INDEX uidx1;
6838
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
6839
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
6840
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
6841
# Start usability test (inc/partition_check.inc)
6843
SHOW CREATE TABLE t1;
6845
t1 CREATE TABLE `t1` (
6846
`f_int1` int(11) DEFAULT NULL,
6847
`f_int2` int(11) DEFAULT NULL,
6848
`f_char1` char(20) DEFAULT NULL,
6849
`f_char2` char(20) DEFAULT NULL,
6850
`f_charbig` varchar(1000) DEFAULT NULL
6851
) ENGINE=MyISAM DEFAULT CHARSET=latin1
6852
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
6853
SUBPARTITION BY HASH (f_int2 + 1)
6854
(PARTITION part1 VALUES IN (0)
6855
(SUBPARTITION sp11 ENGINE = MyISAM,
6856
SUBPARTITION sp12 ENGINE = MyISAM),
6857
PARTITION part2 VALUES IN (1)
6858
(SUBPARTITION sp21 ENGINE = MyISAM,
6859
SUBPARTITION sp22 ENGINE = MyISAM),
6860
PARTITION part3 VALUES IN (2)
6861
(SUBPARTITION sp31 ENGINE = MyISAM,
6862
SUBPARTITION sp32 ENGINE = MyISAM),
6863
PARTITION part4 VALUES IN (NULL)
6864
(SUBPARTITION sp41 ENGINE = MyISAM,
6865
SUBPARTITION sp42 ENGINE = MyISAM)) */
6868
t1#P#part1#SP#sp11.MYD
6869
t1#P#part1#SP#sp11.MYI
6870
t1#P#part1#SP#sp12.MYD
6871
t1#P#part1#SP#sp12.MYI
6872
t1#P#part2#SP#sp21.MYD
6873
t1#P#part2#SP#sp21.MYI
6874
t1#P#part2#SP#sp22.MYD
6875
t1#P#part2#SP#sp22.MYI
6876
t1#P#part3#SP#sp31.MYD
6877
t1#P#part3#SP#sp31.MYI
6878
t1#P#part3#SP#sp32.MYD
6879
t1#P#part3#SP#sp32.MYI
6880
t1#P#part4#SP#sp41.MYD
6881
t1#P#part4#SP#sp41.MYI
6882
t1#P#part4#SP#sp42.MYD
6883
t1#P#part4#SP#sp42.MYI
6887
# check prerequisites-1 success: 1
6888
# check COUNT(*) success: 1
6889
# check MIN/MAX(f_int1) success: 1
6890
# check MIN/MAX(f_int2) success: 1
6891
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6892
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
6893
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
6894
WHERE f_int1 IN (2,3);
6895
# check prerequisites-3 success: 1
6896
DELETE FROM t1 WHERE f_charbig = 'delete me';
6897
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
6898
# check read via f_int1 success: 1
6899
# check read via f_int2 success: 1
6901
# check multiple-1 success: 1
6902
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
6904
# check multiple-2 success: 1
6905
INSERT INTO t1 SELECT * FROM t0_template
6906
WHERE MOD(f_int1,3) = 0;
6908
# check multiple-3 success: 1
6909
UPDATE t1 SET f_int1 = f_int1 + @max_row
6910
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
6911
AND @max_row_div2 + @max_row_div4;
6913
# check multiple-4 success: 1
6915
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
6916
AND @max_row_div2 + @max_row_div4 + @max_row;
6918
# check multiple-5 success: 1
6919
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
6921
SET f_int1 = @cur_value , f_int2 = @cur_value,
6922
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
6923
f_charbig = '#SINGLE#';
6925
# check single-1 success: 1
6926
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
6928
SET f_int1 = @cur_value , f_int2 = @cur_value,
6929
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
6930
f_charbig = '#SINGLE#';
6932
# check single-2 success: 1
6933
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
6934
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
6935
UPDATE t1 SET f_int1 = @cur_value2
6936
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
6938
# check single-3 success: 1
6939
SET @cur_value1= -1;
6940
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
6941
UPDATE t1 SET f_int1 = @cur_value1
6942
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
6944
# check single-4 success: 1
6945
SELECT MAX(f_int1) INTO @cur_value FROM t1;
6946
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
6948
# check single-5 success: 1
6949
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
6951
# check single-6 success: 1
6952
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
6954
# check single-7 success: 1
6955
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
6956
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
6957
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
6958
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
6959
f_charbig = '#NULL#';
6961
SET f_int1 = NULL , f_int2 = -@max_row,
6962
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
6963
f_charbig = '#NULL#';
6964
# check null success: 1
6966
# check null-1 success: 1
6967
UPDATE t1 SET f_int1 = -@max_row
6968
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
6969
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
6971
# check null-2 success: 1
6972
UPDATE t1 SET f_int1 = NULL
6973
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
6974
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
6976
# check null-3 success: 1
6978
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
6979
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
6981
# check null-4 success: 1
6983
WHERE f_int1 = 0 AND f_int2 = 0
6984
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
6985
AND f_charbig = '#NULL#';
6987
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6988
SELECT f_int1, f_int1, '', '', 'was inserted'
6989
FROM t0_template source_tab
6990
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
6992
# check transactions-1 success: 1
6995
# check transactions-2 success: 1
6998
# check transactions-3 success: 1
6999
DELETE FROM t1 WHERE f_charbig = 'was inserted';
7003
# check transactions-4 success: 1
7004
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7005
SELECT f_int1, f_int1, '', '', 'was inserted'
7006
FROM t0_template source_tab
7007
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
7009
# check transactions-5 success: 1
7012
Warning 1196 Some non-transactional changed tables couldn't be rolled back
7014
# check transactions-6 success: 1
7015
# INFO: Storage engine used for t1 seems to be not transactional.
7018
# check transactions-7 success: 1
7019
DELETE FROM t1 WHERE f_charbig = 'was inserted';
7021
SET @@session.sql_mode = 'traditional';
7022
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
7023
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7024
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
7025
'', '', 'was inserted' FROM t0_template
7026
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
7027
ERROR 22012: Division by 0
7030
# check transactions-8 success: 1
7031
# INFO: Storage engine used for t1 seems to be unable to revert
7032
# changes made by the failing statement.
7033
SET @@session.sql_mode = '';
7035
DELETE FROM t1 WHERE f_charbig = 'was inserted';
7037
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
7039
# check special-1 success: 1
7040
UPDATE t1 SET f_charbig = '';
7042
# check special-2 success: 1
7043
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
7044
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
7045
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
7046
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7047
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7048
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7049
'just inserted' FROM t0_template
7050
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7051
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
7053
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7054
f_charbig = 'updated by trigger'
7055
WHERE f_int1 = new.f_int1;
7057
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7058
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
7059
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7061
# check trigger-1 success: 1
7063
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7064
f_int2 = CAST(f_char1 AS SIGNED INT),
7065
f_charbig = 'just inserted'
7066
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7068
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7069
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7070
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7071
'just inserted' FROM t0_template
7072
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7073
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
7075
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7076
f_charbig = 'updated by trigger'
7077
WHERE f_int1 = new.f_int1;
7079
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7080
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
7081
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7083
# check trigger-2 success: 1
7085
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7086
f_int2 = CAST(f_char1 AS SIGNED INT),
7087
f_charbig = 'just inserted'
7088
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7090
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7091
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7092
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7093
'just inserted' FROM t0_template
7094
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7095
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
7097
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7098
f_charbig = 'updated by trigger'
7099
WHERE f_int1 = new.f_int1;
7101
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
7102
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7104
# check trigger-3 success: 1
7106
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7107
f_int2 = CAST(f_char1 AS SIGNED INT),
7108
f_charbig = 'just inserted'
7109
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7111
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7112
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7113
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7114
'just inserted' FROM t0_template
7115
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7116
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
7118
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7119
f_charbig = 'updated by trigger'
7120
WHERE f_int1 = - old.f_int1;
7122
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
7123
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7125
# check trigger-4 success: 1
7127
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7128
f_int2 = CAST(f_char1 AS SIGNED INT),
7129
f_charbig = 'just inserted'
7130
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7132
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7133
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7134
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7135
'just inserted' FROM t0_template
7136
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7137
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
7139
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7140
f_charbig = 'updated by trigger'
7141
WHERE f_int1 = new.f_int1;
7143
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
7144
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7146
# check trigger-5 success: 1
7148
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7149
f_int2 = CAST(f_char1 AS SIGNED INT),
7150
f_charbig = 'just inserted'
7151
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7153
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7154
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7155
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7156
'just inserted' FROM t0_template
7157
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7158
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
7160
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7161
f_charbig = 'updated by trigger'
7162
WHERE f_int1 = - old.f_int1;
7164
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
7165
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7167
# check trigger-6 success: 1
7169
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7170
f_int2 = CAST(f_char1 AS SIGNED INT),
7171
f_charbig = 'just inserted'
7172
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7174
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7175
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7176
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7177
'just inserted' FROM t0_template
7178
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7179
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
7181
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7182
f_charbig = 'updated by trigger'
7183
WHERE f_int1 = - old.f_int1;
7186
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7188
# check trigger-7 success: 1
7190
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7191
f_int2 = CAST(f_char1 AS SIGNED INT),
7192
f_charbig = 'just inserted'
7193
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7195
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7196
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7197
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7198
'just inserted' FROM t0_template
7199
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7200
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
7202
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7203
f_charbig = 'updated by trigger'
7204
WHERE f_int1 = - old.f_int1;
7207
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7209
# check trigger-8 success: 1
7211
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7212
f_int2 = CAST(f_char1 AS SIGNED INT),
7213
f_charbig = 'just inserted'
7214
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7216
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7218
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7219
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
7221
SET new.f_int1 = old.f_int1 + @max_row,
7222
new.f_int2 = old.f_int2 - @max_row,
7223
new.f_charbig = '####updated per update trigger####';
7226
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
7227
f_charbig = '####updated per update statement itself####';
7229
# check trigger-9 success: 1
7231
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7232
f_int2 = CAST(f_char1 AS SIGNED INT),
7233
f_charbig = CONCAT('===',f_char1,'===');
7234
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
7236
SET new.f_int1 = new.f_int1 + @max_row,
7237
new.f_int2 = new.f_int2 - @max_row,
7238
new.f_charbig = '####updated per update trigger####';
7241
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
7242
f_charbig = '####updated per update statement itself####';
7244
# check trigger-10 success: 1
7246
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7247
f_int2 = CAST(f_char1 AS SIGNED INT),
7248
f_charbig = CONCAT('===',f_char1,'===');
7249
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
7251
SET new.f_int1 = @my_max1 + @counter,
7252
new.f_int2 = @my_min2 - @counter,
7253
new.f_charbig = '####updated per insert trigger####';
7254
SET @counter = @counter + 1;
7257
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
7258
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7259
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
7260
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
7261
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
7265
# check trigger-11 success: 1
7267
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
7268
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
7269
AND f_charbig = '####updated per insert trigger####';
7270
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
7272
SET new.f_int1 = @my_max1 + @counter,
7273
new.f_int2 = @my_min2 - @counter,
7274
new.f_charbig = '####updated per insert trigger####';
7275
SET @counter = @counter + 1;
7278
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
7279
INSERT INTO t1 (f_char1, f_char2, f_charbig)
7280
SELECT CAST(f_int1 AS CHAR),
7281
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
7282
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
7286
# check trigger-12 success: 1
7288
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
7289
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
7290
AND f_charbig = '####updated per insert trigger####';
7292
Table Op Msg_type Msg_text
7293
test.t1 analyze status OK
7294
CHECK TABLE t1 EXTENDED;
7295
Table Op Msg_type Msg_text
7296
test.t1 check status OK
7297
CHECKSUM TABLE t1 EXTENDED;
7299
test.t1 <some_value>
7301
Table Op Msg_type Msg_text
7302
test.t1 optimize status OK
7303
# check layout success: 1
7304
REPAIR TABLE t1 EXTENDED;
7305
Table Op Msg_type Msg_text
7306
test.t1 repair status OK
7307
# check layout success: 1
7310
# check TRUNCATE success: 1
7311
# check layout success: 1
7312
# End usability test (inc/partition_check.inc)
7319
f_charbig VARCHAR(1000)
7320
, UNIQUE INDEX uidx1 (f_int1,f_int2)
7322
PARTITION BY LIST(ABS(MOD(f_int1,2)))
7323
SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3
7324
(PARTITION part1 VALUES IN (0),
7325
PARTITION part2 VALUES IN (1),
7326
PARTITION part3 VALUES IN (NULL));
7327
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
7328
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
7329
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
7330
ALTER TABLE t1 DROP INDEX uidx1;
7331
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
7332
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
7333
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
7334
# Start usability test (inc/partition_check.inc)
7336
SHOW CREATE TABLE t1;
7338
t1 CREATE TABLE `t1` (
7339
`f_int1` int(11) DEFAULT NULL,
7340
`f_int2` int(11) DEFAULT NULL,
7341
`f_char1` char(20) DEFAULT NULL,
7342
`f_char2` char(20) DEFAULT NULL,
7343
`f_charbig` varchar(1000) DEFAULT NULL
7344
) ENGINE=MyISAM DEFAULT CHARSET=latin1
7345
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
7346
SUBPARTITION BY KEY (f_int2)
7348
(PARTITION part1 VALUES IN (0) ENGINE = MyISAM,
7349
PARTITION part2 VALUES IN (1) ENGINE = MyISAM,
7350
PARTITION part3 VALUES IN (NULL) ENGINE = MyISAM) */
7353
t1#P#part1#SP#part1sp0.MYD
7354
t1#P#part1#SP#part1sp0.MYI
7355
t1#P#part1#SP#part1sp1.MYD
7356
t1#P#part1#SP#part1sp1.MYI
7357
t1#P#part1#SP#part1sp2.MYD
7358
t1#P#part1#SP#part1sp2.MYI
7359
t1#P#part2#SP#part2sp0.MYD
7360
t1#P#part2#SP#part2sp0.MYI
7361
t1#P#part2#SP#part2sp1.MYD
7362
t1#P#part2#SP#part2sp1.MYI
7363
t1#P#part2#SP#part2sp2.MYD
7364
t1#P#part2#SP#part2sp2.MYI
7365
t1#P#part3#SP#part3sp0.MYD
7366
t1#P#part3#SP#part3sp0.MYI
7367
t1#P#part3#SP#part3sp1.MYD
7368
t1#P#part3#SP#part3sp1.MYI
7369
t1#P#part3#SP#part3sp2.MYD
7370
t1#P#part3#SP#part3sp2.MYI
7374
# check prerequisites-1 success: 1
7375
# check COUNT(*) success: 1
7376
# check MIN/MAX(f_int1) success: 1
7377
# check MIN/MAX(f_int2) success: 1
7378
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7379
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
7380
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
7381
WHERE f_int1 IN (2,3);
7382
# check prerequisites-3 success: 1
7383
DELETE FROM t1 WHERE f_charbig = 'delete me';
7384
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
7385
# check read via f_int1 success: 1
7386
# check read via f_int2 success: 1
7388
# check multiple-1 success: 1
7389
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
7391
# check multiple-2 success: 1
7392
INSERT INTO t1 SELECT * FROM t0_template
7393
WHERE MOD(f_int1,3) = 0;
7395
# check multiple-3 success: 1
7396
UPDATE t1 SET f_int1 = f_int1 + @max_row
7397
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
7398
AND @max_row_div2 + @max_row_div4;
7400
# check multiple-4 success: 1
7402
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
7403
AND @max_row_div2 + @max_row_div4 + @max_row;
7405
# check multiple-5 success: 1
7406
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
7408
SET f_int1 = @cur_value , f_int2 = @cur_value,
7409
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
7410
f_charbig = '#SINGLE#';
7412
# check single-1 success: 1
7413
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
7415
SET f_int1 = @cur_value , f_int2 = @cur_value,
7416
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
7417
f_charbig = '#SINGLE#';
7419
# check single-2 success: 1
7420
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
7421
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
7422
UPDATE t1 SET f_int1 = @cur_value2
7423
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
7425
# check single-3 success: 1
7426
SET @cur_value1= -1;
7427
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
7428
UPDATE t1 SET f_int1 = @cur_value1
7429
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
7431
# check single-4 success: 1
7432
SELECT MAX(f_int1) INTO @cur_value FROM t1;
7433
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
7435
# check single-5 success: 1
7436
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
7438
# check single-6 success: 1
7439
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
7441
# check single-7 success: 1
7442
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
7443
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
7444
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
7445
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
7446
f_charbig = '#NULL#';
7448
SET f_int1 = NULL , f_int2 = -@max_row,
7449
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
7450
f_charbig = '#NULL#';
7451
# check null success: 1
7453
# check null-1 success: 1
7454
UPDATE t1 SET f_int1 = -@max_row
7455
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
7456
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
7458
# check null-2 success: 1
7459
UPDATE t1 SET f_int1 = NULL
7460
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
7461
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
7463
# check null-3 success: 1
7465
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
7466
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
7468
# check null-4 success: 1
7470
WHERE f_int1 = 0 AND f_int2 = 0
7471
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
7472
AND f_charbig = '#NULL#';
7474
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7475
SELECT f_int1, f_int1, '', '', 'was inserted'
7476
FROM t0_template source_tab
7477
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
7479
# check transactions-1 success: 1
7482
# check transactions-2 success: 1
7485
# check transactions-3 success: 1
7486
DELETE FROM t1 WHERE f_charbig = 'was inserted';
7490
# check transactions-4 success: 1
7491
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7492
SELECT f_int1, f_int1, '', '', 'was inserted'
7493
FROM t0_template source_tab
7494
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
7496
# check transactions-5 success: 1
7499
Warning 1196 Some non-transactional changed tables couldn't be rolled back
7501
# check transactions-6 success: 1
7502
# INFO: Storage engine used for t1 seems to be not transactional.
7505
# check transactions-7 success: 1
7506
DELETE FROM t1 WHERE f_charbig = 'was inserted';
7508
SET @@session.sql_mode = 'traditional';
7509
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
7510
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7511
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
7512
'', '', 'was inserted' FROM t0_template
7513
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
7514
ERROR 22012: Division by 0
7517
# check transactions-8 success: 1
7518
# INFO: Storage engine used for t1 seems to be unable to revert
7519
# changes made by the failing statement.
7520
SET @@session.sql_mode = '';
7522
DELETE FROM t1 WHERE f_charbig = 'was inserted';
7524
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
7526
# check special-1 success: 1
7527
UPDATE t1 SET f_charbig = '';
7529
# check special-2 success: 1
7530
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
7531
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
7532
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
7533
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7534
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7535
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7536
'just inserted' FROM t0_template
7537
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7538
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
7540
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7541
f_charbig = 'updated by trigger'
7542
WHERE f_int1 = new.f_int1;
7544
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7545
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
7546
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7548
# check trigger-1 success: 1
7550
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7551
f_int2 = CAST(f_char1 AS SIGNED INT),
7552
f_charbig = 'just inserted'
7553
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7555
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7556
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7557
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7558
'just inserted' FROM t0_template
7559
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7560
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
7562
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7563
f_charbig = 'updated by trigger'
7564
WHERE f_int1 = new.f_int1;
7566
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7567
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
7568
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7570
# check trigger-2 success: 1
7572
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7573
f_int2 = CAST(f_char1 AS SIGNED INT),
7574
f_charbig = 'just inserted'
7575
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7577
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7578
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7579
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7580
'just inserted' FROM t0_template
7581
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7582
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
7584
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7585
f_charbig = 'updated by trigger'
7586
WHERE f_int1 = new.f_int1;
7588
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
7589
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7591
# check trigger-3 success: 1
7593
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7594
f_int2 = CAST(f_char1 AS SIGNED INT),
7595
f_charbig = 'just inserted'
7596
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7598
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7599
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7600
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7601
'just inserted' FROM t0_template
7602
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7603
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
7605
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7606
f_charbig = 'updated by trigger'
7607
WHERE f_int1 = - old.f_int1;
7609
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
7610
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7612
# check trigger-4 success: 1
7614
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7615
f_int2 = CAST(f_char1 AS SIGNED INT),
7616
f_charbig = 'just inserted'
7617
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7619
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7620
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7621
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7622
'just inserted' FROM t0_template
7623
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7624
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
7626
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7627
f_charbig = 'updated by trigger'
7628
WHERE f_int1 = new.f_int1;
7630
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
7631
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7633
# check trigger-5 success: 1
7635
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7636
f_int2 = CAST(f_char1 AS SIGNED INT),
7637
f_charbig = 'just inserted'
7638
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7640
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7641
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7642
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7643
'just inserted' FROM t0_template
7644
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7645
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
7647
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7648
f_charbig = 'updated by trigger'
7649
WHERE f_int1 = - old.f_int1;
7651
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
7652
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7654
# check trigger-6 success: 1
7656
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7657
f_int2 = CAST(f_char1 AS SIGNED INT),
7658
f_charbig = 'just inserted'
7659
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7661
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7662
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7663
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7664
'just inserted' FROM t0_template
7665
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7666
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
7668
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7669
f_charbig = 'updated by trigger'
7670
WHERE f_int1 = - old.f_int1;
7673
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7675
# check trigger-7 success: 1
7677
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7678
f_int2 = CAST(f_char1 AS SIGNED INT),
7679
f_charbig = 'just inserted'
7680
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7682
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7683
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7684
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7685
'just inserted' FROM t0_template
7686
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7687
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
7689
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7690
f_charbig = 'updated by trigger'
7691
WHERE f_int1 = - old.f_int1;
7694
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7696
# check trigger-8 success: 1
7698
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7699
f_int2 = CAST(f_char1 AS SIGNED INT),
7700
f_charbig = 'just inserted'
7701
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7703
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7705
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7706
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
7708
SET new.f_int1 = old.f_int1 + @max_row,
7709
new.f_int2 = old.f_int2 - @max_row,
7710
new.f_charbig = '####updated per update trigger####';
7713
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
7714
f_charbig = '####updated per update statement itself####';
7716
# check trigger-9 success: 1
7718
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7719
f_int2 = CAST(f_char1 AS SIGNED INT),
7720
f_charbig = CONCAT('===',f_char1,'===');
7721
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
7723
SET new.f_int1 = new.f_int1 + @max_row,
7724
new.f_int2 = new.f_int2 - @max_row,
7725
new.f_charbig = '####updated per update trigger####';
7728
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
7729
f_charbig = '####updated per update statement itself####';
7731
# check trigger-10 success: 1
7733
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7734
f_int2 = CAST(f_char1 AS SIGNED INT),
7735
f_charbig = CONCAT('===',f_char1,'===');
7736
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
7738
SET new.f_int1 = @my_max1 + @counter,
7739
new.f_int2 = @my_min2 - @counter,
7740
new.f_charbig = '####updated per insert trigger####';
7741
SET @counter = @counter + 1;
7744
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
7745
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7746
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
7747
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
7748
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
7752
# check trigger-11 success: 1
7754
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
7755
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
7756
AND f_charbig = '####updated per insert trigger####';
7757
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
7759
SET new.f_int1 = @my_max1 + @counter,
7760
new.f_int2 = @my_min2 - @counter,
7761
new.f_charbig = '####updated per insert trigger####';
7762
SET @counter = @counter + 1;
7765
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
7766
INSERT INTO t1 (f_char1, f_char2, f_charbig)
7767
SELECT CAST(f_int1 AS CHAR),
7768
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
7769
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
7773
# check trigger-12 success: 1
7775
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
7776
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
7777
AND f_charbig = '####updated per insert trigger####';
7779
Table Op Msg_type Msg_text
7780
test.t1 analyze status OK
7781
CHECK TABLE t1 EXTENDED;
7782
Table Op Msg_type Msg_text
7783
test.t1 check status OK
7784
CHECKSUM TABLE t1 EXTENDED;
7786
test.t1 <some_value>
7788
Table Op Msg_type Msg_text
7789
test.t1 optimize status OK
7790
# check layout success: 1
7791
REPAIR TABLE t1 EXTENDED;
7792
Table Op Msg_type Msg_text
7793
test.t1 repair status OK
7794
# check layout success: 1
7797
# check TRUNCATE success: 1
7798
# check layout success: 1
7799
# End usability test (inc/partition_check.inc)
7801
DROP TABLE IF EXISTS t1;
7807
f_charbig VARCHAR(1000)
7808
, UNIQUE INDEX uidx1 (f_int2,f_int1)
7810
PARTITION BY HASH(f_int1 + f_int2) PARTITIONS 2;
7811
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
7812
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
7813
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
7814
ALTER TABLE t1 DROP INDEX uidx1;
7815
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
7816
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
7817
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
7818
# Start usability test (inc/partition_check.inc)
7820
SHOW CREATE TABLE t1;
7822
t1 CREATE TABLE `t1` (
7823
`f_int1` int(11) DEFAULT NULL,
7824
`f_int2` int(11) DEFAULT NULL,
7825
`f_char1` char(20) DEFAULT NULL,
7826
`f_char2` char(20) DEFAULT NULL,
7827
`f_charbig` varchar(1000) DEFAULT NULL
7828
) ENGINE=MyISAM DEFAULT CHARSET=latin1
7829
/*!50100 PARTITION BY HASH (f_int1 + f_int2)
7840
# check prerequisites-1 success: 1
7841
# check COUNT(*) success: 1
7842
# check MIN/MAX(f_int1) success: 1
7843
# check MIN/MAX(f_int2) success: 1
7844
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7845
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
7846
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
7847
WHERE f_int1 IN (2,3);
7848
# check prerequisites-3 success: 1
7849
DELETE FROM t1 WHERE f_charbig = 'delete me';
7850
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
7851
# check read via f_int1 success: 1
7852
# check read via f_int2 success: 1
7854
# check multiple-1 success: 1
7855
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
7857
# check multiple-2 success: 1
7858
INSERT INTO t1 SELECT * FROM t0_template
7859
WHERE MOD(f_int1,3) = 0;
7861
# check multiple-3 success: 1
7862
UPDATE t1 SET f_int1 = f_int1 + @max_row
7863
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
7864
AND @max_row_div2 + @max_row_div4;
7866
# check multiple-4 success: 1
7868
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
7869
AND @max_row_div2 + @max_row_div4 + @max_row;
7871
# check multiple-5 success: 1
7872
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
7874
SET f_int1 = @cur_value , f_int2 = @cur_value,
7875
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
7876
f_charbig = '#SINGLE#';
7878
# check single-1 success: 1
7879
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
7881
SET f_int1 = @cur_value , f_int2 = @cur_value,
7882
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
7883
f_charbig = '#SINGLE#';
7885
# check single-2 success: 1
7886
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
7887
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
7888
UPDATE t1 SET f_int1 = @cur_value2
7889
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
7891
# check single-3 success: 1
7892
SET @cur_value1= -1;
7893
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
7894
UPDATE t1 SET f_int1 = @cur_value1
7895
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
7897
# check single-4 success: 1
7898
SELECT MAX(f_int1) INTO @cur_value FROM t1;
7899
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
7901
# check single-5 success: 1
7902
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
7904
# check single-6 success: 1
7905
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
7907
# check single-7 success: 1
7908
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
7909
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
7910
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
7911
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
7912
f_charbig = '#NULL#';
7914
SET f_int1 = NULL , f_int2 = -@max_row,
7915
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
7916
f_charbig = '#NULL#';
7917
# check null success: 1
7919
# check null-1 success: 1
7920
UPDATE t1 SET f_int1 = -@max_row
7921
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
7922
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
7924
# check null-2 success: 1
7925
UPDATE t1 SET f_int1 = NULL
7926
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
7927
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
7929
# check null-3 success: 1
7931
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
7932
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
7934
# check null-4 success: 1
7936
WHERE f_int1 = 0 AND f_int2 = 0
7937
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
7938
AND f_charbig = '#NULL#';
7940
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7941
SELECT f_int1, f_int1, '', '', 'was inserted'
7942
FROM t0_template source_tab
7943
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
7945
# check transactions-1 success: 1
7948
# check transactions-2 success: 1
7951
# check transactions-3 success: 1
7952
DELETE FROM t1 WHERE f_charbig = 'was inserted';
7956
# check transactions-4 success: 1
7957
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7958
SELECT f_int1, f_int1, '', '', 'was inserted'
7959
FROM t0_template source_tab
7960
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
7962
# check transactions-5 success: 1
7965
Warning 1196 Some non-transactional changed tables couldn't be rolled back
7967
# check transactions-6 success: 1
7968
# INFO: Storage engine used for t1 seems to be not transactional.
7971
# check transactions-7 success: 1
7972
DELETE FROM t1 WHERE f_charbig = 'was inserted';
7974
SET @@session.sql_mode = 'traditional';
7975
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
7976
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7977
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
7978
'', '', 'was inserted' FROM t0_template
7979
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
7980
ERROR 22012: Division by 0
7983
# check transactions-8 success: 1
7984
# INFO: Storage engine used for t1 seems to be unable to revert
7985
# changes made by the failing statement.
7986
SET @@session.sql_mode = '';
7988
DELETE FROM t1 WHERE f_charbig = 'was inserted';
7990
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
7992
# check special-1 success: 1
7993
UPDATE t1 SET f_charbig = '';
7995
# check special-2 success: 1
7996
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
7997
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
7998
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
7999
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8000
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8001
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8002
'just inserted' FROM t0_template
8003
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8004
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
8006
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8007
f_charbig = 'updated by trigger'
8008
WHERE f_int1 = new.f_int1;
8010
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8011
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
8012
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8014
# check trigger-1 success: 1
8016
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8017
f_int2 = CAST(f_char1 AS SIGNED INT),
8018
f_charbig = 'just inserted'
8019
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8021
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8022
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8023
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8024
'just inserted' FROM t0_template
8025
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8026
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
8028
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8029
f_charbig = 'updated by trigger'
8030
WHERE f_int1 = new.f_int1;
8032
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8033
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
8034
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8036
# check trigger-2 success: 1
8038
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8039
f_int2 = CAST(f_char1 AS SIGNED INT),
8040
f_charbig = 'just inserted'
8041
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8043
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8044
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8045
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8046
'just inserted' FROM t0_template
8047
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8048
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
8050
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8051
f_charbig = 'updated by trigger'
8052
WHERE f_int1 = new.f_int1;
8054
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
8055
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8057
# check trigger-3 success: 1
8059
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8060
f_int2 = CAST(f_char1 AS SIGNED INT),
8061
f_charbig = 'just inserted'
8062
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8064
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8065
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8066
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8067
'just inserted' FROM t0_template
8068
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8069
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
8071
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8072
f_charbig = 'updated by trigger'
8073
WHERE f_int1 = - old.f_int1;
8075
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
8076
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8078
# check trigger-4 success: 1
8080
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8081
f_int2 = CAST(f_char1 AS SIGNED INT),
8082
f_charbig = 'just inserted'
8083
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8085
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8086
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8087
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8088
'just inserted' FROM t0_template
8089
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8090
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
8092
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8093
f_charbig = 'updated by trigger'
8094
WHERE f_int1 = new.f_int1;
8096
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
8097
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8099
# check trigger-5 success: 1
8101
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8102
f_int2 = CAST(f_char1 AS SIGNED INT),
8103
f_charbig = 'just inserted'
8104
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8106
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8107
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8108
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8109
'just inserted' FROM t0_template
8110
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8111
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
8113
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8114
f_charbig = 'updated by trigger'
8115
WHERE f_int1 = - old.f_int1;
8117
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
8118
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8120
# check trigger-6 success: 1
8122
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8123
f_int2 = CAST(f_char1 AS SIGNED INT),
8124
f_charbig = 'just inserted'
8125
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8127
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8128
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8129
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8130
'just inserted' FROM t0_template
8131
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8132
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
8134
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8135
f_charbig = 'updated by trigger'
8136
WHERE f_int1 = - old.f_int1;
8139
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8141
# check trigger-7 success: 1
8143
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8144
f_int2 = CAST(f_char1 AS SIGNED INT),
8145
f_charbig = 'just inserted'
8146
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8148
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8149
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8150
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8151
'just inserted' FROM t0_template
8152
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8153
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
8155
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8156
f_charbig = 'updated by trigger'
8157
WHERE f_int1 = - old.f_int1;
8160
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8162
# check trigger-8 success: 1
8164
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8165
f_int2 = CAST(f_char1 AS SIGNED INT),
8166
f_charbig = 'just inserted'
8167
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8169
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8171
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8172
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
8174
SET new.f_int1 = old.f_int1 + @max_row,
8175
new.f_int2 = old.f_int2 - @max_row,
8176
new.f_charbig = '####updated per update trigger####';
8179
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
8180
f_charbig = '####updated per update statement itself####';
8182
# check trigger-9 success: 1
8184
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8185
f_int2 = CAST(f_char1 AS SIGNED INT),
8186
f_charbig = CONCAT('===',f_char1,'===');
8187
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
8189
SET new.f_int1 = new.f_int1 + @max_row,
8190
new.f_int2 = new.f_int2 - @max_row,
8191
new.f_charbig = '####updated per update trigger####';
8194
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
8195
f_charbig = '####updated per update statement itself####';
8197
# check trigger-10 success: 1
8199
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8200
f_int2 = CAST(f_char1 AS SIGNED INT),
8201
f_charbig = CONCAT('===',f_char1,'===');
8202
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
8204
SET new.f_int1 = @my_max1 + @counter,
8205
new.f_int2 = @my_min2 - @counter,
8206
new.f_charbig = '####updated per insert trigger####';
8207
SET @counter = @counter + 1;
8210
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
8211
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8212
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
8213
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
8214
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
8218
# check trigger-11 success: 1
8220
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
8221
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
8222
AND f_charbig = '####updated per insert trigger####';
8223
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
8225
SET new.f_int1 = @my_max1 + @counter,
8226
new.f_int2 = @my_min2 - @counter,
8227
new.f_charbig = '####updated per insert trigger####';
8228
SET @counter = @counter + 1;
8231
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
8232
INSERT INTO t1 (f_char1, f_char2, f_charbig)
8233
SELECT CAST(f_int1 AS CHAR),
8234
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
8235
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
8239
# check trigger-12 success: 1
8241
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
8242
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
8243
AND f_charbig = '####updated per insert trigger####';
8245
Table Op Msg_type Msg_text
8246
test.t1 analyze status OK
8247
CHECK TABLE t1 EXTENDED;
8248
Table Op Msg_type Msg_text
8249
test.t1 check status OK
8250
CHECKSUM TABLE t1 EXTENDED;
8252
test.t1 <some_value>
8254
Table Op Msg_type Msg_text
8255
test.t1 optimize status OK
8256
# check layout success: 1
8257
REPAIR TABLE t1 EXTENDED;
8258
Table Op Msg_type Msg_text
8259
test.t1 repair status OK
8260
# check layout success: 1
8263
# check TRUNCATE success: 1
8264
# check layout success: 1
8265
# End usability test (inc/partition_check.inc)
8272
f_charbig VARCHAR(1000)
8273
, UNIQUE INDEX uidx1 (f_int2,f_int1)
8275
PARTITION BY KEY(f_int1,f_int2) PARTITIONS 5;
8276
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
8277
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
8278
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
8279
ALTER TABLE t1 DROP INDEX uidx1;
8280
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
8281
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
8282
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
8283
# Start usability test (inc/partition_check.inc)
8285
SHOW CREATE TABLE t1;
8287
t1 CREATE TABLE `t1` (
8288
`f_int1` int(11) DEFAULT NULL,
8289
`f_int2` int(11) DEFAULT NULL,
8290
`f_char1` char(20) DEFAULT NULL,
8291
`f_char2` char(20) DEFAULT NULL,
8292
`f_charbig` varchar(1000) DEFAULT NULL
8293
) ENGINE=MyISAM DEFAULT CHARSET=latin1
8294
/*!50100 PARTITION BY KEY (f_int1,f_int2)
8311
# check prerequisites-1 success: 1
8312
# check COUNT(*) success: 1
8313
# check MIN/MAX(f_int1) success: 1
8314
# check MIN/MAX(f_int2) success: 1
8315
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8316
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
8317
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
8318
WHERE f_int1 IN (2,3);
8319
# check prerequisites-3 success: 1
8320
DELETE FROM t1 WHERE f_charbig = 'delete me';
8321
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
8322
# check read via f_int1 success: 1
8323
# check read via f_int2 success: 1
8325
# check multiple-1 success: 1
8326
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
8328
# check multiple-2 success: 1
8329
INSERT INTO t1 SELECT * FROM t0_template
8330
WHERE MOD(f_int1,3) = 0;
8332
# check multiple-3 success: 1
8333
UPDATE t1 SET f_int1 = f_int1 + @max_row
8334
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
8335
AND @max_row_div2 + @max_row_div4;
8337
# check multiple-4 success: 1
8339
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
8340
AND @max_row_div2 + @max_row_div4 + @max_row;
8342
# check multiple-5 success: 1
8343
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
8345
SET f_int1 = @cur_value , f_int2 = @cur_value,
8346
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
8347
f_charbig = '#SINGLE#';
8349
# check single-1 success: 1
8350
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
8352
SET f_int1 = @cur_value , f_int2 = @cur_value,
8353
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
8354
f_charbig = '#SINGLE#';
8356
# check single-2 success: 1
8357
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
8358
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
8359
UPDATE t1 SET f_int1 = @cur_value2
8360
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
8362
# check single-3 success: 1
8363
SET @cur_value1= -1;
8364
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
8365
UPDATE t1 SET f_int1 = @cur_value1
8366
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
8368
# check single-4 success: 1
8369
SELECT MAX(f_int1) INTO @cur_value FROM t1;
8370
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
8372
# check single-5 success: 1
8373
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
8375
# check single-6 success: 1
8376
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
8378
# check single-7 success: 1
8379
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
8380
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
8381
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
8382
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
8383
f_charbig = '#NULL#';
8385
SET f_int1 = NULL , f_int2 = -@max_row,
8386
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
8387
f_charbig = '#NULL#';
8388
# check null success: 1
8390
# check null-1 success: 1
8391
UPDATE t1 SET f_int1 = -@max_row
8392
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
8393
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
8395
# check null-2 success: 1
8396
UPDATE t1 SET f_int1 = NULL
8397
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
8398
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
8400
# check null-3 success: 1
8402
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
8403
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
8405
# check null-4 success: 1
8407
WHERE f_int1 = 0 AND f_int2 = 0
8408
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
8409
AND f_charbig = '#NULL#';
8411
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8412
SELECT f_int1, f_int1, '', '', 'was inserted'
8413
FROM t0_template source_tab
8414
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
8416
# check transactions-1 success: 1
8419
# check transactions-2 success: 1
8422
# check transactions-3 success: 1
8423
DELETE FROM t1 WHERE f_charbig = 'was inserted';
8427
# check transactions-4 success: 1
8428
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8429
SELECT f_int1, f_int1, '', '', 'was inserted'
8430
FROM t0_template source_tab
8431
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
8433
# check transactions-5 success: 1
8436
Warning 1196 Some non-transactional changed tables couldn't be rolled back
8438
# check transactions-6 success: 1
8439
# INFO: Storage engine used for t1 seems to be not transactional.
8442
# check transactions-7 success: 1
8443
DELETE FROM t1 WHERE f_charbig = 'was inserted';
8445
SET @@session.sql_mode = 'traditional';
8446
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
8447
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8448
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
8449
'', '', 'was inserted' FROM t0_template
8450
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
8451
ERROR 22012: Division by 0
8454
# check transactions-8 success: 1
8455
# INFO: Storage engine used for t1 seems to be unable to revert
8456
# changes made by the failing statement.
8457
SET @@session.sql_mode = '';
8459
DELETE FROM t1 WHERE f_charbig = 'was inserted';
8461
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
8463
# check special-1 success: 1
8464
UPDATE t1 SET f_charbig = '';
8466
# check special-2 success: 1
8467
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
8468
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
8469
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
8470
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8471
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8472
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8473
'just inserted' FROM t0_template
8474
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8475
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
8477
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8478
f_charbig = 'updated by trigger'
8479
WHERE f_int1 = new.f_int1;
8481
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8482
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
8483
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8485
# check trigger-1 success: 1
8487
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8488
f_int2 = CAST(f_char1 AS SIGNED INT),
8489
f_charbig = 'just inserted'
8490
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8492
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8493
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8494
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8495
'just inserted' FROM t0_template
8496
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8497
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
8499
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8500
f_charbig = 'updated by trigger'
8501
WHERE f_int1 = new.f_int1;
8503
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8504
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
8505
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8507
# check trigger-2 success: 1
8509
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8510
f_int2 = CAST(f_char1 AS SIGNED INT),
8511
f_charbig = 'just inserted'
8512
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8514
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8515
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8516
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8517
'just inserted' FROM t0_template
8518
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8519
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
8521
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8522
f_charbig = 'updated by trigger'
8523
WHERE f_int1 = new.f_int1;
8525
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
8526
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8528
# check trigger-3 success: 1
8530
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8531
f_int2 = CAST(f_char1 AS SIGNED INT),
8532
f_charbig = 'just inserted'
8533
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8535
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8536
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8537
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8538
'just inserted' FROM t0_template
8539
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8540
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
8542
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8543
f_charbig = 'updated by trigger'
8544
WHERE f_int1 = - old.f_int1;
8546
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
8547
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8549
# check trigger-4 success: 1
8551
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8552
f_int2 = CAST(f_char1 AS SIGNED INT),
8553
f_charbig = 'just inserted'
8554
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8556
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8557
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8558
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8559
'just inserted' FROM t0_template
8560
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8561
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
8563
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8564
f_charbig = 'updated by trigger'
8565
WHERE f_int1 = new.f_int1;
8567
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
8568
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8570
# check trigger-5 success: 1
8572
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8573
f_int2 = CAST(f_char1 AS SIGNED INT),
8574
f_charbig = 'just inserted'
8575
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8577
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8578
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8579
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8580
'just inserted' FROM t0_template
8581
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8582
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
8584
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8585
f_charbig = 'updated by trigger'
8586
WHERE f_int1 = - old.f_int1;
8588
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
8589
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8591
# check trigger-6 success: 1
8593
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8594
f_int2 = CAST(f_char1 AS SIGNED INT),
8595
f_charbig = 'just inserted'
8596
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8598
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8599
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8600
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8601
'just inserted' FROM t0_template
8602
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8603
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
8605
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8606
f_charbig = 'updated by trigger'
8607
WHERE f_int1 = - old.f_int1;
8610
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8612
# check trigger-7 success: 1
8614
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8615
f_int2 = CAST(f_char1 AS SIGNED INT),
8616
f_charbig = 'just inserted'
8617
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8619
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8620
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8621
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8622
'just inserted' FROM t0_template
8623
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8624
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
8626
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8627
f_charbig = 'updated by trigger'
8628
WHERE f_int1 = - old.f_int1;
8631
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8633
# check trigger-8 success: 1
8635
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8636
f_int2 = CAST(f_char1 AS SIGNED INT),
8637
f_charbig = 'just inserted'
8638
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8640
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8642
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8643
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
8645
SET new.f_int1 = old.f_int1 + @max_row,
8646
new.f_int2 = old.f_int2 - @max_row,
8647
new.f_charbig = '####updated per update trigger####';
8650
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
8651
f_charbig = '####updated per update statement itself####';
8653
# check trigger-9 success: 1
8655
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8656
f_int2 = CAST(f_char1 AS SIGNED INT),
8657
f_charbig = CONCAT('===',f_char1,'===');
8658
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
8660
SET new.f_int1 = new.f_int1 + @max_row,
8661
new.f_int2 = new.f_int2 - @max_row,
8662
new.f_charbig = '####updated per update trigger####';
8665
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
8666
f_charbig = '####updated per update statement itself####';
8668
# check trigger-10 success: 1
8670
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8671
f_int2 = CAST(f_char1 AS SIGNED INT),
8672
f_charbig = CONCAT('===',f_char1,'===');
8673
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
8675
SET new.f_int1 = @my_max1 + @counter,
8676
new.f_int2 = @my_min2 - @counter,
8677
new.f_charbig = '####updated per insert trigger####';
8678
SET @counter = @counter + 1;
8681
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
8682
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8683
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
8684
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
8685
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
8689
# check trigger-11 success: 1
8691
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
8692
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
8693
AND f_charbig = '####updated per insert trigger####';
8694
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
8696
SET new.f_int1 = @my_max1 + @counter,
8697
new.f_int2 = @my_min2 - @counter,
8698
new.f_charbig = '####updated per insert trigger####';
8699
SET @counter = @counter + 1;
8702
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
8703
INSERT INTO t1 (f_char1, f_char2, f_charbig)
8704
SELECT CAST(f_int1 AS CHAR),
8705
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
8706
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
8710
# check trigger-12 success: 1
8712
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
8713
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
8714
AND f_charbig = '####updated per insert trigger####';
8716
Table Op Msg_type Msg_text
8717
test.t1 analyze status OK
8718
CHECK TABLE t1 EXTENDED;
8719
Table Op Msg_type Msg_text
8720
test.t1 check status OK
8721
CHECKSUM TABLE t1 EXTENDED;
8723
test.t1 <some_value>
8725
Table Op Msg_type Msg_text
8726
test.t1 optimize status OK
8727
# check layout success: 1
8728
REPAIR TABLE t1 EXTENDED;
8729
Table Op Msg_type Msg_text
8730
test.t1 repair status OK
8731
# check layout success: 1
8734
# check TRUNCATE success: 1
8735
# check layout success: 1
8736
# End usability test (inc/partition_check.inc)
8743
f_charbig VARCHAR(1000)
8744
, UNIQUE INDEX uidx1 (f_int2,f_int1)
8746
PARTITION BY LIST(MOD(f_int1 + f_int2,4))
8747
(PARTITION part_3 VALUES IN (-3),
8748
PARTITION part_2 VALUES IN (-2),
8749
PARTITION part_1 VALUES IN (-1),
8750
PARTITION part_N VALUES IN (NULL),
8751
PARTITION part0 VALUES IN (0),
8752
PARTITION part1 VALUES IN (1),
8753
PARTITION part2 VALUES IN (2),
8754
PARTITION part3 VALUES IN (3));
8755
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
8756
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
8757
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
8758
ALTER TABLE t1 DROP INDEX uidx1;
8759
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
8760
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
8761
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
8762
# Start usability test (inc/partition_check.inc)
8764
SHOW CREATE TABLE t1;
8766
t1 CREATE TABLE `t1` (
8767
`f_int1` int(11) DEFAULT NULL,
8768
`f_int2` int(11) DEFAULT NULL,
8769
`f_char1` char(20) DEFAULT NULL,
8770
`f_char2` char(20) DEFAULT NULL,
8771
`f_charbig` varchar(1000) DEFAULT NULL
8772
) ENGINE=MyISAM DEFAULT CHARSET=latin1
8773
/*!50100 PARTITION BY LIST (MOD(f_int1 + f_int2,4))
8774
(PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM,
8775
PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM,
8776
PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM,
8777
PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM,
8778
PARTITION part0 VALUES IN (0) ENGINE = MyISAM,
8779
PARTITION part1 VALUES IN (1) ENGINE = MyISAM,
8780
PARTITION part2 VALUES IN (2) ENGINE = MyISAM,
8781
PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */
8803
# check prerequisites-1 success: 1
8804
# check COUNT(*) success: 1
8805
# check MIN/MAX(f_int1) success: 1
8806
# check MIN/MAX(f_int2) success: 1
8807
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8808
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
8809
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
8810
WHERE f_int1 IN (2,3);
8811
# check prerequisites-3 success: 1
8812
DELETE FROM t1 WHERE f_charbig = 'delete me';
8813
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
8814
# check read via f_int1 success: 1
8815
# check read via f_int2 success: 1
8817
# check multiple-1 success: 1
8818
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
8820
# check multiple-2 success: 1
8821
INSERT INTO t1 SELECT * FROM t0_template
8822
WHERE MOD(f_int1,3) = 0;
8824
# check multiple-3 success: 1
8825
UPDATE t1 SET f_int1 = f_int1 + @max_row
8826
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
8827
AND @max_row_div2 + @max_row_div4;
8829
# check multiple-4 success: 1
8831
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
8832
AND @max_row_div2 + @max_row_div4 + @max_row;
8834
# check multiple-5 success: 1
8835
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
8837
SET f_int1 = @cur_value , f_int2 = @cur_value,
8838
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
8839
f_charbig = '#SINGLE#';
8841
# check single-1 success: 1
8842
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
8844
SET f_int1 = @cur_value , f_int2 = @cur_value,
8845
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
8846
f_charbig = '#SINGLE#';
8848
# check single-2 success: 1
8849
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
8850
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
8851
UPDATE t1 SET f_int1 = @cur_value2
8852
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
8854
# check single-3 success: 1
8855
SET @cur_value1= -1;
8856
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
8857
UPDATE t1 SET f_int1 = @cur_value1
8858
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
8860
# check single-4 success: 1
8861
SELECT MAX(f_int1) INTO @cur_value FROM t1;
8862
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
8864
# check single-5 success: 1
8865
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
8867
# check single-6 success: 1
8868
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
8870
# check single-7 success: 1
8871
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
8872
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
8873
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
8874
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
8875
f_charbig = '#NULL#';
8877
SET f_int1 = NULL , f_int2 = -@max_row,
8878
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
8879
f_charbig = '#NULL#';
8880
# check null success: 1
8882
# check null-1 success: 1
8883
UPDATE t1 SET f_int1 = -@max_row
8884
WHERE f_int1 IS NULL 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-2 success: 1
8888
UPDATE t1 SET f_int1 = NULL
8889
WHERE f_int1 = -@max_row 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-3 success: 1
8894
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
8895
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
8897
# check null-4 success: 1
8899
WHERE f_int1 = 0 AND f_int2 = 0
8900
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
8901
AND f_charbig = '#NULL#';
8903
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8904
SELECT f_int1, f_int1, '', '', 'was inserted'
8905
FROM t0_template source_tab
8906
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
8908
# check transactions-1 success: 1
8911
# check transactions-2 success: 1
8914
# check transactions-3 success: 1
8915
DELETE FROM t1 WHERE f_charbig = 'was inserted';
8919
# check transactions-4 success: 1
8920
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8921
SELECT f_int1, f_int1, '', '', 'was inserted'
8922
FROM t0_template source_tab
8923
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
8925
# check transactions-5 success: 1
8928
Warning 1196 Some non-transactional changed tables couldn't be rolled back
8930
# check transactions-6 success: 1
8931
# INFO: Storage engine used for t1 seems to be not transactional.
8934
# check transactions-7 success: 1
8935
DELETE FROM t1 WHERE f_charbig = 'was inserted';
8937
SET @@session.sql_mode = 'traditional';
8938
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
8939
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8940
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
8941
'', '', 'was inserted' FROM t0_template
8942
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
8943
ERROR 22012: Division by 0
8946
# check transactions-8 success: 1
8947
# INFO: Storage engine used for t1 seems to be unable to revert
8948
# changes made by the failing statement.
8949
SET @@session.sql_mode = '';
8951
DELETE FROM t1 WHERE f_charbig = 'was inserted';
8953
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
8955
# check special-1 success: 1
8956
UPDATE t1 SET f_charbig = '';
8958
# check special-2 success: 1
8959
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
8960
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
8961
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
8962
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8963
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8964
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8965
'just inserted' FROM t0_template
8966
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8967
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
8969
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8970
f_charbig = 'updated by trigger'
8971
WHERE f_int1 = new.f_int1;
8973
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8974
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
8975
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8977
# check trigger-1 success: 1
8979
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8980
f_int2 = CAST(f_char1 AS SIGNED INT),
8981
f_charbig = 'just inserted'
8982
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8984
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8985
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8986
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8987
'just inserted' FROM t0_template
8988
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8989
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
8991
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8992
f_charbig = 'updated by trigger'
8993
WHERE f_int1 = new.f_int1;
8995
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8996
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
8997
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8999
# check trigger-2 success: 1
9001
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9002
f_int2 = CAST(f_char1 AS SIGNED INT),
9003
f_charbig = 'just inserted'
9004
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9006
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9007
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9008
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9009
'just inserted' FROM t0_template
9010
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9011
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
9013
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9014
f_charbig = 'updated by trigger'
9015
WHERE f_int1 = new.f_int1;
9017
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
9018
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9020
# check trigger-3 success: 1
9022
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9023
f_int2 = CAST(f_char1 AS SIGNED INT),
9024
f_charbig = 'just inserted'
9025
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9027
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9028
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9029
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9030
'just inserted' FROM t0_template
9031
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9032
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
9034
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9035
f_charbig = 'updated by trigger'
9036
WHERE f_int1 = - old.f_int1;
9038
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
9039
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9041
# check trigger-4 success: 1
9043
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9044
f_int2 = CAST(f_char1 AS SIGNED INT),
9045
f_charbig = 'just inserted'
9046
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9048
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9049
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9050
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9051
'just inserted' FROM t0_template
9052
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9053
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
9055
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9056
f_charbig = 'updated by trigger'
9057
WHERE f_int1 = new.f_int1;
9059
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
9060
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9062
# check trigger-5 success: 1
9064
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9065
f_int2 = CAST(f_char1 AS SIGNED INT),
9066
f_charbig = 'just inserted'
9067
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9069
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9070
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9071
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9072
'just inserted' FROM t0_template
9073
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9074
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
9076
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9077
f_charbig = 'updated by trigger'
9078
WHERE f_int1 = - old.f_int1;
9080
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
9081
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9083
# check trigger-6 success: 1
9085
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9086
f_int2 = CAST(f_char1 AS SIGNED INT),
9087
f_charbig = 'just inserted'
9088
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9090
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9091
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9092
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9093
'just inserted' FROM t0_template
9094
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9095
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
9097
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9098
f_charbig = 'updated by trigger'
9099
WHERE f_int1 = - old.f_int1;
9102
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9104
# check trigger-7 success: 1
9106
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9107
f_int2 = CAST(f_char1 AS SIGNED INT),
9108
f_charbig = 'just inserted'
9109
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9111
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9112
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9113
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9114
'just inserted' FROM t0_template
9115
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9116
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
9118
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9119
f_charbig = 'updated by trigger'
9120
WHERE f_int1 = - old.f_int1;
9123
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9125
# check trigger-8 success: 1
9127
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9128
f_int2 = CAST(f_char1 AS SIGNED INT),
9129
f_charbig = 'just inserted'
9130
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9132
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9134
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9135
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
9137
SET new.f_int1 = old.f_int1 + @max_row,
9138
new.f_int2 = old.f_int2 - @max_row,
9139
new.f_charbig = '####updated per update trigger####';
9142
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
9143
f_charbig = '####updated per update statement itself####';
9145
# check trigger-9 success: 1
9147
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9148
f_int2 = CAST(f_char1 AS SIGNED INT),
9149
f_charbig = CONCAT('===',f_char1,'===');
9150
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
9152
SET new.f_int1 = new.f_int1 + @max_row,
9153
new.f_int2 = new.f_int2 - @max_row,
9154
new.f_charbig = '####updated per update trigger####';
9157
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
9158
f_charbig = '####updated per update statement itself####';
9160
# check trigger-10 success: 1
9162
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9163
f_int2 = CAST(f_char1 AS SIGNED INT),
9164
f_charbig = CONCAT('===',f_char1,'===');
9165
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
9167
SET new.f_int1 = @my_max1 + @counter,
9168
new.f_int2 = @my_min2 - @counter,
9169
new.f_charbig = '####updated per insert trigger####';
9170
SET @counter = @counter + 1;
9173
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
9174
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9175
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
9176
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
9177
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
9181
# check trigger-11 success: 1
9183
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
9184
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
9185
AND f_charbig = '####updated per insert trigger####';
9186
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
9188
SET new.f_int1 = @my_max1 + @counter,
9189
new.f_int2 = @my_min2 - @counter,
9190
new.f_charbig = '####updated per insert trigger####';
9191
SET @counter = @counter + 1;
9194
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
9195
INSERT INTO t1 (f_char1, f_char2, f_charbig)
9196
SELECT CAST(f_int1 AS CHAR),
9197
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
9198
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
9202
# check trigger-12 success: 1
9204
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
9205
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
9206
AND f_charbig = '####updated per insert trigger####';
9208
Table Op Msg_type Msg_text
9209
test.t1 analyze status OK
9210
CHECK TABLE t1 EXTENDED;
9211
Table Op Msg_type Msg_text
9212
test.t1 check status OK
9213
CHECKSUM TABLE t1 EXTENDED;
9215
test.t1 <some_value>
9217
Table Op Msg_type Msg_text
9218
test.t1 optimize status OK
9219
# check layout success: 1
9220
REPAIR TABLE t1 EXTENDED;
9221
Table Op Msg_type Msg_text
9222
test.t1 repair status OK
9223
# check layout success: 1
9226
# check TRUNCATE success: 1
9227
# check layout success: 1
9228
# End usability test (inc/partition_check.inc)
9235
f_charbig VARCHAR(1000)
9236
, UNIQUE INDEX uidx1 (f_int2,f_int1)
9238
PARTITION BY RANGE((f_int1 + f_int2) DIV 2)
9239
(PARTITION parta VALUES LESS THAN (0),
9240
PARTITION partb VALUES LESS THAN (5),
9241
PARTITION partc VALUES LESS THAN (10),
9242
PARTITION partd VALUES LESS THAN (10 + 5),
9243
PARTITION parte VALUES LESS THAN (20),
9244
PARTITION partf VALUES LESS THAN (2147483646));
9245
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
9246
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
9247
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
9248
ALTER TABLE t1 DROP INDEX uidx1;
9249
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
9250
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
9251
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
9252
# Start usability test (inc/partition_check.inc)
9254
SHOW CREATE TABLE t1;
9256
t1 CREATE TABLE `t1` (
9257
`f_int1` int(11) DEFAULT NULL,
9258
`f_int2` int(11) DEFAULT NULL,
9259
`f_char1` char(20) DEFAULT NULL,
9260
`f_char2` char(20) DEFAULT NULL,
9261
`f_charbig` varchar(1000) DEFAULT NULL
9262
) ENGINE=MyISAM DEFAULT CHARSET=latin1
9263
/*!50100 PARTITION BY RANGE ((f_int1 + f_int2) DIV 2)
9264
(PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM,
9265
PARTITION partb VALUES LESS THAN (5) ENGINE = MyISAM,
9266
PARTITION partc VALUES LESS THAN (10) ENGINE = MyISAM,
9267
PARTITION partd VALUES LESS THAN (15) ENGINE = MyISAM,
9268
PARTITION parte VALUES LESS THAN (20) ENGINE = MyISAM,
9269
PARTITION partf VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
9287
# check prerequisites-1 success: 1
9288
# check COUNT(*) success: 1
9289
# check MIN/MAX(f_int1) success: 1
9290
# check MIN/MAX(f_int2) success: 1
9291
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9292
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
9293
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
9294
WHERE f_int1 IN (2,3);
9295
# check prerequisites-3 success: 1
9296
DELETE FROM t1 WHERE f_charbig = 'delete me';
9297
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
9298
# check read via f_int1 success: 1
9299
# check read via f_int2 success: 1
9301
# check multiple-1 success: 1
9302
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
9304
# check multiple-2 success: 1
9305
INSERT INTO t1 SELECT * FROM t0_template
9306
WHERE MOD(f_int1,3) = 0;
9308
# check multiple-3 success: 1
9309
UPDATE t1 SET f_int1 = f_int1 + @max_row
9310
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
9311
AND @max_row_div2 + @max_row_div4;
9313
# check multiple-4 success: 1
9315
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
9316
AND @max_row_div2 + @max_row_div4 + @max_row;
9318
# check multiple-5 success: 1
9319
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
9321
SET f_int1 = @cur_value , f_int2 = @cur_value,
9322
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
9323
f_charbig = '#SINGLE#';
9325
# check single-1 success: 1
9326
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
9328
SET f_int1 = @cur_value , f_int2 = @cur_value,
9329
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
9330
f_charbig = '#SINGLE#';
9332
# check single-2 success: 1
9333
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
9334
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
9335
UPDATE t1 SET f_int1 = @cur_value2
9336
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
9338
# check single-3 success: 1
9339
SET @cur_value1= -1;
9340
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
9341
UPDATE t1 SET f_int1 = @cur_value1
9342
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
9344
# check single-4 success: 1
9345
SELECT MAX(f_int1) INTO @cur_value FROM t1;
9346
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
9348
# check single-5 success: 1
9349
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
9351
# check single-6 success: 1
9352
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
9353
ERROR HY000: Table has no partition for value 2147483647
9354
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
9355
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
9356
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
9357
f_charbig = '#NULL#';
9359
SET f_int1 = NULL , f_int2 = -@max_row,
9360
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
9361
f_charbig = '#NULL#';
9362
# check null success: 1
9364
# check null-1 success: 1
9365
UPDATE t1 SET f_int1 = -@max_row
9366
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
9367
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
9369
# check null-2 success: 1
9370
UPDATE t1 SET f_int1 = NULL
9371
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
9372
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
9374
# check null-3 success: 1
9376
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
9377
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
9379
# check null-4 success: 1
9381
WHERE f_int1 = 0 AND f_int2 = 0
9382
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
9383
AND f_charbig = '#NULL#';
9385
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9386
SELECT f_int1, f_int1, '', '', 'was inserted'
9387
FROM t0_template source_tab
9388
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
9390
# check transactions-1 success: 1
9393
# check transactions-2 success: 1
9396
# check transactions-3 success: 1
9397
DELETE FROM t1 WHERE f_charbig = 'was inserted';
9401
# check transactions-4 success: 1
9402
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9403
SELECT f_int1, f_int1, '', '', 'was inserted'
9404
FROM t0_template source_tab
9405
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
9407
# check transactions-5 success: 1
9410
Warning 1196 Some non-transactional changed tables couldn't be rolled back
9412
# check transactions-6 success: 1
9413
# INFO: Storage engine used for t1 seems to be not transactional.
9416
# check transactions-7 success: 1
9417
DELETE FROM t1 WHERE f_charbig = 'was inserted';
9419
SET @@session.sql_mode = 'traditional';
9420
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
9421
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9422
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
9423
'', '', 'was inserted' FROM t0_template
9424
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
9425
ERROR 22012: Division by 0
9428
# check transactions-8 success: 1
9429
# INFO: Storage engine used for t1 seems to be unable to revert
9430
# changes made by the failing statement.
9431
SET @@session.sql_mode = '';
9433
DELETE FROM t1 WHERE f_charbig = 'was inserted';
9435
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
9437
# check special-1 success: 1
9438
UPDATE t1 SET f_charbig = '';
9440
# check special-2 success: 1
9441
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
9442
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
9443
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
9444
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9445
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9446
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9447
'just inserted' FROM t0_template
9448
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9449
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
9451
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9452
f_charbig = 'updated by trigger'
9453
WHERE f_int1 = new.f_int1;
9455
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9456
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
9457
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9459
# check trigger-1 success: 1
9461
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9462
f_int2 = CAST(f_char1 AS SIGNED INT),
9463
f_charbig = 'just inserted'
9464
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9466
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9467
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9468
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9469
'just inserted' FROM t0_template
9470
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9471
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
9473
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9474
f_charbig = 'updated by trigger'
9475
WHERE f_int1 = new.f_int1;
9477
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9478
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
9479
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9481
# check trigger-2 success: 1
9483
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9484
f_int2 = CAST(f_char1 AS SIGNED INT),
9485
f_charbig = 'just inserted'
9486
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9488
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9489
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9490
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9491
'just inserted' FROM t0_template
9492
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9493
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
9495
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9496
f_charbig = 'updated by trigger'
9497
WHERE f_int1 = new.f_int1;
9499
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
9500
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9502
# check trigger-3 success: 1
9504
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9505
f_int2 = CAST(f_char1 AS SIGNED INT),
9506
f_charbig = 'just inserted'
9507
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9509
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9510
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9511
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9512
'just inserted' FROM t0_template
9513
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9514
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
9516
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9517
f_charbig = 'updated by trigger'
9518
WHERE f_int1 = - old.f_int1;
9520
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
9521
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9523
# check trigger-4 success: 1
9525
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9526
f_int2 = CAST(f_char1 AS SIGNED INT),
9527
f_charbig = 'just inserted'
9528
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9530
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9531
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9532
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9533
'just inserted' FROM t0_template
9534
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9535
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
9537
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9538
f_charbig = 'updated by trigger'
9539
WHERE f_int1 = new.f_int1;
9541
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
9542
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9544
# check trigger-5 success: 1
9546
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9547
f_int2 = CAST(f_char1 AS SIGNED INT),
9548
f_charbig = 'just inserted'
9549
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9551
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9552
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9553
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9554
'just inserted' FROM t0_template
9555
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9556
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
9558
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9559
f_charbig = 'updated by trigger'
9560
WHERE f_int1 = - old.f_int1;
9562
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
9563
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9565
# check trigger-6 success: 1
9567
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9568
f_int2 = CAST(f_char1 AS SIGNED INT),
9569
f_charbig = 'just inserted'
9570
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9572
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9573
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9574
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9575
'just inserted' FROM t0_template
9576
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9577
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
9579
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9580
f_charbig = 'updated by trigger'
9581
WHERE f_int1 = - old.f_int1;
9584
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9586
# check trigger-7 success: 1
9588
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9589
f_int2 = CAST(f_char1 AS SIGNED INT),
9590
f_charbig = 'just inserted'
9591
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9593
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9594
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9595
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9596
'just inserted' FROM t0_template
9597
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9598
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
9600
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9601
f_charbig = 'updated by trigger'
9602
WHERE f_int1 = - old.f_int1;
9605
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9607
# check trigger-8 success: 1
9609
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9610
f_int2 = CAST(f_char1 AS SIGNED INT),
9611
f_charbig = 'just inserted'
9612
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9614
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9616
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9617
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
9619
SET new.f_int1 = old.f_int1 + @max_row,
9620
new.f_int2 = old.f_int2 - @max_row,
9621
new.f_charbig = '####updated per update trigger####';
9624
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
9625
f_charbig = '####updated per update statement itself####';
9627
# check trigger-9 success: 1
9629
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9630
f_int2 = CAST(f_char1 AS SIGNED INT),
9631
f_charbig = CONCAT('===',f_char1,'===');
9632
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
9634
SET new.f_int1 = new.f_int1 + @max_row,
9635
new.f_int2 = new.f_int2 - @max_row,
9636
new.f_charbig = '####updated per update trigger####';
9639
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
9640
f_charbig = '####updated per update statement itself####';
9642
# check trigger-10 success: 1
9644
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9645
f_int2 = CAST(f_char1 AS SIGNED INT),
9646
f_charbig = CONCAT('===',f_char1,'===');
9647
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
9649
SET new.f_int1 = @my_max1 + @counter,
9650
new.f_int2 = @my_min2 - @counter,
9651
new.f_charbig = '####updated per insert trigger####';
9652
SET @counter = @counter + 1;
9655
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
9656
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9657
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
9658
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
9659
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
9663
# check trigger-11 success: 1
9665
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
9666
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
9667
AND f_charbig = '####updated per insert trigger####';
9668
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
9670
SET new.f_int1 = @my_max1 + @counter,
9671
new.f_int2 = @my_min2 - @counter,
9672
new.f_charbig = '####updated per insert trigger####';
9673
SET @counter = @counter + 1;
9676
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
9677
INSERT INTO t1 (f_char1, f_char2, f_charbig)
9678
SELECT CAST(f_int1 AS CHAR),
9679
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
9680
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
9684
# check trigger-12 success: 1
9686
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
9687
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
9688
AND f_charbig = '####updated per insert trigger####';
9690
Table Op Msg_type Msg_text
9691
test.t1 analyze status OK
9692
CHECK TABLE t1 EXTENDED;
9693
Table Op Msg_type Msg_text
9694
test.t1 check status OK
9695
CHECKSUM TABLE t1 EXTENDED;
9697
test.t1 <some_value>
9699
Table Op Msg_type Msg_text
9700
test.t1 optimize status OK
9701
# check layout success: 1
9702
REPAIR TABLE t1 EXTENDED;
9703
Table Op Msg_type Msg_text
9704
test.t1 repair status OK
9705
# check layout success: 1
9708
# check TRUNCATE success: 1
9709
# check layout success: 1
9710
# End usability test (inc/partition_check.inc)
9717
f_charbig VARCHAR(1000)
9718
, UNIQUE INDEX uidx1 (f_int2,f_int1)
9720
PARTITION BY RANGE(f_int1) SUBPARTITION BY HASH(f_int2) SUBPARTITIONS 2
9721
(PARTITION parta VALUES LESS THAN (0),
9722
PARTITION partb VALUES LESS THAN (5),
9723
PARTITION partc VALUES LESS THAN (10),
9724
PARTITION partd VALUES LESS THAN (2147483646));
9725
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
9726
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
9727
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
9728
ALTER TABLE t1 DROP INDEX uidx1;
9729
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
9730
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
9731
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
9732
# Start usability test (inc/partition_check.inc)
9734
SHOW CREATE TABLE t1;
9736
t1 CREATE TABLE `t1` (
9737
`f_int1` int(11) DEFAULT NULL,
9738
`f_int2` int(11) DEFAULT NULL,
9739
`f_char1` char(20) DEFAULT NULL,
9740
`f_char2` char(20) DEFAULT NULL,
9741
`f_charbig` varchar(1000) DEFAULT NULL
9742
) ENGINE=MyISAM DEFAULT CHARSET=latin1
9743
/*!50100 PARTITION BY RANGE (f_int1)
9744
SUBPARTITION BY HASH (f_int2)
9746
(PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM,
9747
PARTITION partb VALUES LESS THAN (5) ENGINE = MyISAM,
9748
PARTITION partc VALUES LESS THAN (10) ENGINE = MyISAM,
9749
PARTITION partd VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
9752
t1#P#parta#SP#partasp0.MYD
9753
t1#P#parta#SP#partasp0.MYI
9754
t1#P#parta#SP#partasp1.MYD
9755
t1#P#parta#SP#partasp1.MYI
9756
t1#P#partb#SP#partbsp0.MYD
9757
t1#P#partb#SP#partbsp0.MYI
9758
t1#P#partb#SP#partbsp1.MYD
9759
t1#P#partb#SP#partbsp1.MYI
9760
t1#P#partc#SP#partcsp0.MYD
9761
t1#P#partc#SP#partcsp0.MYI
9762
t1#P#partc#SP#partcsp1.MYD
9763
t1#P#partc#SP#partcsp1.MYI
9764
t1#P#partd#SP#partdsp0.MYD
9765
t1#P#partd#SP#partdsp0.MYI
9766
t1#P#partd#SP#partdsp1.MYD
9767
t1#P#partd#SP#partdsp1.MYI
9771
# check prerequisites-1 success: 1
9772
# check COUNT(*) success: 1
9773
# check MIN/MAX(f_int1) success: 1
9774
# check MIN/MAX(f_int2) success: 1
9775
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9776
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
9777
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
9778
WHERE f_int1 IN (2,3);
9779
# check prerequisites-3 success: 1
9780
DELETE FROM t1 WHERE f_charbig = 'delete me';
9781
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
9782
# check read via f_int1 success: 1
9783
# check read via f_int2 success: 1
9785
# check multiple-1 success: 1
9786
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
9788
# check multiple-2 success: 1
9789
INSERT INTO t1 SELECT * FROM t0_template
9790
WHERE MOD(f_int1,3) = 0;
9792
# check multiple-3 success: 1
9793
UPDATE t1 SET f_int1 = f_int1 + @max_row
9794
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
9795
AND @max_row_div2 + @max_row_div4;
9797
# check multiple-4 success: 1
9799
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
9800
AND @max_row_div2 + @max_row_div4 + @max_row;
9802
# check multiple-5 success: 1
9803
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
9805
SET f_int1 = @cur_value , f_int2 = @cur_value,
9806
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
9807
f_charbig = '#SINGLE#';
9809
# check single-1 success: 1
9810
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
9812
SET f_int1 = @cur_value , f_int2 = @cur_value,
9813
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
9814
f_charbig = '#SINGLE#';
9816
# check single-2 success: 1
9817
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
9818
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
9819
UPDATE t1 SET f_int1 = @cur_value2
9820
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
9822
# check single-3 success: 1
9823
SET @cur_value1= -1;
9824
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
9825
UPDATE t1 SET f_int1 = @cur_value1
9826
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
9828
# check single-4 success: 1
9829
SELECT MAX(f_int1) INTO @cur_value FROM t1;
9830
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
9832
# check single-5 success: 1
9833
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
9835
# check single-6 success: 1
9836
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
9837
ERROR HY000: Table has no partition for value 2147483647
9838
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
9839
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
9840
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
9841
f_charbig = '#NULL#';
9843
SET f_int1 = NULL , f_int2 = -@max_row,
9844
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
9845
f_charbig = '#NULL#';
9846
# check null success: 1
9848
# check null-1 success: 1
9849
UPDATE t1 SET f_int1 = -@max_row
9850
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
9851
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
9853
# check null-2 success: 1
9854
UPDATE t1 SET f_int1 = NULL
9855
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
9856
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
9858
# check null-3 success: 1
9860
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
9861
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
9863
# check null-4 success: 1
9865
WHERE f_int1 = 0 AND f_int2 = 0
9866
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
9867
AND f_charbig = '#NULL#';
9869
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9870
SELECT f_int1, f_int1, '', '', 'was inserted'
9871
FROM t0_template source_tab
9872
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
9874
# check transactions-1 success: 1
9877
# check transactions-2 success: 1
9880
# check transactions-3 success: 1
9881
DELETE FROM t1 WHERE f_charbig = 'was inserted';
9885
# check transactions-4 success: 1
9886
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9887
SELECT f_int1, f_int1, '', '', 'was inserted'
9888
FROM t0_template source_tab
9889
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
9891
# check transactions-5 success: 1
9894
Warning 1196 Some non-transactional changed tables couldn't be rolled back
9896
# check transactions-6 success: 1
9897
# INFO: Storage engine used for t1 seems to be not transactional.
9900
# check transactions-7 success: 1
9901
DELETE FROM t1 WHERE f_charbig = 'was inserted';
9903
SET @@session.sql_mode = 'traditional';
9904
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
9905
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9906
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
9907
'', '', 'was inserted' FROM t0_template
9908
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
9909
ERROR 22012: Division by 0
9912
# check transactions-8 success: 1
9913
# INFO: Storage engine used for t1 seems to be unable to revert
9914
# changes made by the failing statement.
9915
SET @@session.sql_mode = '';
9917
DELETE FROM t1 WHERE f_charbig = 'was inserted';
9919
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
9921
# check special-1 success: 1
9922
UPDATE t1 SET f_charbig = '';
9924
# check special-2 success: 1
9925
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
9926
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
9927
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
9928
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9929
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9930
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9931
'just inserted' FROM t0_template
9932
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9933
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
9935
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9936
f_charbig = 'updated by trigger'
9937
WHERE f_int1 = new.f_int1;
9939
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9940
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
9941
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9943
# check trigger-1 success: 1
9945
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9946
f_int2 = CAST(f_char1 AS SIGNED INT),
9947
f_charbig = 'just inserted'
9948
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9950
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9951
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9952
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9953
'just inserted' FROM t0_template
9954
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9955
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
9957
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9958
f_charbig = 'updated by trigger'
9959
WHERE f_int1 = new.f_int1;
9961
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9962
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
9963
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9965
# check trigger-2 success: 1
9967
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9968
f_int2 = CAST(f_char1 AS SIGNED INT),
9969
f_charbig = 'just inserted'
9970
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9972
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9973
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9974
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9975
'just inserted' FROM t0_template
9976
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9977
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
9979
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9980
f_charbig = 'updated by trigger'
9981
WHERE f_int1 = new.f_int1;
9983
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
9984
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9986
# check trigger-3 success: 1
9988
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9989
f_int2 = CAST(f_char1 AS SIGNED INT),
9990
f_charbig = 'just inserted'
9991
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9993
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9994
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9995
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9996
'just inserted' FROM t0_template
9997
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9998
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
10000
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10001
f_charbig = 'updated by trigger'
10002
WHERE f_int1 = - old.f_int1;
10004
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
10005
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10007
# check trigger-4 success: 1
10008
DROP TRIGGER trg_1;
10009
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10010
f_int2 = CAST(f_char1 AS SIGNED INT),
10011
f_charbig = 'just inserted'
10012
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10014
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10015
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10016
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10017
'just inserted' FROM t0_template
10018
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10019
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
10021
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10022
f_charbig = 'updated by trigger'
10023
WHERE f_int1 = new.f_int1;
10025
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
10026
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10028
# check trigger-5 success: 1
10029
DROP TRIGGER trg_1;
10030
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10031
f_int2 = CAST(f_char1 AS SIGNED INT),
10032
f_charbig = 'just inserted'
10033
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10035
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10036
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10037
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10038
'just inserted' FROM t0_template
10039
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10040
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
10042
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10043
f_charbig = 'updated by trigger'
10044
WHERE f_int1 = - old.f_int1;
10046
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
10047
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10049
# check trigger-6 success: 1
10050
DROP TRIGGER trg_1;
10051
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10052
f_int2 = CAST(f_char1 AS SIGNED INT),
10053
f_charbig = 'just inserted'
10054
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10056
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10057
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10058
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10059
'just inserted' FROM t0_template
10060
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10061
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
10063
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10064
f_charbig = 'updated by trigger'
10065
WHERE f_int1 = - old.f_int1;
10068
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10070
# check trigger-7 success: 1
10071
DROP TRIGGER trg_1;
10072
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10073
f_int2 = CAST(f_char1 AS SIGNED INT),
10074
f_charbig = 'just inserted'
10075
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10077
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10078
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10079
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10080
'just inserted' FROM t0_template
10081
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10082
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
10084
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10085
f_charbig = 'updated by trigger'
10086
WHERE f_int1 = - old.f_int1;
10089
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10091
# check trigger-8 success: 1
10092
DROP TRIGGER trg_1;
10093
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10094
f_int2 = CAST(f_char1 AS SIGNED INT),
10095
f_charbig = 'just inserted'
10096
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10098
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10100
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10101
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
10103
SET new.f_int1 = old.f_int1 + @max_row,
10104
new.f_int2 = old.f_int2 - @max_row,
10105
new.f_charbig = '####updated per update trigger####';
10108
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
10109
f_charbig = '####updated per update statement itself####';
10111
# check trigger-9 success: 1
10112
DROP TRIGGER trg_2;
10113
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10114
f_int2 = CAST(f_char1 AS SIGNED INT),
10115
f_charbig = CONCAT('===',f_char1,'===');
10116
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
10118
SET new.f_int1 = new.f_int1 + @max_row,
10119
new.f_int2 = new.f_int2 - @max_row,
10120
new.f_charbig = '####updated per update trigger####';
10123
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
10124
f_charbig = '####updated per update statement itself####';
10126
# check trigger-10 success: 1
10127
DROP TRIGGER trg_2;
10128
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10129
f_int2 = CAST(f_char1 AS SIGNED INT),
10130
f_charbig = CONCAT('===',f_char1,'===');
10131
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
10133
SET new.f_int1 = @my_max1 + @counter,
10134
new.f_int2 = @my_min2 - @counter,
10135
new.f_charbig = '####updated per insert trigger####';
10136
SET @counter = @counter + 1;
10139
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
10140
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10141
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
10142
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
10143
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
10145
DROP TRIGGER trg_3;
10147
# check trigger-11 success: 1
10149
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
10150
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
10151
AND f_charbig = '####updated per insert trigger####';
10152
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
10154
SET new.f_int1 = @my_max1 + @counter,
10155
new.f_int2 = @my_min2 - @counter,
10156
new.f_charbig = '####updated per insert trigger####';
10157
SET @counter = @counter + 1;
10160
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
10161
INSERT INTO t1 (f_char1, f_char2, f_charbig)
10162
SELECT CAST(f_int1 AS CHAR),
10163
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
10164
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
10166
DROP TRIGGER trg_3;
10168
# check trigger-12 success: 1
10170
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
10171
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
10172
AND f_charbig = '####updated per insert trigger####';
10174
Table Op Msg_type Msg_text
10175
test.t1 analyze status OK
10176
CHECK TABLE t1 EXTENDED;
10177
Table Op Msg_type Msg_text
10178
test.t1 check status OK
10179
CHECKSUM TABLE t1 EXTENDED;
10181
test.t1 <some_value>
10183
Table Op Msg_type Msg_text
10184
test.t1 optimize status OK
10185
# check layout success: 1
10186
REPAIR TABLE t1 EXTENDED;
10187
Table Op Msg_type Msg_text
10188
test.t1 repair status OK
10189
# check layout success: 1
10192
# check TRUNCATE success: 1
10193
# check layout success: 1
10194
# End usability test (inc/partition_check.inc)
10201
f_charbig VARCHAR(1000)
10202
, UNIQUE INDEX uidx1 (f_int2,f_int1)
10204
PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int2)
10205
(PARTITION part1 VALUES LESS THAN (0)
10206
(SUBPARTITION subpart11, SUBPARTITION subpart12),
10207
PARTITION part2 VALUES LESS THAN (5)
10208
(SUBPARTITION subpart21, SUBPARTITION subpart22),
10209
PARTITION part3 VALUES LESS THAN (10)
10210
(SUBPARTITION subpart31, SUBPARTITION subpart32),
10211
PARTITION part4 VALUES LESS THAN (2147483646)
10212
(SUBPARTITION subpart41, SUBPARTITION subpart42));
10213
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
10214
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
10215
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
10216
ALTER TABLE t1 DROP INDEX uidx1;
10217
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
10218
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
10219
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
10220
# Start usability test (inc/partition_check.inc)
10222
SHOW CREATE TABLE t1;
10224
t1 CREATE TABLE `t1` (
10225
`f_int1` int(11) DEFAULT NULL,
10226
`f_int2` int(11) DEFAULT NULL,
10227
`f_char1` char(20) DEFAULT NULL,
10228
`f_char2` char(20) DEFAULT NULL,
10229
`f_charbig` varchar(1000) DEFAULT NULL
10230
) ENGINE=MyISAM DEFAULT CHARSET=latin1
10231
/*!50100 PARTITION BY RANGE (f_int1)
10232
SUBPARTITION BY KEY (f_int2)
10233
(PARTITION part1 VALUES LESS THAN (0)
10234
(SUBPARTITION subpart11 ENGINE = MyISAM,
10235
SUBPARTITION subpart12 ENGINE = MyISAM),
10236
PARTITION part2 VALUES LESS THAN (5)
10237
(SUBPARTITION subpart21 ENGINE = MyISAM,
10238
SUBPARTITION subpart22 ENGINE = MyISAM),
10239
PARTITION part3 VALUES LESS THAN (10)
10240
(SUBPARTITION subpart31 ENGINE = MyISAM,
10241
SUBPARTITION subpart32 ENGINE = MyISAM),
10242
PARTITION part4 VALUES LESS THAN (2147483646)
10243
(SUBPARTITION subpart41 ENGINE = MyISAM,
10244
SUBPARTITION subpart42 ENGINE = MyISAM)) */
10247
t1#P#part1#SP#subpart11.MYD
10248
t1#P#part1#SP#subpart11.MYI
10249
t1#P#part1#SP#subpart12.MYD
10250
t1#P#part1#SP#subpart12.MYI
10251
t1#P#part2#SP#subpart21.MYD
10252
t1#P#part2#SP#subpart21.MYI
10253
t1#P#part2#SP#subpart22.MYD
10254
t1#P#part2#SP#subpart22.MYI
10255
t1#P#part3#SP#subpart31.MYD
10256
t1#P#part3#SP#subpart31.MYI
10257
t1#P#part3#SP#subpart32.MYD
10258
t1#P#part3#SP#subpart32.MYI
10259
t1#P#part4#SP#subpart41.MYD
10260
t1#P#part4#SP#subpart41.MYI
10261
t1#P#part4#SP#subpart42.MYD
10262
t1#P#part4#SP#subpart42.MYI
10266
# check prerequisites-1 success: 1
10267
# check COUNT(*) success: 1
10268
# check MIN/MAX(f_int1) success: 1
10269
# check MIN/MAX(f_int2) success: 1
10270
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10271
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
10272
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
10273
WHERE f_int1 IN (2,3);
10274
# check prerequisites-3 success: 1
10275
DELETE FROM t1 WHERE f_charbig = 'delete me';
10276
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
10277
# check read via f_int1 success: 1
10278
# check read via f_int2 success: 1
10280
# check multiple-1 success: 1
10281
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
10283
# check multiple-2 success: 1
10284
INSERT INTO t1 SELECT * FROM t0_template
10285
WHERE MOD(f_int1,3) = 0;
10287
# check multiple-3 success: 1
10288
UPDATE t1 SET f_int1 = f_int1 + @max_row
10289
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
10290
AND @max_row_div2 + @max_row_div4;
10292
# check multiple-4 success: 1
10294
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
10295
AND @max_row_div2 + @max_row_div4 + @max_row;
10297
# check multiple-5 success: 1
10298
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
10300
SET f_int1 = @cur_value , f_int2 = @cur_value,
10301
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
10302
f_charbig = '#SINGLE#';
10304
# check single-1 success: 1
10305
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
10307
SET f_int1 = @cur_value , f_int2 = @cur_value,
10308
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
10309
f_charbig = '#SINGLE#';
10311
# check single-2 success: 1
10312
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
10313
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
10314
UPDATE t1 SET f_int1 = @cur_value2
10315
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
10317
# check single-3 success: 1
10318
SET @cur_value1= -1;
10319
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
10320
UPDATE t1 SET f_int1 = @cur_value1
10321
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
10323
# check single-4 success: 1
10324
SELECT MAX(f_int1) INTO @cur_value FROM t1;
10325
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
10327
# check single-5 success: 1
10328
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
10330
# check single-6 success: 1
10331
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
10332
ERROR HY000: Table has no partition for value 2147483647
10333
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
10334
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
10335
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
10336
f_charbig = '#NULL#';
10338
SET f_int1 = NULL , f_int2 = -@max_row,
10339
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
10340
f_charbig = '#NULL#';
10341
# check null success: 1
10343
# check null-1 success: 1
10344
UPDATE t1 SET f_int1 = -@max_row
10345
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
10346
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
10348
# check null-2 success: 1
10349
UPDATE t1 SET f_int1 = NULL
10350
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
10351
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
10353
# check null-3 success: 1
10355
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
10356
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
10358
# check null-4 success: 1
10360
WHERE f_int1 = 0 AND f_int2 = 0
10361
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
10362
AND f_charbig = '#NULL#';
10364
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10365
SELECT f_int1, f_int1, '', '', 'was inserted'
10366
FROM t0_template source_tab
10367
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
10369
# check transactions-1 success: 1
10372
# check transactions-2 success: 1
10375
# check transactions-3 success: 1
10376
DELETE FROM t1 WHERE f_charbig = 'was inserted';
10380
# check transactions-4 success: 1
10381
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10382
SELECT f_int1, f_int1, '', '', 'was inserted'
10383
FROM t0_template source_tab
10384
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
10386
# check transactions-5 success: 1
10389
Warning 1196 Some non-transactional changed tables couldn't be rolled back
10391
# check transactions-6 success: 1
10392
# INFO: Storage engine used for t1 seems to be not transactional.
10395
# check transactions-7 success: 1
10396
DELETE FROM t1 WHERE f_charbig = 'was inserted';
10398
SET @@session.sql_mode = 'traditional';
10399
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
10400
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10401
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
10402
'', '', 'was inserted' FROM t0_template
10403
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
10404
ERROR 22012: Division by 0
10407
# check transactions-8 success: 1
10408
# INFO: Storage engine used for t1 seems to be unable to revert
10409
# changes made by the failing statement.
10410
SET @@session.sql_mode = '';
10412
DELETE FROM t1 WHERE f_charbig = 'was inserted';
10414
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
10416
# check special-1 success: 1
10417
UPDATE t1 SET f_charbig = '';
10419
# check special-2 success: 1
10420
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
10421
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
10422
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
10423
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10424
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10425
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10426
'just inserted' FROM t0_template
10427
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10428
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
10430
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10431
f_charbig = 'updated by trigger'
10432
WHERE f_int1 = new.f_int1;
10434
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10435
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
10436
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10438
# check trigger-1 success: 1
10439
DROP TRIGGER trg_1;
10440
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10441
f_int2 = CAST(f_char1 AS SIGNED INT),
10442
f_charbig = 'just inserted'
10443
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10445
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10446
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10447
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10448
'just inserted' FROM t0_template
10449
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10450
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
10452
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10453
f_charbig = 'updated by trigger'
10454
WHERE f_int1 = new.f_int1;
10456
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10457
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
10458
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10460
# check trigger-2 success: 1
10461
DROP TRIGGER trg_1;
10462
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10463
f_int2 = CAST(f_char1 AS SIGNED INT),
10464
f_charbig = 'just inserted'
10465
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10467
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10468
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10469
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10470
'just inserted' FROM t0_template
10471
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10472
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
10474
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10475
f_charbig = 'updated by trigger'
10476
WHERE f_int1 = new.f_int1;
10478
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
10479
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10481
# check trigger-3 success: 1
10482
DROP TRIGGER trg_1;
10483
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10484
f_int2 = CAST(f_char1 AS SIGNED INT),
10485
f_charbig = 'just inserted'
10486
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10488
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10489
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10490
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10491
'just inserted' FROM t0_template
10492
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10493
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
10495
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10496
f_charbig = 'updated by trigger'
10497
WHERE f_int1 = - old.f_int1;
10499
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
10500
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10502
# check trigger-4 success: 1
10503
DROP TRIGGER trg_1;
10504
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10505
f_int2 = CAST(f_char1 AS SIGNED INT),
10506
f_charbig = 'just inserted'
10507
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10509
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10510
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10511
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10512
'just inserted' FROM t0_template
10513
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10514
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
10516
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10517
f_charbig = 'updated by trigger'
10518
WHERE f_int1 = new.f_int1;
10520
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
10521
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10523
# check trigger-5 success: 1
10524
DROP TRIGGER trg_1;
10525
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10526
f_int2 = CAST(f_char1 AS SIGNED INT),
10527
f_charbig = 'just inserted'
10528
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10530
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10531
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10532
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10533
'just inserted' FROM t0_template
10534
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10535
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
10537
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10538
f_charbig = 'updated by trigger'
10539
WHERE f_int1 = - old.f_int1;
10541
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
10542
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10544
# check trigger-6 success: 1
10545
DROP TRIGGER trg_1;
10546
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10547
f_int2 = CAST(f_char1 AS SIGNED INT),
10548
f_charbig = 'just inserted'
10549
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10551
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10552
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10553
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10554
'just inserted' FROM t0_template
10555
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10556
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
10558
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10559
f_charbig = 'updated by trigger'
10560
WHERE f_int1 = - old.f_int1;
10563
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10565
# check trigger-7 success: 1
10566
DROP TRIGGER trg_1;
10567
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10568
f_int2 = CAST(f_char1 AS SIGNED INT),
10569
f_charbig = 'just inserted'
10570
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10572
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10573
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10574
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10575
'just inserted' FROM t0_template
10576
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10577
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
10579
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10580
f_charbig = 'updated by trigger'
10581
WHERE f_int1 = - old.f_int1;
10584
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10586
# check trigger-8 success: 1
10587
DROP TRIGGER trg_1;
10588
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10589
f_int2 = CAST(f_char1 AS SIGNED INT),
10590
f_charbig = 'just inserted'
10591
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10593
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10595
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10596
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
10598
SET new.f_int1 = old.f_int1 + @max_row,
10599
new.f_int2 = old.f_int2 - @max_row,
10600
new.f_charbig = '####updated per update trigger####';
10603
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
10604
f_charbig = '####updated per update statement itself####';
10606
# check trigger-9 success: 1
10607
DROP TRIGGER trg_2;
10608
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10609
f_int2 = CAST(f_char1 AS SIGNED INT),
10610
f_charbig = CONCAT('===',f_char1,'===');
10611
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
10613
SET new.f_int1 = new.f_int1 + @max_row,
10614
new.f_int2 = new.f_int2 - @max_row,
10615
new.f_charbig = '####updated per update trigger####';
10618
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
10619
f_charbig = '####updated per update statement itself####';
10621
# check trigger-10 success: 1
10622
DROP TRIGGER trg_2;
10623
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10624
f_int2 = CAST(f_char1 AS SIGNED INT),
10625
f_charbig = CONCAT('===',f_char1,'===');
10626
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
10628
SET new.f_int1 = @my_max1 + @counter,
10629
new.f_int2 = @my_min2 - @counter,
10630
new.f_charbig = '####updated per insert trigger####';
10631
SET @counter = @counter + 1;
10634
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
10635
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10636
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
10637
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
10638
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
10640
DROP TRIGGER trg_3;
10642
# check trigger-11 success: 1
10644
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
10645
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
10646
AND f_charbig = '####updated per insert trigger####';
10647
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
10649
SET new.f_int1 = @my_max1 + @counter,
10650
new.f_int2 = @my_min2 - @counter,
10651
new.f_charbig = '####updated per insert trigger####';
10652
SET @counter = @counter + 1;
10655
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
10656
INSERT INTO t1 (f_char1, f_char2, f_charbig)
10657
SELECT CAST(f_int1 AS CHAR),
10658
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
10659
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
10661
DROP TRIGGER trg_3;
10663
# check trigger-12 success: 1
10665
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
10666
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
10667
AND f_charbig = '####updated per insert trigger####';
10669
Table Op Msg_type Msg_text
10670
test.t1 analyze status OK
10671
CHECK TABLE t1 EXTENDED;
10672
Table Op Msg_type Msg_text
10673
test.t1 check status OK
10674
CHECKSUM TABLE t1 EXTENDED;
10676
test.t1 <some_value>
10678
Table Op Msg_type Msg_text
10679
test.t1 optimize status OK
10680
# check layout success: 1
10681
REPAIR TABLE t1 EXTENDED;
10682
Table Op Msg_type Msg_text
10683
test.t1 repair status OK
10684
# check layout success: 1
10687
# check TRUNCATE success: 1
10688
# check layout success: 1
10689
# End usability test (inc/partition_check.inc)
10696
f_charbig VARCHAR(1000)
10697
, UNIQUE INDEX uidx1 (f_int2,f_int1)
10699
PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int2 + 1)
10700
(PARTITION part1 VALUES IN (0)
10701
(SUBPARTITION sp11, SUBPARTITION sp12),
10702
PARTITION part2 VALUES IN (1)
10703
(SUBPARTITION sp21, SUBPARTITION sp22),
10704
PARTITION part3 VALUES IN (2)
10705
(SUBPARTITION sp31, SUBPARTITION sp32),
10706
PARTITION part4 VALUES IN (NULL)
10707
(SUBPARTITION sp41, SUBPARTITION sp42));
10708
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
10709
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
10710
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
10711
ALTER TABLE t1 DROP INDEX uidx1;
10712
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
10713
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
10714
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
10715
# Start usability test (inc/partition_check.inc)
10717
SHOW CREATE TABLE t1;
10719
t1 CREATE TABLE `t1` (
10720
`f_int1` int(11) DEFAULT NULL,
10721
`f_int2` int(11) DEFAULT NULL,
10722
`f_char1` char(20) DEFAULT NULL,
10723
`f_char2` char(20) DEFAULT NULL,
10724
`f_charbig` varchar(1000) DEFAULT NULL
10725
) ENGINE=MyISAM DEFAULT CHARSET=latin1
10726
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
10727
SUBPARTITION BY HASH (f_int2 + 1)
10728
(PARTITION part1 VALUES IN (0)
10729
(SUBPARTITION sp11 ENGINE = MyISAM,
10730
SUBPARTITION sp12 ENGINE = MyISAM),
10731
PARTITION part2 VALUES IN (1)
10732
(SUBPARTITION sp21 ENGINE = MyISAM,
10733
SUBPARTITION sp22 ENGINE = MyISAM),
10734
PARTITION part3 VALUES IN (2)
10735
(SUBPARTITION sp31 ENGINE = MyISAM,
10736
SUBPARTITION sp32 ENGINE = MyISAM),
10737
PARTITION part4 VALUES IN (NULL)
10738
(SUBPARTITION sp41 ENGINE = MyISAM,
10739
SUBPARTITION sp42 ENGINE = MyISAM)) */
10742
t1#P#part1#SP#sp11.MYD
10743
t1#P#part1#SP#sp11.MYI
10744
t1#P#part1#SP#sp12.MYD
10745
t1#P#part1#SP#sp12.MYI
10746
t1#P#part2#SP#sp21.MYD
10747
t1#P#part2#SP#sp21.MYI
10748
t1#P#part2#SP#sp22.MYD
10749
t1#P#part2#SP#sp22.MYI
10750
t1#P#part3#SP#sp31.MYD
10751
t1#P#part3#SP#sp31.MYI
10752
t1#P#part3#SP#sp32.MYD
10753
t1#P#part3#SP#sp32.MYI
10754
t1#P#part4#SP#sp41.MYD
10755
t1#P#part4#SP#sp41.MYI
10756
t1#P#part4#SP#sp42.MYD
10757
t1#P#part4#SP#sp42.MYI
10761
# check prerequisites-1 success: 1
10762
# check COUNT(*) success: 1
10763
# check MIN/MAX(f_int1) success: 1
10764
# check MIN/MAX(f_int2) success: 1
10765
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10766
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
10767
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
10768
WHERE f_int1 IN (2,3);
10769
# check prerequisites-3 success: 1
10770
DELETE FROM t1 WHERE f_charbig = 'delete me';
10771
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
10772
# check read via f_int1 success: 1
10773
# check read via f_int2 success: 1
10775
# check multiple-1 success: 1
10776
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
10778
# check multiple-2 success: 1
10779
INSERT INTO t1 SELECT * FROM t0_template
10780
WHERE MOD(f_int1,3) = 0;
10782
# check multiple-3 success: 1
10783
UPDATE t1 SET f_int1 = f_int1 + @max_row
10784
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
10785
AND @max_row_div2 + @max_row_div4;
10787
# check multiple-4 success: 1
10789
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
10790
AND @max_row_div2 + @max_row_div4 + @max_row;
10792
# check multiple-5 success: 1
10793
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
10795
SET f_int1 = @cur_value , f_int2 = @cur_value,
10796
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
10797
f_charbig = '#SINGLE#';
10799
# check single-1 success: 1
10800
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
10802
SET f_int1 = @cur_value , f_int2 = @cur_value,
10803
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
10804
f_charbig = '#SINGLE#';
10806
# check single-2 success: 1
10807
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
10808
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
10809
UPDATE t1 SET f_int1 = @cur_value2
10810
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
10812
# check single-3 success: 1
10813
SET @cur_value1= -1;
10814
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
10815
UPDATE t1 SET f_int1 = @cur_value1
10816
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
10818
# check single-4 success: 1
10819
SELECT MAX(f_int1) INTO @cur_value FROM t1;
10820
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
10822
# check single-5 success: 1
10823
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
10825
# check single-6 success: 1
10826
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
10828
# check single-7 success: 1
10829
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
10830
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
10831
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
10832
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
10833
f_charbig = '#NULL#';
10835
SET f_int1 = NULL , f_int2 = -@max_row,
10836
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
10837
f_charbig = '#NULL#';
10838
# check null success: 1
10840
# check null-1 success: 1
10841
UPDATE t1 SET f_int1 = -@max_row
10842
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
10843
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
10845
# check null-2 success: 1
10846
UPDATE t1 SET f_int1 = NULL
10847
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
10848
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
10850
# check null-3 success: 1
10852
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
10853
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
10855
# check null-4 success: 1
10857
WHERE f_int1 = 0 AND f_int2 = 0
10858
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
10859
AND f_charbig = '#NULL#';
10861
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10862
SELECT f_int1, f_int1, '', '', 'was inserted'
10863
FROM t0_template source_tab
10864
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
10866
# check transactions-1 success: 1
10869
# check transactions-2 success: 1
10872
# check transactions-3 success: 1
10873
DELETE FROM t1 WHERE f_charbig = 'was inserted';
10877
# check transactions-4 success: 1
10878
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10879
SELECT f_int1, f_int1, '', '', 'was inserted'
10880
FROM t0_template source_tab
10881
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
10883
# check transactions-5 success: 1
10886
Warning 1196 Some non-transactional changed tables couldn't be rolled back
10888
# check transactions-6 success: 1
10889
# INFO: Storage engine used for t1 seems to be not transactional.
10892
# check transactions-7 success: 1
10893
DELETE FROM t1 WHERE f_charbig = 'was inserted';
10895
SET @@session.sql_mode = 'traditional';
10896
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
10897
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10898
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
10899
'', '', 'was inserted' FROM t0_template
10900
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
10901
ERROR 22012: Division by 0
10904
# check transactions-8 success: 1
10905
# INFO: Storage engine used for t1 seems to be unable to revert
10906
# changes made by the failing statement.
10907
SET @@session.sql_mode = '';
10909
DELETE FROM t1 WHERE f_charbig = 'was inserted';
10911
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
10913
# check special-1 success: 1
10914
UPDATE t1 SET f_charbig = '';
10916
# check special-2 success: 1
10917
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
10918
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
10919
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
10920
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10921
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10922
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10923
'just inserted' FROM t0_template
10924
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10925
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
10927
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10928
f_charbig = 'updated by trigger'
10929
WHERE f_int1 = new.f_int1;
10931
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10932
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
10933
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10935
# check trigger-1 success: 1
10936
DROP TRIGGER trg_1;
10937
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10938
f_int2 = CAST(f_char1 AS SIGNED INT),
10939
f_charbig = 'just inserted'
10940
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10942
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10943
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10944
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10945
'just inserted' FROM t0_template
10946
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10947
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
10949
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10950
f_charbig = 'updated by trigger'
10951
WHERE f_int1 = new.f_int1;
10953
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10954
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
10955
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10957
# check trigger-2 success: 1
10958
DROP TRIGGER trg_1;
10959
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10960
f_int2 = CAST(f_char1 AS SIGNED INT),
10961
f_charbig = 'just inserted'
10962
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10964
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10965
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10966
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10967
'just inserted' FROM t0_template
10968
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10969
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
10971
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10972
f_charbig = 'updated by trigger'
10973
WHERE f_int1 = new.f_int1;
10975
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
10976
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10978
# check trigger-3 success: 1
10979
DROP TRIGGER trg_1;
10980
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10981
f_int2 = CAST(f_char1 AS SIGNED INT),
10982
f_charbig = 'just inserted'
10983
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10985
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10986
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10987
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10988
'just inserted' FROM t0_template
10989
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10990
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
10992
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10993
f_charbig = 'updated by trigger'
10994
WHERE f_int1 = - old.f_int1;
10996
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
10997
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10999
# check trigger-4 success: 1
11000
DROP TRIGGER trg_1;
11001
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11002
f_int2 = CAST(f_char1 AS SIGNED INT),
11003
f_charbig = 'just inserted'
11004
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11006
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11007
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11008
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11009
'just inserted' FROM t0_template
11010
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11011
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
11013
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11014
f_charbig = 'updated by trigger'
11015
WHERE f_int1 = new.f_int1;
11017
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
11018
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11020
# check trigger-5 success: 1
11021
DROP TRIGGER trg_1;
11022
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11023
f_int2 = CAST(f_char1 AS SIGNED INT),
11024
f_charbig = 'just inserted'
11025
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11027
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11028
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11029
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11030
'just inserted' FROM t0_template
11031
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11032
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
11034
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11035
f_charbig = 'updated by trigger'
11036
WHERE f_int1 = - old.f_int1;
11038
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
11039
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11041
# check trigger-6 success: 1
11042
DROP TRIGGER trg_1;
11043
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11044
f_int2 = CAST(f_char1 AS SIGNED INT),
11045
f_charbig = 'just inserted'
11046
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11048
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11049
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11050
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11051
'just inserted' FROM t0_template
11052
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11053
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
11055
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11056
f_charbig = 'updated by trigger'
11057
WHERE f_int1 = - old.f_int1;
11060
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11062
# check trigger-7 success: 1
11063
DROP TRIGGER trg_1;
11064
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11065
f_int2 = CAST(f_char1 AS SIGNED INT),
11066
f_charbig = 'just inserted'
11067
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11069
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11070
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11071
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11072
'just inserted' FROM t0_template
11073
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11074
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
11076
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11077
f_charbig = 'updated by trigger'
11078
WHERE f_int1 = - old.f_int1;
11081
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11083
# check trigger-8 success: 1
11084
DROP TRIGGER trg_1;
11085
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11086
f_int2 = CAST(f_char1 AS SIGNED INT),
11087
f_charbig = 'just inserted'
11088
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11090
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11092
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11093
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
11095
SET new.f_int1 = old.f_int1 + @max_row,
11096
new.f_int2 = old.f_int2 - @max_row,
11097
new.f_charbig = '####updated per update trigger####';
11100
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
11101
f_charbig = '####updated per update statement itself####';
11103
# check trigger-9 success: 1
11104
DROP TRIGGER trg_2;
11105
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11106
f_int2 = CAST(f_char1 AS SIGNED INT),
11107
f_charbig = CONCAT('===',f_char1,'===');
11108
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
11110
SET new.f_int1 = new.f_int1 + @max_row,
11111
new.f_int2 = new.f_int2 - @max_row,
11112
new.f_charbig = '####updated per update trigger####';
11115
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
11116
f_charbig = '####updated per update statement itself####';
11118
# check trigger-10 success: 1
11119
DROP TRIGGER trg_2;
11120
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11121
f_int2 = CAST(f_char1 AS SIGNED INT),
11122
f_charbig = CONCAT('===',f_char1,'===');
11123
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
11125
SET new.f_int1 = @my_max1 + @counter,
11126
new.f_int2 = @my_min2 - @counter,
11127
new.f_charbig = '####updated per insert trigger####';
11128
SET @counter = @counter + 1;
11131
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
11132
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11133
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
11134
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
11135
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
11137
DROP TRIGGER trg_3;
11139
# check trigger-11 success: 1
11141
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
11142
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
11143
AND f_charbig = '####updated per insert trigger####';
11144
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
11146
SET new.f_int1 = @my_max1 + @counter,
11147
new.f_int2 = @my_min2 - @counter,
11148
new.f_charbig = '####updated per insert trigger####';
11149
SET @counter = @counter + 1;
11152
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
11153
INSERT INTO t1 (f_char1, f_char2, f_charbig)
11154
SELECT CAST(f_int1 AS CHAR),
11155
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
11156
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
11158
DROP TRIGGER trg_3;
11160
# check trigger-12 success: 1
11162
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
11163
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
11164
AND f_charbig = '####updated per insert trigger####';
11166
Table Op Msg_type Msg_text
11167
test.t1 analyze status OK
11168
CHECK TABLE t1 EXTENDED;
11169
Table Op Msg_type Msg_text
11170
test.t1 check status OK
11171
CHECKSUM TABLE t1 EXTENDED;
11173
test.t1 <some_value>
11175
Table Op Msg_type Msg_text
11176
test.t1 optimize status OK
11177
# check layout success: 1
11178
REPAIR TABLE t1 EXTENDED;
11179
Table Op Msg_type Msg_text
11180
test.t1 repair status OK
11181
# check layout success: 1
11184
# check TRUNCATE success: 1
11185
# check layout success: 1
11186
# End usability test (inc/partition_check.inc)
11193
f_charbig VARCHAR(1000)
11194
, UNIQUE INDEX uidx1 (f_int2,f_int1)
11196
PARTITION BY LIST(ABS(MOD(f_int1,2)))
11197
SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3
11198
(PARTITION part1 VALUES IN (0),
11199
PARTITION part2 VALUES IN (1),
11200
PARTITION part3 VALUES IN (NULL));
11201
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
11202
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
11203
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
11204
ALTER TABLE t1 DROP INDEX uidx1;
11205
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
11206
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
11207
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
11208
# Start usability test (inc/partition_check.inc)
11210
SHOW CREATE TABLE t1;
11212
t1 CREATE TABLE `t1` (
11213
`f_int1` int(11) DEFAULT NULL,
11214
`f_int2` int(11) DEFAULT NULL,
11215
`f_char1` char(20) DEFAULT NULL,
11216
`f_char2` char(20) DEFAULT NULL,
11217
`f_charbig` varchar(1000) DEFAULT NULL
11218
) ENGINE=MyISAM DEFAULT CHARSET=latin1
11219
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
11220
SUBPARTITION BY KEY (f_int2)
11222
(PARTITION part1 VALUES IN (0) ENGINE = MyISAM,
11223
PARTITION part2 VALUES IN (1) ENGINE = MyISAM,
11224
PARTITION part3 VALUES IN (NULL) ENGINE = MyISAM) */
11227
t1#P#part1#SP#part1sp0.MYD
11228
t1#P#part1#SP#part1sp0.MYI
11229
t1#P#part1#SP#part1sp1.MYD
11230
t1#P#part1#SP#part1sp1.MYI
11231
t1#P#part1#SP#part1sp2.MYD
11232
t1#P#part1#SP#part1sp2.MYI
11233
t1#P#part2#SP#part2sp0.MYD
11234
t1#P#part2#SP#part2sp0.MYI
11235
t1#P#part2#SP#part2sp1.MYD
11236
t1#P#part2#SP#part2sp1.MYI
11237
t1#P#part2#SP#part2sp2.MYD
11238
t1#P#part2#SP#part2sp2.MYI
11239
t1#P#part3#SP#part3sp0.MYD
11240
t1#P#part3#SP#part3sp0.MYI
11241
t1#P#part3#SP#part3sp1.MYD
11242
t1#P#part3#SP#part3sp1.MYI
11243
t1#P#part3#SP#part3sp2.MYD
11244
t1#P#part3#SP#part3sp2.MYI
11248
# check prerequisites-1 success: 1
11249
# check COUNT(*) success: 1
11250
# check MIN/MAX(f_int1) success: 1
11251
# check MIN/MAX(f_int2) success: 1
11252
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11253
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
11254
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
11255
WHERE f_int1 IN (2,3);
11256
# check prerequisites-3 success: 1
11257
DELETE FROM t1 WHERE f_charbig = 'delete me';
11258
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
11259
# check read via f_int1 success: 1
11260
# check read via f_int2 success: 1
11262
# check multiple-1 success: 1
11263
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
11265
# check multiple-2 success: 1
11266
INSERT INTO t1 SELECT * FROM t0_template
11267
WHERE MOD(f_int1,3) = 0;
11269
# check multiple-3 success: 1
11270
UPDATE t1 SET f_int1 = f_int1 + @max_row
11271
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
11272
AND @max_row_div2 + @max_row_div4;
11274
# check multiple-4 success: 1
11276
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
11277
AND @max_row_div2 + @max_row_div4 + @max_row;
11279
# check multiple-5 success: 1
11280
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
11282
SET f_int1 = @cur_value , f_int2 = @cur_value,
11283
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
11284
f_charbig = '#SINGLE#';
11286
# check single-1 success: 1
11287
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
11289
SET f_int1 = @cur_value , f_int2 = @cur_value,
11290
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
11291
f_charbig = '#SINGLE#';
11293
# check single-2 success: 1
11294
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
11295
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
11296
UPDATE t1 SET f_int1 = @cur_value2
11297
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
11299
# check single-3 success: 1
11300
SET @cur_value1= -1;
11301
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
11302
UPDATE t1 SET f_int1 = @cur_value1
11303
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
11305
# check single-4 success: 1
11306
SELECT MAX(f_int1) INTO @cur_value FROM t1;
11307
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
11309
# check single-5 success: 1
11310
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
11312
# check single-6 success: 1
11313
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
11315
# check single-7 success: 1
11316
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
11317
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
11318
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
11319
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
11320
f_charbig = '#NULL#';
11322
SET f_int1 = NULL , f_int2 = -@max_row,
11323
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
11324
f_charbig = '#NULL#';
11325
# check null success: 1
11327
# check null-1 success: 1
11328
UPDATE t1 SET f_int1 = -@max_row
11329
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
11330
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
11332
# check null-2 success: 1
11333
UPDATE t1 SET f_int1 = NULL
11334
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
11335
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
11337
# check null-3 success: 1
11339
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
11340
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
11342
# check null-4 success: 1
11344
WHERE f_int1 = 0 AND f_int2 = 0
11345
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
11346
AND f_charbig = '#NULL#';
11348
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11349
SELECT f_int1, f_int1, '', '', 'was inserted'
11350
FROM t0_template source_tab
11351
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
11353
# check transactions-1 success: 1
11356
# check transactions-2 success: 1
11359
# check transactions-3 success: 1
11360
DELETE FROM t1 WHERE f_charbig = 'was inserted';
11364
# check transactions-4 success: 1
11365
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11366
SELECT f_int1, f_int1, '', '', 'was inserted'
11367
FROM t0_template source_tab
11368
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
11370
# check transactions-5 success: 1
11373
Warning 1196 Some non-transactional changed tables couldn't be rolled back
11375
# check transactions-6 success: 1
11376
# INFO: Storage engine used for t1 seems to be not transactional.
11379
# check transactions-7 success: 1
11380
DELETE FROM t1 WHERE f_charbig = 'was inserted';
11382
SET @@session.sql_mode = 'traditional';
11383
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
11384
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11385
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
11386
'', '', 'was inserted' FROM t0_template
11387
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
11388
ERROR 22012: Division by 0
11391
# check transactions-8 success: 1
11392
# INFO: Storage engine used for t1 seems to be unable to revert
11393
# changes made by the failing statement.
11394
SET @@session.sql_mode = '';
11396
DELETE FROM t1 WHERE f_charbig = 'was inserted';
11398
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
11400
# check special-1 success: 1
11401
UPDATE t1 SET f_charbig = '';
11403
# check special-2 success: 1
11404
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
11405
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
11406
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
11407
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11408
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11409
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11410
'just inserted' FROM t0_template
11411
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11412
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
11414
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11415
f_charbig = 'updated by trigger'
11416
WHERE f_int1 = new.f_int1;
11418
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11419
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
11420
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11422
# check trigger-1 success: 1
11423
DROP TRIGGER trg_1;
11424
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11425
f_int2 = CAST(f_char1 AS SIGNED INT),
11426
f_charbig = 'just inserted'
11427
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11429
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11430
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11431
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11432
'just inserted' FROM t0_template
11433
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11434
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
11436
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11437
f_charbig = 'updated by trigger'
11438
WHERE f_int1 = new.f_int1;
11440
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11441
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
11442
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11444
# check trigger-2 success: 1
11445
DROP TRIGGER trg_1;
11446
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11447
f_int2 = CAST(f_char1 AS SIGNED INT),
11448
f_charbig = 'just inserted'
11449
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11451
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11452
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11453
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11454
'just inserted' FROM t0_template
11455
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11456
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
11458
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11459
f_charbig = 'updated by trigger'
11460
WHERE f_int1 = new.f_int1;
11462
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
11463
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11465
# check trigger-3 success: 1
11466
DROP TRIGGER trg_1;
11467
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11468
f_int2 = CAST(f_char1 AS SIGNED INT),
11469
f_charbig = 'just inserted'
11470
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11472
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11473
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11474
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11475
'just inserted' FROM t0_template
11476
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11477
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
11479
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11480
f_charbig = 'updated by trigger'
11481
WHERE f_int1 = - old.f_int1;
11483
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
11484
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11486
# check trigger-4 success: 1
11487
DROP TRIGGER trg_1;
11488
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11489
f_int2 = CAST(f_char1 AS SIGNED INT),
11490
f_charbig = 'just inserted'
11491
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11493
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11494
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11495
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11496
'just inserted' FROM t0_template
11497
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11498
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
11500
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11501
f_charbig = 'updated by trigger'
11502
WHERE f_int1 = new.f_int1;
11504
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
11505
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11507
# check trigger-5 success: 1
11508
DROP TRIGGER trg_1;
11509
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11510
f_int2 = CAST(f_char1 AS SIGNED INT),
11511
f_charbig = 'just inserted'
11512
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11514
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11515
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11516
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11517
'just inserted' FROM t0_template
11518
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11519
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
11521
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11522
f_charbig = 'updated by trigger'
11523
WHERE f_int1 = - old.f_int1;
11525
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
11526
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11528
# check trigger-6 success: 1
11529
DROP TRIGGER trg_1;
11530
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11531
f_int2 = CAST(f_char1 AS SIGNED INT),
11532
f_charbig = 'just inserted'
11533
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11535
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11536
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11537
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11538
'just inserted' FROM t0_template
11539
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11540
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
11542
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11543
f_charbig = 'updated by trigger'
11544
WHERE f_int1 = - old.f_int1;
11547
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11549
# check trigger-7 success: 1
11550
DROP TRIGGER trg_1;
11551
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11552
f_int2 = CAST(f_char1 AS SIGNED INT),
11553
f_charbig = 'just inserted'
11554
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11556
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11557
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11558
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11559
'just inserted' FROM t0_template
11560
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11561
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
11563
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11564
f_charbig = 'updated by trigger'
11565
WHERE f_int1 = - old.f_int1;
11568
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11570
# check trigger-8 success: 1
11571
DROP TRIGGER trg_1;
11572
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11573
f_int2 = CAST(f_char1 AS SIGNED INT),
11574
f_charbig = 'just inserted'
11575
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11577
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11579
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11580
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
11582
SET new.f_int1 = old.f_int1 + @max_row,
11583
new.f_int2 = old.f_int2 - @max_row,
11584
new.f_charbig = '####updated per update trigger####';
11587
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
11588
f_charbig = '####updated per update statement itself####';
11590
# check trigger-9 success: 1
11591
DROP TRIGGER trg_2;
11592
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11593
f_int2 = CAST(f_char1 AS SIGNED INT),
11594
f_charbig = CONCAT('===',f_char1,'===');
11595
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
11597
SET new.f_int1 = new.f_int1 + @max_row,
11598
new.f_int2 = new.f_int2 - @max_row,
11599
new.f_charbig = '####updated per update trigger####';
11602
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
11603
f_charbig = '####updated per update statement itself####';
11605
# check trigger-10 success: 1
11606
DROP TRIGGER trg_2;
11607
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11608
f_int2 = CAST(f_char1 AS SIGNED INT),
11609
f_charbig = CONCAT('===',f_char1,'===');
11610
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
11612
SET new.f_int1 = @my_max1 + @counter,
11613
new.f_int2 = @my_min2 - @counter,
11614
new.f_charbig = '####updated per insert trigger####';
11615
SET @counter = @counter + 1;
11618
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
11619
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11620
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
11621
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
11622
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
11624
DROP TRIGGER trg_3;
11626
# check trigger-11 success: 1
11628
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
11629
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
11630
AND f_charbig = '####updated per insert trigger####';
11631
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
11633
SET new.f_int1 = @my_max1 + @counter,
11634
new.f_int2 = @my_min2 - @counter,
11635
new.f_charbig = '####updated per insert trigger####';
11636
SET @counter = @counter + 1;
11639
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
11640
INSERT INTO t1 (f_char1, f_char2, f_charbig)
11641
SELECT CAST(f_int1 AS CHAR),
11642
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
11643
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
11645
DROP TRIGGER trg_3;
11647
# check trigger-12 success: 1
11649
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
11650
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
11651
AND f_charbig = '####updated per insert trigger####';
11653
Table Op Msg_type Msg_text
11654
test.t1 analyze status OK
11655
CHECK TABLE t1 EXTENDED;
11656
Table Op Msg_type Msg_text
11657
test.t1 check status OK
11658
CHECKSUM TABLE t1 EXTENDED;
11660
test.t1 <some_value>
11662
Table Op Msg_type Msg_text
11663
test.t1 optimize status OK
11664
# check layout success: 1
11665
REPAIR TABLE t1 EXTENDED;
11666
Table Op Msg_type Msg_text
11667
test.t1 repair status OK
11668
# check layout success: 1
11671
# check TRUNCATE success: 1
11672
# check layout success: 1
11673
# End usability test (inc/partition_check.inc)
11675
DROP TABLE IF EXISTS t1;
11681
f_charbig VARCHAR(1000)
11682
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
11684
PARTITION BY HASH(f_int1 + f_int2) PARTITIONS 2;
11685
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
11686
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
11687
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
11688
ALTER TABLE t1 DROP INDEX uidx1, DROP INDEX uidx2;
11689
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
11690
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
11691
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
11692
# Start usability test (inc/partition_check.inc)
11694
SHOW CREATE TABLE t1;
11696
t1 CREATE TABLE `t1` (
11697
`f_int1` int(11) DEFAULT NULL,
11698
`f_int2` int(11) DEFAULT NULL,
11699
`f_char1` char(20) DEFAULT NULL,
11700
`f_char2` char(20) DEFAULT NULL,
11701
`f_charbig` varchar(1000) DEFAULT NULL
11702
) ENGINE=MyISAM DEFAULT CHARSET=latin1
11703
/*!50100 PARTITION BY HASH (f_int1 + f_int2)
11714
# check prerequisites-1 success: 1
11715
# check COUNT(*) success: 1
11716
# check MIN/MAX(f_int1) success: 1
11717
# check MIN/MAX(f_int2) success: 1
11718
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11719
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
11720
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
11721
WHERE f_int1 IN (2,3);
11722
# check prerequisites-3 success: 1
11723
DELETE FROM t1 WHERE f_charbig = 'delete me';
11724
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
11725
# check read via f_int1 success: 1
11726
# check read via f_int2 success: 1
11728
# check multiple-1 success: 1
11729
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
11731
# check multiple-2 success: 1
11732
INSERT INTO t1 SELECT * FROM t0_template
11733
WHERE MOD(f_int1,3) = 0;
11735
# check multiple-3 success: 1
11736
UPDATE t1 SET f_int1 = f_int1 + @max_row
11737
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
11738
AND @max_row_div2 + @max_row_div4;
11740
# check multiple-4 success: 1
11742
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
11743
AND @max_row_div2 + @max_row_div4 + @max_row;
11745
# check multiple-5 success: 1
11746
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
11748
SET f_int1 = @cur_value , f_int2 = @cur_value,
11749
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
11750
f_charbig = '#SINGLE#';
11752
# check single-1 success: 1
11753
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
11755
SET f_int1 = @cur_value , f_int2 = @cur_value,
11756
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
11757
f_charbig = '#SINGLE#';
11759
# check single-2 success: 1
11760
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
11761
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
11762
UPDATE t1 SET f_int1 = @cur_value2
11763
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
11765
# check single-3 success: 1
11766
SET @cur_value1= -1;
11767
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
11768
UPDATE t1 SET f_int1 = @cur_value1
11769
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
11771
# check single-4 success: 1
11772
SELECT MAX(f_int1) INTO @cur_value FROM t1;
11773
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
11775
# check single-5 success: 1
11776
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
11778
# check single-6 success: 1
11779
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
11781
# check single-7 success: 1
11782
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
11783
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
11784
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
11785
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
11786
f_charbig = '#NULL#';
11788
SET f_int1 = NULL , f_int2 = -@max_row,
11789
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
11790
f_charbig = '#NULL#';
11791
# check null success: 1
11793
# check null-1 success: 1
11794
UPDATE t1 SET f_int1 = -@max_row
11795
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
11796
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
11798
# check null-2 success: 1
11799
UPDATE t1 SET f_int1 = NULL
11800
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
11801
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
11803
# check null-3 success: 1
11805
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
11806
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
11808
# check null-4 success: 1
11810
WHERE f_int1 = 0 AND f_int2 = 0
11811
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
11812
AND f_charbig = '#NULL#';
11814
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11815
SELECT f_int1, f_int1, '', '', 'was inserted'
11816
FROM t0_template source_tab
11817
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
11819
# check transactions-1 success: 1
11822
# check transactions-2 success: 1
11825
# check transactions-3 success: 1
11826
DELETE FROM t1 WHERE f_charbig = 'was inserted';
11830
# check transactions-4 success: 1
11831
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11832
SELECT f_int1, f_int1, '', '', 'was inserted'
11833
FROM t0_template source_tab
11834
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
11836
# check transactions-5 success: 1
11839
Warning 1196 Some non-transactional changed tables couldn't be rolled back
11841
# check transactions-6 success: 1
11842
# INFO: Storage engine used for t1 seems to be not transactional.
11845
# check transactions-7 success: 1
11846
DELETE FROM t1 WHERE f_charbig = 'was inserted';
11848
SET @@session.sql_mode = 'traditional';
11849
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
11850
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11851
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
11852
'', '', 'was inserted' FROM t0_template
11853
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
11854
ERROR 22012: Division by 0
11857
# check transactions-8 success: 1
11858
# INFO: Storage engine used for t1 seems to be unable to revert
11859
# changes made by the failing statement.
11860
SET @@session.sql_mode = '';
11862
DELETE FROM t1 WHERE f_charbig = 'was inserted';
11864
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
11866
# check special-1 success: 1
11867
UPDATE t1 SET f_charbig = '';
11869
# check special-2 success: 1
11870
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
11871
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
11872
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
11873
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11874
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11875
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11876
'just inserted' FROM t0_template
11877
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11878
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
11880
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11881
f_charbig = 'updated by trigger'
11882
WHERE f_int1 = new.f_int1;
11884
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11885
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
11886
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11888
# check trigger-1 success: 1
11889
DROP TRIGGER trg_1;
11890
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11891
f_int2 = CAST(f_char1 AS SIGNED INT),
11892
f_charbig = 'just inserted'
11893
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11895
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11896
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11897
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11898
'just inserted' FROM t0_template
11899
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11900
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
11902
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11903
f_charbig = 'updated by trigger'
11904
WHERE f_int1 = new.f_int1;
11906
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11907
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
11908
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11910
# check trigger-2 success: 1
11911
DROP TRIGGER trg_1;
11912
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11913
f_int2 = CAST(f_char1 AS SIGNED INT),
11914
f_charbig = 'just inserted'
11915
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11917
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11918
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11919
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11920
'just inserted' FROM t0_template
11921
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11922
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
11924
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11925
f_charbig = 'updated by trigger'
11926
WHERE f_int1 = new.f_int1;
11928
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
11929
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11931
# check trigger-3 success: 1
11932
DROP TRIGGER trg_1;
11933
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11934
f_int2 = CAST(f_char1 AS SIGNED INT),
11935
f_charbig = 'just inserted'
11936
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11938
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11939
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11940
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11941
'just inserted' FROM t0_template
11942
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11943
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
11945
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11946
f_charbig = 'updated by trigger'
11947
WHERE f_int1 = - old.f_int1;
11949
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
11950
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11952
# check trigger-4 success: 1
11953
DROP TRIGGER trg_1;
11954
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11955
f_int2 = CAST(f_char1 AS SIGNED INT),
11956
f_charbig = 'just inserted'
11957
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11959
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11960
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11961
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11962
'just inserted' FROM t0_template
11963
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11964
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
11966
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11967
f_charbig = 'updated by trigger'
11968
WHERE f_int1 = new.f_int1;
11970
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
11971
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11973
# check trigger-5 success: 1
11974
DROP TRIGGER trg_1;
11975
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11976
f_int2 = CAST(f_char1 AS SIGNED INT),
11977
f_charbig = 'just inserted'
11978
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11980
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11981
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11982
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11983
'just inserted' FROM t0_template
11984
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11985
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
11987
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11988
f_charbig = 'updated by trigger'
11989
WHERE f_int1 = - old.f_int1;
11991
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
11992
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11994
# check trigger-6 success: 1
11995
DROP TRIGGER trg_1;
11996
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11997
f_int2 = CAST(f_char1 AS SIGNED INT),
11998
f_charbig = 'just inserted'
11999
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12001
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12002
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12003
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12004
'just inserted' FROM t0_template
12005
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12006
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
12008
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12009
f_charbig = 'updated by trigger'
12010
WHERE f_int1 = - old.f_int1;
12013
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12015
# check trigger-7 success: 1
12016
DROP TRIGGER trg_1;
12017
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12018
f_int2 = CAST(f_char1 AS SIGNED INT),
12019
f_charbig = 'just inserted'
12020
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12022
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12023
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12024
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12025
'just inserted' FROM t0_template
12026
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12027
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
12029
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12030
f_charbig = 'updated by trigger'
12031
WHERE f_int1 = - old.f_int1;
12034
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12036
# check trigger-8 success: 1
12037
DROP TRIGGER trg_1;
12038
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12039
f_int2 = CAST(f_char1 AS SIGNED INT),
12040
f_charbig = 'just inserted'
12041
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12043
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12045
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12046
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
12048
SET new.f_int1 = old.f_int1 + @max_row,
12049
new.f_int2 = old.f_int2 - @max_row,
12050
new.f_charbig = '####updated per update trigger####';
12053
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
12054
f_charbig = '####updated per update statement itself####';
12056
# check trigger-9 success: 1
12057
DROP TRIGGER trg_2;
12058
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12059
f_int2 = CAST(f_char1 AS SIGNED INT),
12060
f_charbig = CONCAT('===',f_char1,'===');
12061
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
12063
SET new.f_int1 = new.f_int1 + @max_row,
12064
new.f_int2 = new.f_int2 - @max_row,
12065
new.f_charbig = '####updated per update trigger####';
12068
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
12069
f_charbig = '####updated per update statement itself####';
12071
# check trigger-10 success: 1
12072
DROP TRIGGER trg_2;
12073
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12074
f_int2 = CAST(f_char1 AS SIGNED INT),
12075
f_charbig = CONCAT('===',f_char1,'===');
12076
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
12078
SET new.f_int1 = @my_max1 + @counter,
12079
new.f_int2 = @my_min2 - @counter,
12080
new.f_charbig = '####updated per insert trigger####';
12081
SET @counter = @counter + 1;
12084
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
12085
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12086
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
12087
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
12088
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
12090
DROP TRIGGER trg_3;
12092
# check trigger-11 success: 1
12094
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
12095
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
12096
AND f_charbig = '####updated per insert trigger####';
12097
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
12099
SET new.f_int1 = @my_max1 + @counter,
12100
new.f_int2 = @my_min2 - @counter,
12101
new.f_charbig = '####updated per insert trigger####';
12102
SET @counter = @counter + 1;
12105
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
12106
INSERT INTO t1 (f_char1, f_char2, f_charbig)
12107
SELECT CAST(f_int1 AS CHAR),
12108
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
12109
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
12111
DROP TRIGGER trg_3;
12113
# check trigger-12 success: 1
12115
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
12116
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
12117
AND f_charbig = '####updated per insert trigger####';
12119
Table Op Msg_type Msg_text
12120
test.t1 analyze status OK
12121
CHECK TABLE t1 EXTENDED;
12122
Table Op Msg_type Msg_text
12123
test.t1 check status OK
12124
CHECKSUM TABLE t1 EXTENDED;
12126
test.t1 <some_value>
12128
Table Op Msg_type Msg_text
12129
test.t1 optimize status OK
12130
# check layout success: 1
12131
REPAIR TABLE t1 EXTENDED;
12132
Table Op Msg_type Msg_text
12133
test.t1 repair status OK
12134
# check layout success: 1
12137
# check TRUNCATE success: 1
12138
# check layout success: 1
12139
# End usability test (inc/partition_check.inc)
12146
f_charbig VARCHAR(1000)
12147
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
12149
PARTITION BY KEY(f_int1,f_int2) PARTITIONS 5;
12150
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
12151
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
12152
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
12153
ALTER TABLE t1 DROP INDEX uidx1, DROP INDEX uidx2;
12154
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
12155
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
12156
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
12157
# Start usability test (inc/partition_check.inc)
12159
SHOW CREATE TABLE t1;
12161
t1 CREATE TABLE `t1` (
12162
`f_int1` int(11) DEFAULT NULL,
12163
`f_int2` int(11) DEFAULT NULL,
12164
`f_char1` char(20) DEFAULT NULL,
12165
`f_char2` char(20) DEFAULT NULL,
12166
`f_charbig` varchar(1000) DEFAULT NULL
12167
) ENGINE=MyISAM DEFAULT CHARSET=latin1
12168
/*!50100 PARTITION BY KEY (f_int1,f_int2)
12185
# check prerequisites-1 success: 1
12186
# check COUNT(*) success: 1
12187
# check MIN/MAX(f_int1) success: 1
12188
# check MIN/MAX(f_int2) success: 1
12189
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12190
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
12191
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
12192
WHERE f_int1 IN (2,3);
12193
# check prerequisites-3 success: 1
12194
DELETE FROM t1 WHERE f_charbig = 'delete me';
12195
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
12196
# check read via f_int1 success: 1
12197
# check read via f_int2 success: 1
12199
# check multiple-1 success: 1
12200
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
12202
# check multiple-2 success: 1
12203
INSERT INTO t1 SELECT * FROM t0_template
12204
WHERE MOD(f_int1,3) = 0;
12206
# check multiple-3 success: 1
12207
UPDATE t1 SET f_int1 = f_int1 + @max_row
12208
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
12209
AND @max_row_div2 + @max_row_div4;
12211
# check multiple-4 success: 1
12213
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
12214
AND @max_row_div2 + @max_row_div4 + @max_row;
12216
# check multiple-5 success: 1
12217
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
12219
SET f_int1 = @cur_value , f_int2 = @cur_value,
12220
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
12221
f_charbig = '#SINGLE#';
12223
# check single-1 success: 1
12224
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
12226
SET f_int1 = @cur_value , f_int2 = @cur_value,
12227
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
12228
f_charbig = '#SINGLE#';
12230
# check single-2 success: 1
12231
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
12232
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
12233
UPDATE t1 SET f_int1 = @cur_value2
12234
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
12236
# check single-3 success: 1
12237
SET @cur_value1= -1;
12238
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
12239
UPDATE t1 SET f_int1 = @cur_value1
12240
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
12242
# check single-4 success: 1
12243
SELECT MAX(f_int1) INTO @cur_value FROM t1;
12244
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
12246
# check single-5 success: 1
12247
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
12249
# check single-6 success: 1
12250
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
12252
# check single-7 success: 1
12253
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
12254
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
12255
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
12256
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
12257
f_charbig = '#NULL#';
12259
SET f_int1 = NULL , f_int2 = -@max_row,
12260
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
12261
f_charbig = '#NULL#';
12262
# check null success: 1
12264
# check null-1 success: 1
12265
UPDATE t1 SET f_int1 = -@max_row
12266
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
12267
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
12269
# check null-2 success: 1
12270
UPDATE t1 SET f_int1 = NULL
12271
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
12272
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
12274
# check null-3 success: 1
12276
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
12277
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
12279
# check null-4 success: 1
12281
WHERE f_int1 = 0 AND f_int2 = 0
12282
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
12283
AND f_charbig = '#NULL#';
12285
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12286
SELECT f_int1, f_int1, '', '', 'was inserted'
12287
FROM t0_template source_tab
12288
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
12290
# check transactions-1 success: 1
12293
# check transactions-2 success: 1
12296
# check transactions-3 success: 1
12297
DELETE FROM t1 WHERE f_charbig = 'was inserted';
12301
# check transactions-4 success: 1
12302
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12303
SELECT f_int1, f_int1, '', '', 'was inserted'
12304
FROM t0_template source_tab
12305
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
12307
# check transactions-5 success: 1
12310
Warning 1196 Some non-transactional changed tables couldn't be rolled back
12312
# check transactions-6 success: 1
12313
# INFO: Storage engine used for t1 seems to be not transactional.
12316
# check transactions-7 success: 1
12317
DELETE FROM t1 WHERE f_charbig = 'was inserted';
12319
SET @@session.sql_mode = 'traditional';
12320
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
12321
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12322
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
12323
'', '', 'was inserted' FROM t0_template
12324
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
12325
ERROR 22012: Division by 0
12328
# check transactions-8 success: 1
12329
# INFO: Storage engine used for t1 seems to be unable to revert
12330
# changes made by the failing statement.
12331
SET @@session.sql_mode = '';
12333
DELETE FROM t1 WHERE f_charbig = 'was inserted';
12335
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
12337
# check special-1 success: 1
12338
UPDATE t1 SET f_charbig = '';
12340
# check special-2 success: 1
12341
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
12342
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
12343
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
12344
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12345
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12346
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12347
'just inserted' FROM t0_template
12348
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12349
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
12351
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12352
f_charbig = 'updated by trigger'
12353
WHERE f_int1 = new.f_int1;
12355
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12356
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
12357
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12359
# check trigger-1 success: 1
12360
DROP TRIGGER trg_1;
12361
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12362
f_int2 = CAST(f_char1 AS SIGNED INT),
12363
f_charbig = 'just inserted'
12364
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12366
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12367
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12368
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12369
'just inserted' FROM t0_template
12370
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12371
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
12373
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12374
f_charbig = 'updated by trigger'
12375
WHERE f_int1 = new.f_int1;
12377
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12378
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
12379
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12381
# check trigger-2 success: 1
12382
DROP TRIGGER trg_1;
12383
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12384
f_int2 = CAST(f_char1 AS SIGNED INT),
12385
f_charbig = 'just inserted'
12386
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12388
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12389
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12390
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12391
'just inserted' FROM t0_template
12392
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12393
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
12395
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12396
f_charbig = 'updated by trigger'
12397
WHERE f_int1 = new.f_int1;
12399
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
12400
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12402
# check trigger-3 success: 1
12403
DROP TRIGGER trg_1;
12404
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12405
f_int2 = CAST(f_char1 AS SIGNED INT),
12406
f_charbig = 'just inserted'
12407
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12409
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12410
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12411
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12412
'just inserted' FROM t0_template
12413
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12414
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
12416
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12417
f_charbig = 'updated by trigger'
12418
WHERE f_int1 = - old.f_int1;
12420
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
12421
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12423
# check trigger-4 success: 1
12424
DROP TRIGGER trg_1;
12425
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12426
f_int2 = CAST(f_char1 AS SIGNED INT),
12427
f_charbig = 'just inserted'
12428
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12430
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12431
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12432
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12433
'just inserted' FROM t0_template
12434
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12435
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
12437
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12438
f_charbig = 'updated by trigger'
12439
WHERE f_int1 = new.f_int1;
12441
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
12442
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12444
# check trigger-5 success: 1
12445
DROP TRIGGER trg_1;
12446
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12447
f_int2 = CAST(f_char1 AS SIGNED INT),
12448
f_charbig = 'just inserted'
12449
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12451
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12452
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12453
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12454
'just inserted' FROM t0_template
12455
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12456
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
12458
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12459
f_charbig = 'updated by trigger'
12460
WHERE f_int1 = - old.f_int1;
12462
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
12463
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12465
# check trigger-6 success: 1
12466
DROP TRIGGER trg_1;
12467
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12468
f_int2 = CAST(f_char1 AS SIGNED INT),
12469
f_charbig = 'just inserted'
12470
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12472
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12473
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12474
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12475
'just inserted' FROM t0_template
12476
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12477
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
12479
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12480
f_charbig = 'updated by trigger'
12481
WHERE f_int1 = - old.f_int1;
12484
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12486
# check trigger-7 success: 1
12487
DROP TRIGGER trg_1;
12488
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12489
f_int2 = CAST(f_char1 AS SIGNED INT),
12490
f_charbig = 'just inserted'
12491
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12493
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12494
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12495
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12496
'just inserted' FROM t0_template
12497
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12498
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
12500
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12501
f_charbig = 'updated by trigger'
12502
WHERE f_int1 = - old.f_int1;
12505
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12507
# check trigger-8 success: 1
12508
DROP TRIGGER trg_1;
12509
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12510
f_int2 = CAST(f_char1 AS SIGNED INT),
12511
f_charbig = 'just inserted'
12512
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12514
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12516
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12517
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
12519
SET new.f_int1 = old.f_int1 + @max_row,
12520
new.f_int2 = old.f_int2 - @max_row,
12521
new.f_charbig = '####updated per update trigger####';
12524
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
12525
f_charbig = '####updated per update statement itself####';
12527
# check trigger-9 success: 1
12528
DROP TRIGGER trg_2;
12529
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12530
f_int2 = CAST(f_char1 AS SIGNED INT),
12531
f_charbig = CONCAT('===',f_char1,'===');
12532
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
12534
SET new.f_int1 = new.f_int1 + @max_row,
12535
new.f_int2 = new.f_int2 - @max_row,
12536
new.f_charbig = '####updated per update trigger####';
12539
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
12540
f_charbig = '####updated per update statement itself####';
12542
# check trigger-10 success: 1
12543
DROP TRIGGER trg_2;
12544
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12545
f_int2 = CAST(f_char1 AS SIGNED INT),
12546
f_charbig = CONCAT('===',f_char1,'===');
12547
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
12549
SET new.f_int1 = @my_max1 + @counter,
12550
new.f_int2 = @my_min2 - @counter,
12551
new.f_charbig = '####updated per insert trigger####';
12552
SET @counter = @counter + 1;
12555
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
12556
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12557
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
12558
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
12559
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
12561
DROP TRIGGER trg_3;
12563
# check trigger-11 success: 1
12565
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
12566
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
12567
AND f_charbig = '####updated per insert trigger####';
12568
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
12570
SET new.f_int1 = @my_max1 + @counter,
12571
new.f_int2 = @my_min2 - @counter,
12572
new.f_charbig = '####updated per insert trigger####';
12573
SET @counter = @counter + 1;
12576
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
12577
INSERT INTO t1 (f_char1, f_char2, f_charbig)
12578
SELECT CAST(f_int1 AS CHAR),
12579
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
12580
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
12582
DROP TRIGGER trg_3;
12584
# check trigger-12 success: 1
12586
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
12587
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
12588
AND f_charbig = '####updated per insert trigger####';
12590
Table Op Msg_type Msg_text
12591
test.t1 analyze status OK
12592
CHECK TABLE t1 EXTENDED;
12593
Table Op Msg_type Msg_text
12594
test.t1 check status OK
12595
CHECKSUM TABLE t1 EXTENDED;
12597
test.t1 <some_value>
12599
Table Op Msg_type Msg_text
12600
test.t1 optimize status OK
12601
# check layout success: 1
12602
REPAIR TABLE t1 EXTENDED;
12603
Table Op Msg_type Msg_text
12604
test.t1 repair status OK
12605
# check layout success: 1
12608
# check TRUNCATE success: 1
12609
# check layout success: 1
12610
# End usability test (inc/partition_check.inc)
12617
f_charbig VARCHAR(1000)
12618
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
12620
PARTITION BY LIST(MOD(f_int1 + f_int2,4))
12621
(PARTITION part_3 VALUES IN (-3),
12622
PARTITION part_2 VALUES IN (-2),
12623
PARTITION part_1 VALUES IN (-1),
12624
PARTITION part_N VALUES IN (NULL),
12625
PARTITION part0 VALUES IN (0),
12626
PARTITION part1 VALUES IN (1),
12627
PARTITION part2 VALUES IN (2),
12628
PARTITION part3 VALUES IN (3));
12629
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
12630
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
12631
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
12632
ALTER TABLE t1 DROP INDEX uidx1, DROP INDEX uidx2;
12633
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
12634
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
12635
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
12636
# Start usability test (inc/partition_check.inc)
12638
SHOW CREATE TABLE t1;
12640
t1 CREATE TABLE `t1` (
12641
`f_int1` int(11) DEFAULT NULL,
12642
`f_int2` int(11) DEFAULT NULL,
12643
`f_char1` char(20) DEFAULT NULL,
12644
`f_char2` char(20) DEFAULT NULL,
12645
`f_charbig` varchar(1000) DEFAULT NULL
12646
) ENGINE=MyISAM DEFAULT CHARSET=latin1
12647
/*!50100 PARTITION BY LIST (MOD(f_int1 + f_int2,4))
12648
(PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM,
12649
PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM,
12650
PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM,
12651
PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM,
12652
PARTITION part0 VALUES IN (0) ENGINE = MyISAM,
12653
PARTITION part1 VALUES IN (1) ENGINE = MyISAM,
12654
PARTITION part2 VALUES IN (2) ENGINE = MyISAM,
12655
PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */
12677
# check prerequisites-1 success: 1
12678
# check COUNT(*) success: 1
12679
# check MIN/MAX(f_int1) success: 1
12680
# check MIN/MAX(f_int2) success: 1
12681
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12682
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
12683
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
12684
WHERE f_int1 IN (2,3);
12685
# check prerequisites-3 success: 1
12686
DELETE FROM t1 WHERE f_charbig = 'delete me';
12687
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
12688
# check read via f_int1 success: 1
12689
# check read via f_int2 success: 1
12691
# check multiple-1 success: 1
12692
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
12694
# check multiple-2 success: 1
12695
INSERT INTO t1 SELECT * FROM t0_template
12696
WHERE MOD(f_int1,3) = 0;
12698
# check multiple-3 success: 1
12699
UPDATE t1 SET f_int1 = f_int1 + @max_row
12700
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
12701
AND @max_row_div2 + @max_row_div4;
12703
# check multiple-4 success: 1
12705
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
12706
AND @max_row_div2 + @max_row_div4 + @max_row;
12708
# check multiple-5 success: 1
12709
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
12711
SET f_int1 = @cur_value , f_int2 = @cur_value,
12712
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
12713
f_charbig = '#SINGLE#';
12715
# check single-1 success: 1
12716
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
12718
SET f_int1 = @cur_value , f_int2 = @cur_value,
12719
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
12720
f_charbig = '#SINGLE#';
12722
# check single-2 success: 1
12723
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
12724
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
12725
UPDATE t1 SET f_int1 = @cur_value2
12726
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
12728
# check single-3 success: 1
12729
SET @cur_value1= -1;
12730
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
12731
UPDATE t1 SET f_int1 = @cur_value1
12732
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
12734
# check single-4 success: 1
12735
SELECT MAX(f_int1) INTO @cur_value FROM t1;
12736
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
12738
# check single-5 success: 1
12739
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
12741
# check single-6 success: 1
12742
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
12744
# check single-7 success: 1
12745
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
12746
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
12747
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
12748
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
12749
f_charbig = '#NULL#';
12751
SET f_int1 = NULL , f_int2 = -@max_row,
12752
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
12753
f_charbig = '#NULL#';
12754
# check null success: 1
12756
# check null-1 success: 1
12757
UPDATE t1 SET f_int1 = -@max_row
12758
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
12759
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
12761
# check null-2 success: 1
12762
UPDATE t1 SET f_int1 = NULL
12763
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
12764
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
12766
# check null-3 success: 1
12768
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
12769
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
12771
# check null-4 success: 1
12773
WHERE f_int1 = 0 AND f_int2 = 0
12774
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
12775
AND f_charbig = '#NULL#';
12777
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12778
SELECT f_int1, f_int1, '', '', 'was inserted'
12779
FROM t0_template source_tab
12780
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
12782
# check transactions-1 success: 1
12785
# check transactions-2 success: 1
12788
# check transactions-3 success: 1
12789
DELETE FROM t1 WHERE f_charbig = 'was inserted';
12793
# check transactions-4 success: 1
12794
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12795
SELECT f_int1, f_int1, '', '', 'was inserted'
12796
FROM t0_template source_tab
12797
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
12799
# check transactions-5 success: 1
12802
Warning 1196 Some non-transactional changed tables couldn't be rolled back
12804
# check transactions-6 success: 1
12805
# INFO: Storage engine used for t1 seems to be not transactional.
12808
# check transactions-7 success: 1
12809
DELETE FROM t1 WHERE f_charbig = 'was inserted';
12811
SET @@session.sql_mode = 'traditional';
12812
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
12813
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12814
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
12815
'', '', 'was inserted' FROM t0_template
12816
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
12817
ERROR 22012: Division by 0
12820
# check transactions-8 success: 1
12821
# INFO: Storage engine used for t1 seems to be unable to revert
12822
# changes made by the failing statement.
12823
SET @@session.sql_mode = '';
12825
DELETE FROM t1 WHERE f_charbig = 'was inserted';
12827
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
12829
# check special-1 success: 1
12830
UPDATE t1 SET f_charbig = '';
12832
# check special-2 success: 1
12833
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
12834
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
12835
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
12836
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12837
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12838
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12839
'just inserted' FROM t0_template
12840
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12841
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
12843
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12844
f_charbig = 'updated by trigger'
12845
WHERE f_int1 = new.f_int1;
12847
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12848
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
12849
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12851
# check trigger-1 success: 1
12852
DROP TRIGGER trg_1;
12853
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12854
f_int2 = CAST(f_char1 AS SIGNED INT),
12855
f_charbig = 'just inserted'
12856
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12858
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12859
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12860
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12861
'just inserted' FROM t0_template
12862
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12863
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
12865
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12866
f_charbig = 'updated by trigger'
12867
WHERE f_int1 = new.f_int1;
12869
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12870
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
12871
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12873
# check trigger-2 success: 1
12874
DROP TRIGGER trg_1;
12875
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12876
f_int2 = CAST(f_char1 AS SIGNED INT),
12877
f_charbig = 'just inserted'
12878
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12880
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12881
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12882
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12883
'just inserted' FROM t0_template
12884
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12885
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
12887
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12888
f_charbig = 'updated by trigger'
12889
WHERE f_int1 = new.f_int1;
12891
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
12892
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12894
# check trigger-3 success: 1
12895
DROP TRIGGER trg_1;
12896
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12897
f_int2 = CAST(f_char1 AS SIGNED INT),
12898
f_charbig = 'just inserted'
12899
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12901
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12902
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12903
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12904
'just inserted' FROM t0_template
12905
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12906
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
12908
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12909
f_charbig = 'updated by trigger'
12910
WHERE f_int1 = - old.f_int1;
12912
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
12913
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12915
# check trigger-4 success: 1
12916
DROP TRIGGER trg_1;
12917
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12918
f_int2 = CAST(f_char1 AS SIGNED INT),
12919
f_charbig = 'just inserted'
12920
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12922
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12923
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12924
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12925
'just inserted' FROM t0_template
12926
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12927
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
12929
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12930
f_charbig = 'updated by trigger'
12931
WHERE f_int1 = new.f_int1;
12933
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
12934
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12936
# check trigger-5 success: 1
12937
DROP TRIGGER trg_1;
12938
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12939
f_int2 = CAST(f_char1 AS SIGNED INT),
12940
f_charbig = 'just inserted'
12941
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12943
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12944
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12945
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12946
'just inserted' FROM t0_template
12947
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12948
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
12950
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12951
f_charbig = 'updated by trigger'
12952
WHERE f_int1 = - old.f_int1;
12954
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
12955
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12957
# check trigger-6 success: 1
12958
DROP TRIGGER trg_1;
12959
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12960
f_int2 = CAST(f_char1 AS SIGNED INT),
12961
f_charbig = 'just inserted'
12962
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12964
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12965
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12966
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12967
'just inserted' FROM t0_template
12968
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12969
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
12971
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12972
f_charbig = 'updated by trigger'
12973
WHERE f_int1 = - old.f_int1;
12976
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12978
# check trigger-7 success: 1
12979
DROP TRIGGER trg_1;
12980
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12981
f_int2 = CAST(f_char1 AS SIGNED INT),
12982
f_charbig = 'just inserted'
12983
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12985
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12986
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12987
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12988
'just inserted' FROM t0_template
12989
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12990
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
12992
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12993
f_charbig = 'updated by trigger'
12994
WHERE f_int1 = - old.f_int1;
12997
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12999
# check trigger-8 success: 1
13000
DROP TRIGGER trg_1;
13001
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13002
f_int2 = CAST(f_char1 AS SIGNED INT),
13003
f_charbig = 'just inserted'
13004
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13006
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13008
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13009
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
13011
SET new.f_int1 = old.f_int1 + @max_row,
13012
new.f_int2 = old.f_int2 - @max_row,
13013
new.f_charbig = '####updated per update trigger####';
13016
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
13017
f_charbig = '####updated per update statement itself####';
13019
# check trigger-9 success: 1
13020
DROP TRIGGER trg_2;
13021
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13022
f_int2 = CAST(f_char1 AS SIGNED INT),
13023
f_charbig = CONCAT('===',f_char1,'===');
13024
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
13026
SET new.f_int1 = new.f_int1 + @max_row,
13027
new.f_int2 = new.f_int2 - @max_row,
13028
new.f_charbig = '####updated per update trigger####';
13031
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
13032
f_charbig = '####updated per update statement itself####';
13034
# check trigger-10 success: 1
13035
DROP TRIGGER trg_2;
13036
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13037
f_int2 = CAST(f_char1 AS SIGNED INT),
13038
f_charbig = CONCAT('===',f_char1,'===');
13039
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
13041
SET new.f_int1 = @my_max1 + @counter,
13042
new.f_int2 = @my_min2 - @counter,
13043
new.f_charbig = '####updated per insert trigger####';
13044
SET @counter = @counter + 1;
13047
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
13048
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13049
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
13050
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
13051
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
13053
DROP TRIGGER trg_3;
13055
# check trigger-11 success: 1
13057
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
13058
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
13059
AND f_charbig = '####updated per insert trigger####';
13060
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
13062
SET new.f_int1 = @my_max1 + @counter,
13063
new.f_int2 = @my_min2 - @counter,
13064
new.f_charbig = '####updated per insert trigger####';
13065
SET @counter = @counter + 1;
13068
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
13069
INSERT INTO t1 (f_char1, f_char2, f_charbig)
13070
SELECT CAST(f_int1 AS CHAR),
13071
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
13072
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
13074
DROP TRIGGER trg_3;
13076
# check trigger-12 success: 1
13078
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
13079
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
13080
AND f_charbig = '####updated per insert trigger####';
13082
Table Op Msg_type Msg_text
13083
test.t1 analyze status OK
13084
CHECK TABLE t1 EXTENDED;
13085
Table Op Msg_type Msg_text
13086
test.t1 check status OK
13087
CHECKSUM TABLE t1 EXTENDED;
13089
test.t1 <some_value>
13091
Table Op Msg_type Msg_text
13092
test.t1 optimize status OK
13093
# check layout success: 1
13094
REPAIR TABLE t1 EXTENDED;
13095
Table Op Msg_type Msg_text
13096
test.t1 repair status OK
13097
# check layout success: 1
13100
# check TRUNCATE success: 1
13101
# check layout success: 1
13102
# End usability test (inc/partition_check.inc)
13109
f_charbig VARCHAR(1000)
13110
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
13112
PARTITION BY RANGE((f_int1 + f_int2) DIV 2)
13113
(PARTITION parta VALUES LESS THAN (0),
13114
PARTITION partb VALUES LESS THAN (5),
13115
PARTITION partc VALUES LESS THAN (10),
13116
PARTITION partd VALUES LESS THAN (10 + 5),
13117
PARTITION parte VALUES LESS THAN (20),
13118
PARTITION partf VALUES LESS THAN (2147483646));
13119
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
13120
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
13121
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
13122
ALTER TABLE t1 DROP INDEX uidx1, DROP INDEX uidx2;
13123
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
13124
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
13125
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
13126
# Start usability test (inc/partition_check.inc)
13128
SHOW CREATE TABLE t1;
13130
t1 CREATE TABLE `t1` (
13131
`f_int1` int(11) DEFAULT NULL,
13132
`f_int2` int(11) DEFAULT NULL,
13133
`f_char1` char(20) DEFAULT NULL,
13134
`f_char2` char(20) DEFAULT NULL,
13135
`f_charbig` varchar(1000) DEFAULT NULL
13136
) ENGINE=MyISAM DEFAULT CHARSET=latin1
13137
/*!50100 PARTITION BY RANGE ((f_int1 + f_int2) DIV 2)
13138
(PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM,
13139
PARTITION partb VALUES LESS THAN (5) ENGINE = MyISAM,
13140
PARTITION partc VALUES LESS THAN (10) ENGINE = MyISAM,
13141
PARTITION partd VALUES LESS THAN (15) ENGINE = MyISAM,
13142
PARTITION parte VALUES LESS THAN (20) ENGINE = MyISAM,
13143
PARTITION partf VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
13161
# check prerequisites-1 success: 1
13162
# check COUNT(*) success: 1
13163
# check MIN/MAX(f_int1) success: 1
13164
# check MIN/MAX(f_int2) success: 1
13165
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13166
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
13167
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
13168
WHERE f_int1 IN (2,3);
13169
# check prerequisites-3 success: 1
13170
DELETE FROM t1 WHERE f_charbig = 'delete me';
13171
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
13172
# check read via f_int1 success: 1
13173
# check read via f_int2 success: 1
13175
# check multiple-1 success: 1
13176
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
13178
# check multiple-2 success: 1
13179
INSERT INTO t1 SELECT * FROM t0_template
13180
WHERE MOD(f_int1,3) = 0;
13182
# check multiple-3 success: 1
13183
UPDATE t1 SET f_int1 = f_int1 + @max_row
13184
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
13185
AND @max_row_div2 + @max_row_div4;
13187
# check multiple-4 success: 1
13189
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
13190
AND @max_row_div2 + @max_row_div4 + @max_row;
13192
# check multiple-5 success: 1
13193
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
13195
SET f_int1 = @cur_value , f_int2 = @cur_value,
13196
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
13197
f_charbig = '#SINGLE#';
13199
# check single-1 success: 1
13200
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
13202
SET f_int1 = @cur_value , f_int2 = @cur_value,
13203
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
13204
f_charbig = '#SINGLE#';
13206
# check single-2 success: 1
13207
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
13208
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
13209
UPDATE t1 SET f_int1 = @cur_value2
13210
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
13212
# check single-3 success: 1
13213
SET @cur_value1= -1;
13214
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
13215
UPDATE t1 SET f_int1 = @cur_value1
13216
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
13218
# check single-4 success: 1
13219
SELECT MAX(f_int1) INTO @cur_value FROM t1;
13220
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
13222
# check single-5 success: 1
13223
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
13225
# check single-6 success: 1
13226
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
13227
ERROR HY000: Table has no partition for value 2147483647
13228
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
13229
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
13230
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
13231
f_charbig = '#NULL#';
13233
SET f_int1 = NULL , f_int2 = -@max_row,
13234
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
13235
f_charbig = '#NULL#';
13236
# check null success: 1
13238
# check null-1 success: 1
13239
UPDATE t1 SET f_int1 = -@max_row
13240
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
13241
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
13243
# check null-2 success: 1
13244
UPDATE t1 SET f_int1 = NULL
13245
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
13246
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
13248
# check null-3 success: 1
13250
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
13251
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
13253
# check null-4 success: 1
13255
WHERE f_int1 = 0 AND f_int2 = 0
13256
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
13257
AND f_charbig = '#NULL#';
13259
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13260
SELECT f_int1, f_int1, '', '', 'was inserted'
13261
FROM t0_template source_tab
13262
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
13264
# check transactions-1 success: 1
13267
# check transactions-2 success: 1
13270
# check transactions-3 success: 1
13271
DELETE FROM t1 WHERE f_charbig = 'was inserted';
13275
# check transactions-4 success: 1
13276
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13277
SELECT f_int1, f_int1, '', '', 'was inserted'
13278
FROM t0_template source_tab
13279
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
13281
# check transactions-5 success: 1
13284
Warning 1196 Some non-transactional changed tables couldn't be rolled back
13286
# check transactions-6 success: 1
13287
# INFO: Storage engine used for t1 seems to be not transactional.
13290
# check transactions-7 success: 1
13291
DELETE FROM t1 WHERE f_charbig = 'was inserted';
13293
SET @@session.sql_mode = 'traditional';
13294
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
13295
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13296
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
13297
'', '', 'was inserted' FROM t0_template
13298
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
13299
ERROR 22012: Division by 0
13302
# check transactions-8 success: 1
13303
# INFO: Storage engine used for t1 seems to be unable to revert
13304
# changes made by the failing statement.
13305
SET @@session.sql_mode = '';
13307
DELETE FROM t1 WHERE f_charbig = 'was inserted';
13309
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
13311
# check special-1 success: 1
13312
UPDATE t1 SET f_charbig = '';
13314
# check special-2 success: 1
13315
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
13316
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
13317
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
13318
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13319
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13320
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13321
'just inserted' FROM t0_template
13322
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13323
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
13325
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13326
f_charbig = 'updated by trigger'
13327
WHERE f_int1 = new.f_int1;
13329
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13330
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
13331
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13333
# check trigger-1 success: 1
13334
DROP TRIGGER trg_1;
13335
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13336
f_int2 = CAST(f_char1 AS SIGNED INT),
13337
f_charbig = 'just inserted'
13338
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13340
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13341
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13342
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13343
'just inserted' FROM t0_template
13344
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13345
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
13347
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13348
f_charbig = 'updated by trigger'
13349
WHERE f_int1 = new.f_int1;
13351
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13352
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
13353
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13355
# check trigger-2 success: 1
13356
DROP TRIGGER trg_1;
13357
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13358
f_int2 = CAST(f_char1 AS SIGNED INT),
13359
f_charbig = 'just inserted'
13360
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13362
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13363
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13364
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13365
'just inserted' FROM t0_template
13366
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13367
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
13369
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13370
f_charbig = 'updated by trigger'
13371
WHERE f_int1 = new.f_int1;
13373
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
13374
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13376
# check trigger-3 success: 1
13377
DROP TRIGGER trg_1;
13378
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13379
f_int2 = CAST(f_char1 AS SIGNED INT),
13380
f_charbig = 'just inserted'
13381
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13383
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13384
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13385
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13386
'just inserted' FROM t0_template
13387
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13388
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
13390
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13391
f_charbig = 'updated by trigger'
13392
WHERE f_int1 = - old.f_int1;
13394
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
13395
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13397
# check trigger-4 success: 1
13398
DROP TRIGGER trg_1;
13399
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13400
f_int2 = CAST(f_char1 AS SIGNED INT),
13401
f_charbig = 'just inserted'
13402
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13404
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13405
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13406
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13407
'just inserted' FROM t0_template
13408
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13409
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
13411
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13412
f_charbig = 'updated by trigger'
13413
WHERE f_int1 = new.f_int1;
13415
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
13416
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13418
# check trigger-5 success: 1
13419
DROP TRIGGER trg_1;
13420
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13421
f_int2 = CAST(f_char1 AS SIGNED INT),
13422
f_charbig = 'just inserted'
13423
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13425
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13426
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13427
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13428
'just inserted' FROM t0_template
13429
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13430
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
13432
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13433
f_charbig = 'updated by trigger'
13434
WHERE f_int1 = - old.f_int1;
13436
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
13437
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13439
# check trigger-6 success: 1
13440
DROP TRIGGER trg_1;
13441
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13442
f_int2 = CAST(f_char1 AS SIGNED INT),
13443
f_charbig = 'just inserted'
13444
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13446
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13447
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13448
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13449
'just inserted' FROM t0_template
13450
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13451
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
13453
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13454
f_charbig = 'updated by trigger'
13455
WHERE f_int1 = - old.f_int1;
13458
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13460
# check trigger-7 success: 1
13461
DROP TRIGGER trg_1;
13462
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13463
f_int2 = CAST(f_char1 AS SIGNED INT),
13464
f_charbig = 'just inserted'
13465
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13467
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13468
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13469
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13470
'just inserted' FROM t0_template
13471
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13472
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
13474
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13475
f_charbig = 'updated by trigger'
13476
WHERE f_int1 = - old.f_int1;
13479
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13481
# check trigger-8 success: 1
13482
DROP TRIGGER trg_1;
13483
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13484
f_int2 = CAST(f_char1 AS SIGNED INT),
13485
f_charbig = 'just inserted'
13486
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13488
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13490
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13491
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
13493
SET new.f_int1 = old.f_int1 + @max_row,
13494
new.f_int2 = old.f_int2 - @max_row,
13495
new.f_charbig = '####updated per update trigger####';
13498
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
13499
f_charbig = '####updated per update statement itself####';
13501
# check trigger-9 success: 1
13502
DROP TRIGGER trg_2;
13503
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13504
f_int2 = CAST(f_char1 AS SIGNED INT),
13505
f_charbig = CONCAT('===',f_char1,'===');
13506
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
13508
SET new.f_int1 = new.f_int1 + @max_row,
13509
new.f_int2 = new.f_int2 - @max_row,
13510
new.f_charbig = '####updated per update trigger####';
13513
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
13514
f_charbig = '####updated per update statement itself####';
13516
# check trigger-10 success: 1
13517
DROP TRIGGER trg_2;
13518
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13519
f_int2 = CAST(f_char1 AS SIGNED INT),
13520
f_charbig = CONCAT('===',f_char1,'===');
13521
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
13523
SET new.f_int1 = @my_max1 + @counter,
13524
new.f_int2 = @my_min2 - @counter,
13525
new.f_charbig = '####updated per insert trigger####';
13526
SET @counter = @counter + 1;
13529
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
13530
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13531
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
13532
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
13533
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
13535
DROP TRIGGER trg_3;
13537
# check trigger-11 success: 1
13539
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
13540
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
13541
AND f_charbig = '####updated per insert trigger####';
13542
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
13544
SET new.f_int1 = @my_max1 + @counter,
13545
new.f_int2 = @my_min2 - @counter,
13546
new.f_charbig = '####updated per insert trigger####';
13547
SET @counter = @counter + 1;
13550
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
13551
INSERT INTO t1 (f_char1, f_char2, f_charbig)
13552
SELECT CAST(f_int1 AS CHAR),
13553
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
13554
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
13556
DROP TRIGGER trg_3;
13558
# check trigger-12 success: 1
13560
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
13561
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
13562
AND f_charbig = '####updated per insert trigger####';
13564
Table Op Msg_type Msg_text
13565
test.t1 analyze status OK
13566
CHECK TABLE t1 EXTENDED;
13567
Table Op Msg_type Msg_text
13568
test.t1 check status OK
13569
CHECKSUM TABLE t1 EXTENDED;
13571
test.t1 <some_value>
13573
Table Op Msg_type Msg_text
13574
test.t1 optimize status OK
13575
# check layout success: 1
13576
REPAIR TABLE t1 EXTENDED;
13577
Table Op Msg_type Msg_text
13578
test.t1 repair status OK
13579
# check layout success: 1
13582
# check TRUNCATE success: 1
13583
# check layout success: 1
13584
# End usability test (inc/partition_check.inc)
13591
f_charbig VARCHAR(1000)
13592
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
13594
PARTITION BY RANGE(f_int1) SUBPARTITION BY HASH(f_int2) SUBPARTITIONS 2
13595
(PARTITION parta VALUES LESS THAN (0),
13596
PARTITION partb VALUES LESS THAN (5),
13597
PARTITION partc VALUES LESS THAN (10),
13598
PARTITION partd VALUES LESS THAN (2147483646));
13599
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
13600
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
13601
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
13602
ALTER TABLE t1 DROP INDEX uidx1, DROP INDEX uidx2;
13603
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
13604
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
13605
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
13606
# Start usability test (inc/partition_check.inc)
13608
SHOW CREATE TABLE t1;
13610
t1 CREATE TABLE `t1` (
13611
`f_int1` int(11) DEFAULT NULL,
13612
`f_int2` int(11) DEFAULT NULL,
13613
`f_char1` char(20) DEFAULT NULL,
13614
`f_char2` char(20) DEFAULT NULL,
13615
`f_charbig` varchar(1000) DEFAULT NULL
13616
) ENGINE=MyISAM DEFAULT CHARSET=latin1
13617
/*!50100 PARTITION BY RANGE (f_int1)
13618
SUBPARTITION BY HASH (f_int2)
13620
(PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM,
13621
PARTITION partb VALUES LESS THAN (5) ENGINE = MyISAM,
13622
PARTITION partc VALUES LESS THAN (10) ENGINE = MyISAM,
13623
PARTITION partd VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
13626
t1#P#parta#SP#partasp0.MYD
13627
t1#P#parta#SP#partasp0.MYI
13628
t1#P#parta#SP#partasp1.MYD
13629
t1#P#parta#SP#partasp1.MYI
13630
t1#P#partb#SP#partbsp0.MYD
13631
t1#P#partb#SP#partbsp0.MYI
13632
t1#P#partb#SP#partbsp1.MYD
13633
t1#P#partb#SP#partbsp1.MYI
13634
t1#P#partc#SP#partcsp0.MYD
13635
t1#P#partc#SP#partcsp0.MYI
13636
t1#P#partc#SP#partcsp1.MYD
13637
t1#P#partc#SP#partcsp1.MYI
13638
t1#P#partd#SP#partdsp0.MYD
13639
t1#P#partd#SP#partdsp0.MYI
13640
t1#P#partd#SP#partdsp1.MYD
13641
t1#P#partd#SP#partdsp1.MYI
13645
# check prerequisites-1 success: 1
13646
# check COUNT(*) success: 1
13647
# check MIN/MAX(f_int1) success: 1
13648
# check MIN/MAX(f_int2) success: 1
13649
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13650
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
13651
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
13652
WHERE f_int1 IN (2,3);
13653
# check prerequisites-3 success: 1
13654
DELETE FROM t1 WHERE f_charbig = 'delete me';
13655
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
13656
# check read via f_int1 success: 1
13657
# check read via f_int2 success: 1
13659
# check multiple-1 success: 1
13660
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
13662
# check multiple-2 success: 1
13663
INSERT INTO t1 SELECT * FROM t0_template
13664
WHERE MOD(f_int1,3) = 0;
13666
# check multiple-3 success: 1
13667
UPDATE t1 SET f_int1 = f_int1 + @max_row
13668
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
13669
AND @max_row_div2 + @max_row_div4;
13671
# check multiple-4 success: 1
13673
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
13674
AND @max_row_div2 + @max_row_div4 + @max_row;
13676
# check multiple-5 success: 1
13677
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
13679
SET f_int1 = @cur_value , f_int2 = @cur_value,
13680
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
13681
f_charbig = '#SINGLE#';
13683
# check single-1 success: 1
13684
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
13686
SET f_int1 = @cur_value , f_int2 = @cur_value,
13687
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
13688
f_charbig = '#SINGLE#';
13690
# check single-2 success: 1
13691
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
13692
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
13693
UPDATE t1 SET f_int1 = @cur_value2
13694
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
13696
# check single-3 success: 1
13697
SET @cur_value1= -1;
13698
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
13699
UPDATE t1 SET f_int1 = @cur_value1
13700
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
13702
# check single-4 success: 1
13703
SELECT MAX(f_int1) INTO @cur_value FROM t1;
13704
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
13706
# check single-5 success: 1
13707
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
13709
# check single-6 success: 1
13710
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
13711
ERROR HY000: Table has no partition for value 2147483647
13712
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
13713
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
13714
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
13715
f_charbig = '#NULL#';
13717
SET f_int1 = NULL , f_int2 = -@max_row,
13718
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
13719
f_charbig = '#NULL#';
13720
# check null success: 1
13722
# check null-1 success: 1
13723
UPDATE t1 SET f_int1 = -@max_row
13724
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
13725
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
13727
# check null-2 success: 1
13728
UPDATE t1 SET f_int1 = NULL
13729
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
13730
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
13732
# check null-3 success: 1
13734
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
13735
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
13737
# check null-4 success: 1
13739
WHERE f_int1 = 0 AND f_int2 = 0
13740
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
13741
AND f_charbig = '#NULL#';
13743
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13744
SELECT f_int1, f_int1, '', '', 'was inserted'
13745
FROM t0_template source_tab
13746
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
13748
# check transactions-1 success: 1
13751
# check transactions-2 success: 1
13754
# check transactions-3 success: 1
13755
DELETE FROM t1 WHERE f_charbig = 'was inserted';
13759
# check transactions-4 success: 1
13760
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13761
SELECT f_int1, f_int1, '', '', 'was inserted'
13762
FROM t0_template source_tab
13763
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
13765
# check transactions-5 success: 1
13768
Warning 1196 Some non-transactional changed tables couldn't be rolled back
13770
# check transactions-6 success: 1
13771
# INFO: Storage engine used for t1 seems to be not transactional.
13774
# check transactions-7 success: 1
13775
DELETE FROM t1 WHERE f_charbig = 'was inserted';
13777
SET @@session.sql_mode = 'traditional';
13778
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
13779
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13780
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
13781
'', '', 'was inserted' FROM t0_template
13782
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
13783
ERROR 22012: Division by 0
13786
# check transactions-8 success: 1
13787
# INFO: Storage engine used for t1 seems to be unable to revert
13788
# changes made by the failing statement.
13789
SET @@session.sql_mode = '';
13791
DELETE FROM t1 WHERE f_charbig = 'was inserted';
13793
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
13795
# check special-1 success: 1
13796
UPDATE t1 SET f_charbig = '';
13798
# check special-2 success: 1
13799
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
13800
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
13801
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
13802
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13803
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13804
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13805
'just inserted' FROM t0_template
13806
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13807
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
13809
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13810
f_charbig = 'updated by trigger'
13811
WHERE f_int1 = new.f_int1;
13813
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13814
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
13815
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13817
# check trigger-1 success: 1
13818
DROP TRIGGER trg_1;
13819
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13820
f_int2 = CAST(f_char1 AS SIGNED INT),
13821
f_charbig = 'just inserted'
13822
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13824
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13825
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13826
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13827
'just inserted' FROM t0_template
13828
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13829
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
13831
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13832
f_charbig = 'updated by trigger'
13833
WHERE f_int1 = new.f_int1;
13835
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13836
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
13837
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13839
# check trigger-2 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;
13847
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13848
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13849
'just inserted' FROM t0_template
13850
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13851
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
13853
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13854
f_charbig = 'updated by trigger'
13855
WHERE f_int1 = new.f_int1;
13857
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
13858
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13860
# check trigger-3 success: 1
13861
DROP TRIGGER trg_1;
13862
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13863
f_int2 = CAST(f_char1 AS SIGNED INT),
13864
f_charbig = 'just inserted'
13865
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13867
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13868
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13869
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13870
'just inserted' FROM t0_template
13871
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13872
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
13874
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13875
f_charbig = 'updated by trigger'
13876
WHERE f_int1 = - old.f_int1;
13878
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
13879
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13881
# check trigger-4 success: 1
13882
DROP TRIGGER trg_1;
13883
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13884
f_int2 = CAST(f_char1 AS SIGNED INT),
13885
f_charbig = 'just inserted'
13886
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13888
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13889
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13890
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13891
'just inserted' FROM t0_template
13892
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13893
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
13895
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13896
f_charbig = 'updated by trigger'
13897
WHERE f_int1 = new.f_int1;
13899
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
13900
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13902
# check trigger-5 success: 1
13903
DROP TRIGGER trg_1;
13904
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13905
f_int2 = CAST(f_char1 AS SIGNED INT),
13906
f_charbig = 'just inserted'
13907
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13909
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13910
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13911
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13912
'just inserted' FROM t0_template
13913
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13914
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
13916
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13917
f_charbig = 'updated by trigger'
13918
WHERE f_int1 = - old.f_int1;
13920
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
13921
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13923
# check trigger-6 success: 1
13924
DROP TRIGGER trg_1;
13925
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13926
f_int2 = CAST(f_char1 AS SIGNED INT),
13927
f_charbig = 'just inserted'
13928
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13930
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13931
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13932
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13933
'just inserted' FROM t0_template
13934
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13935
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
13937
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13938
f_charbig = 'updated by trigger'
13939
WHERE f_int1 = - old.f_int1;
13942
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13944
# check trigger-7 success: 1
13945
DROP TRIGGER trg_1;
13946
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13947
f_int2 = CAST(f_char1 AS SIGNED INT),
13948
f_charbig = 'just inserted'
13949
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13951
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13952
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13953
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13954
'just inserted' FROM t0_template
13955
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13956
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
13958
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13959
f_charbig = 'updated by trigger'
13960
WHERE f_int1 = - old.f_int1;
13963
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13965
# check trigger-8 success: 1
13966
DROP TRIGGER trg_1;
13967
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13968
f_int2 = CAST(f_char1 AS SIGNED INT),
13969
f_charbig = 'just inserted'
13970
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13972
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13974
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13975
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
13977
SET new.f_int1 = old.f_int1 + @max_row,
13978
new.f_int2 = old.f_int2 - @max_row,
13979
new.f_charbig = '####updated per update trigger####';
13982
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
13983
f_charbig = '####updated per update statement itself####';
13985
# check trigger-9 success: 1
13986
DROP TRIGGER trg_2;
13987
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13988
f_int2 = CAST(f_char1 AS SIGNED INT),
13989
f_charbig = CONCAT('===',f_char1,'===');
13990
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
13992
SET new.f_int1 = new.f_int1 + @max_row,
13993
new.f_int2 = new.f_int2 - @max_row,
13994
new.f_charbig = '####updated per update trigger####';
13997
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
13998
f_charbig = '####updated per update statement itself####';
14000
# check trigger-10 success: 1
14001
DROP TRIGGER trg_2;
14002
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14003
f_int2 = CAST(f_char1 AS SIGNED INT),
14004
f_charbig = CONCAT('===',f_char1,'===');
14005
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
14007
SET new.f_int1 = @my_max1 + @counter,
14008
new.f_int2 = @my_min2 - @counter,
14009
new.f_charbig = '####updated per insert trigger####';
14010
SET @counter = @counter + 1;
14013
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
14014
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14015
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
14016
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
14017
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
14019
DROP TRIGGER trg_3;
14021
# check trigger-11 success: 1
14023
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
14024
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
14025
AND f_charbig = '####updated per insert trigger####';
14026
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
14028
SET new.f_int1 = @my_max1 + @counter,
14029
new.f_int2 = @my_min2 - @counter,
14030
new.f_charbig = '####updated per insert trigger####';
14031
SET @counter = @counter + 1;
14034
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
14035
INSERT INTO t1 (f_char1, f_char2, f_charbig)
14036
SELECT CAST(f_int1 AS CHAR),
14037
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
14038
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
14040
DROP TRIGGER trg_3;
14042
# check trigger-12 success: 1
14044
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
14045
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
14046
AND f_charbig = '####updated per insert trigger####';
14048
Table Op Msg_type Msg_text
14049
test.t1 analyze status OK
14050
CHECK TABLE t1 EXTENDED;
14051
Table Op Msg_type Msg_text
14052
test.t1 check status OK
14053
CHECKSUM TABLE t1 EXTENDED;
14055
test.t1 <some_value>
14057
Table Op Msg_type Msg_text
14058
test.t1 optimize status OK
14059
# check layout success: 1
14060
REPAIR TABLE t1 EXTENDED;
14061
Table Op Msg_type Msg_text
14062
test.t1 repair status OK
14063
# check layout success: 1
14066
# check TRUNCATE success: 1
14067
# check layout success: 1
14068
# End usability test (inc/partition_check.inc)
14075
f_charbig VARCHAR(1000)
14076
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
14078
PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int2)
14079
(PARTITION part1 VALUES LESS THAN (0)
14080
(SUBPARTITION subpart11, SUBPARTITION subpart12),
14081
PARTITION part2 VALUES LESS THAN (5)
14082
(SUBPARTITION subpart21, SUBPARTITION subpart22),
14083
PARTITION part3 VALUES LESS THAN (10)
14084
(SUBPARTITION subpart31, SUBPARTITION subpart32),
14085
PARTITION part4 VALUES LESS THAN (2147483646)
14086
(SUBPARTITION subpart41, SUBPARTITION subpart42));
14087
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
14088
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
14089
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
14090
ALTER TABLE t1 DROP INDEX uidx1, DROP INDEX uidx2;
14091
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
14092
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
14093
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
14094
# Start usability test (inc/partition_check.inc)
14096
SHOW CREATE TABLE t1;
14098
t1 CREATE TABLE `t1` (
14099
`f_int1` int(11) DEFAULT NULL,
14100
`f_int2` int(11) DEFAULT NULL,
14101
`f_char1` char(20) DEFAULT NULL,
14102
`f_char2` char(20) DEFAULT NULL,
14103
`f_charbig` varchar(1000) DEFAULT NULL
14104
) ENGINE=MyISAM DEFAULT CHARSET=latin1
14105
/*!50100 PARTITION BY RANGE (f_int1)
14106
SUBPARTITION BY KEY (f_int2)
14107
(PARTITION part1 VALUES LESS THAN (0)
14108
(SUBPARTITION subpart11 ENGINE = MyISAM,
14109
SUBPARTITION subpart12 ENGINE = MyISAM),
14110
PARTITION part2 VALUES LESS THAN (5)
14111
(SUBPARTITION subpart21 ENGINE = MyISAM,
14112
SUBPARTITION subpart22 ENGINE = MyISAM),
14113
PARTITION part3 VALUES LESS THAN (10)
14114
(SUBPARTITION subpart31 ENGINE = MyISAM,
14115
SUBPARTITION subpart32 ENGINE = MyISAM),
14116
PARTITION part4 VALUES LESS THAN (2147483646)
14117
(SUBPARTITION subpart41 ENGINE = MyISAM,
14118
SUBPARTITION subpart42 ENGINE = MyISAM)) */
14121
t1#P#part1#SP#subpart11.MYD
14122
t1#P#part1#SP#subpart11.MYI
14123
t1#P#part1#SP#subpart12.MYD
14124
t1#P#part1#SP#subpart12.MYI
14125
t1#P#part2#SP#subpart21.MYD
14126
t1#P#part2#SP#subpart21.MYI
14127
t1#P#part2#SP#subpart22.MYD
14128
t1#P#part2#SP#subpart22.MYI
14129
t1#P#part3#SP#subpart31.MYD
14130
t1#P#part3#SP#subpart31.MYI
14131
t1#P#part3#SP#subpart32.MYD
14132
t1#P#part3#SP#subpart32.MYI
14133
t1#P#part4#SP#subpart41.MYD
14134
t1#P#part4#SP#subpart41.MYI
14135
t1#P#part4#SP#subpart42.MYD
14136
t1#P#part4#SP#subpart42.MYI
14140
# check prerequisites-1 success: 1
14141
# check COUNT(*) success: 1
14142
# check MIN/MAX(f_int1) success: 1
14143
# check MIN/MAX(f_int2) success: 1
14144
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14145
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
14146
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
14147
WHERE f_int1 IN (2,3);
14148
# check prerequisites-3 success: 1
14149
DELETE FROM t1 WHERE f_charbig = 'delete me';
14150
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
14151
# check read via f_int1 success: 1
14152
# check read via f_int2 success: 1
14154
# check multiple-1 success: 1
14155
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
14157
# check multiple-2 success: 1
14158
INSERT INTO t1 SELECT * FROM t0_template
14159
WHERE MOD(f_int1,3) = 0;
14161
# check multiple-3 success: 1
14162
UPDATE t1 SET f_int1 = f_int1 + @max_row
14163
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
14164
AND @max_row_div2 + @max_row_div4;
14166
# check multiple-4 success: 1
14168
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
14169
AND @max_row_div2 + @max_row_div4 + @max_row;
14171
# check multiple-5 success: 1
14172
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
14174
SET f_int1 = @cur_value , f_int2 = @cur_value,
14175
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
14176
f_charbig = '#SINGLE#';
14178
# check single-1 success: 1
14179
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
14181
SET f_int1 = @cur_value , f_int2 = @cur_value,
14182
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
14183
f_charbig = '#SINGLE#';
14185
# check single-2 success: 1
14186
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
14187
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
14188
UPDATE t1 SET f_int1 = @cur_value2
14189
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
14191
# check single-3 success: 1
14192
SET @cur_value1= -1;
14193
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
14194
UPDATE t1 SET f_int1 = @cur_value1
14195
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
14197
# check single-4 success: 1
14198
SELECT MAX(f_int1) INTO @cur_value FROM t1;
14199
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
14201
# check single-5 success: 1
14202
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
14204
# check single-6 success: 1
14205
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
14206
ERROR HY000: Table has no partition for value 2147483647
14207
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
14208
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
14209
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
14210
f_charbig = '#NULL#';
14212
SET f_int1 = NULL , f_int2 = -@max_row,
14213
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
14214
f_charbig = '#NULL#';
14215
# check null success: 1
14217
# check null-1 success: 1
14218
UPDATE t1 SET f_int1 = -@max_row
14219
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
14220
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
14222
# check null-2 success: 1
14223
UPDATE t1 SET f_int1 = NULL
14224
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
14225
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
14227
# check null-3 success: 1
14229
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
14230
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
14232
# check null-4 success: 1
14234
WHERE f_int1 = 0 AND f_int2 = 0
14235
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
14236
AND f_charbig = '#NULL#';
14238
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14239
SELECT f_int1, f_int1, '', '', 'was inserted'
14240
FROM t0_template source_tab
14241
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
14243
# check transactions-1 success: 1
14246
# check transactions-2 success: 1
14249
# check transactions-3 success: 1
14250
DELETE FROM t1 WHERE f_charbig = 'was inserted';
14254
# check transactions-4 success: 1
14255
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14256
SELECT f_int1, f_int1, '', '', 'was inserted'
14257
FROM t0_template source_tab
14258
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
14260
# check transactions-5 success: 1
14263
Warning 1196 Some non-transactional changed tables couldn't be rolled back
14265
# check transactions-6 success: 1
14266
# INFO: Storage engine used for t1 seems to be not transactional.
14269
# check transactions-7 success: 1
14270
DELETE FROM t1 WHERE f_charbig = 'was inserted';
14272
SET @@session.sql_mode = 'traditional';
14273
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
14274
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14275
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
14276
'', '', 'was inserted' FROM t0_template
14277
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
14278
ERROR 22012: Division by 0
14281
# check transactions-8 success: 1
14282
# INFO: Storage engine used for t1 seems to be unable to revert
14283
# changes made by the failing statement.
14284
SET @@session.sql_mode = '';
14286
DELETE FROM t1 WHERE f_charbig = 'was inserted';
14288
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
14290
# check special-1 success: 1
14291
UPDATE t1 SET f_charbig = '';
14293
# check special-2 success: 1
14294
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
14295
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
14296
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
14297
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14298
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14299
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14300
'just inserted' FROM t0_template
14301
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14302
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
14304
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14305
f_charbig = 'updated by trigger'
14306
WHERE f_int1 = new.f_int1;
14308
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14309
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
14310
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14312
# check trigger-1 success: 1
14313
DROP TRIGGER trg_1;
14314
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14315
f_int2 = CAST(f_char1 AS SIGNED INT),
14316
f_charbig = 'just inserted'
14317
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14319
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14320
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14321
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14322
'just inserted' FROM t0_template
14323
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14324
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
14326
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14327
f_charbig = 'updated by trigger'
14328
WHERE f_int1 = new.f_int1;
14330
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14331
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
14332
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14334
# check trigger-2 success: 1
14335
DROP TRIGGER trg_1;
14336
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14337
f_int2 = CAST(f_char1 AS SIGNED INT),
14338
f_charbig = 'just inserted'
14339
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14341
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14342
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14343
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14344
'just inserted' FROM t0_template
14345
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14346
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
14348
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14349
f_charbig = 'updated by trigger'
14350
WHERE f_int1 = new.f_int1;
14352
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
14353
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14355
# check trigger-3 success: 1
14356
DROP TRIGGER trg_1;
14357
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14358
f_int2 = CAST(f_char1 AS SIGNED INT),
14359
f_charbig = 'just inserted'
14360
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14362
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14363
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14364
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14365
'just inserted' FROM t0_template
14366
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14367
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
14369
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14370
f_charbig = 'updated by trigger'
14371
WHERE f_int1 = - old.f_int1;
14373
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
14374
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14376
# check trigger-4 success: 1
14377
DROP TRIGGER trg_1;
14378
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14379
f_int2 = CAST(f_char1 AS SIGNED INT),
14380
f_charbig = 'just inserted'
14381
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14383
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14384
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14385
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14386
'just inserted' FROM t0_template
14387
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14388
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
14390
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14391
f_charbig = 'updated by trigger'
14392
WHERE f_int1 = new.f_int1;
14394
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
14395
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14397
# check trigger-5 success: 1
14398
DROP TRIGGER trg_1;
14399
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14400
f_int2 = CAST(f_char1 AS SIGNED INT),
14401
f_charbig = 'just inserted'
14402
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14404
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14405
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14406
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14407
'just inserted' FROM t0_template
14408
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14409
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
14411
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14412
f_charbig = 'updated by trigger'
14413
WHERE f_int1 = - old.f_int1;
14415
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
14416
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14418
# check trigger-6 success: 1
14419
DROP TRIGGER trg_1;
14420
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14421
f_int2 = CAST(f_char1 AS SIGNED INT),
14422
f_charbig = 'just inserted'
14423
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14425
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14426
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14427
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14428
'just inserted' FROM t0_template
14429
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14430
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
14432
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14433
f_charbig = 'updated by trigger'
14434
WHERE f_int1 = - old.f_int1;
14437
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14439
# check trigger-7 success: 1
14440
DROP TRIGGER trg_1;
14441
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14442
f_int2 = CAST(f_char1 AS SIGNED INT),
14443
f_charbig = 'just inserted'
14444
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14446
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14447
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14448
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14449
'just inserted' FROM t0_template
14450
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14451
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
14453
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14454
f_charbig = 'updated by trigger'
14455
WHERE f_int1 = - old.f_int1;
14458
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14460
# check trigger-8 success: 1
14461
DROP TRIGGER trg_1;
14462
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14463
f_int2 = CAST(f_char1 AS SIGNED INT),
14464
f_charbig = 'just inserted'
14465
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14467
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14469
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14470
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
14472
SET new.f_int1 = old.f_int1 + @max_row,
14473
new.f_int2 = old.f_int2 - @max_row,
14474
new.f_charbig = '####updated per update trigger####';
14477
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
14478
f_charbig = '####updated per update statement itself####';
14480
# check trigger-9 success: 1
14481
DROP TRIGGER trg_2;
14482
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14483
f_int2 = CAST(f_char1 AS SIGNED INT),
14484
f_charbig = CONCAT('===',f_char1,'===');
14485
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
14487
SET new.f_int1 = new.f_int1 + @max_row,
14488
new.f_int2 = new.f_int2 - @max_row,
14489
new.f_charbig = '####updated per update trigger####';
14492
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
14493
f_charbig = '####updated per update statement itself####';
14495
# check trigger-10 success: 1
14496
DROP TRIGGER trg_2;
14497
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14498
f_int2 = CAST(f_char1 AS SIGNED INT),
14499
f_charbig = CONCAT('===',f_char1,'===');
14500
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
14502
SET new.f_int1 = @my_max1 + @counter,
14503
new.f_int2 = @my_min2 - @counter,
14504
new.f_charbig = '####updated per insert trigger####';
14505
SET @counter = @counter + 1;
14508
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
14509
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14510
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
14511
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
14512
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
14514
DROP TRIGGER trg_3;
14516
# check trigger-11 success: 1
14518
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
14519
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
14520
AND f_charbig = '####updated per insert trigger####';
14521
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
14523
SET new.f_int1 = @my_max1 + @counter,
14524
new.f_int2 = @my_min2 - @counter,
14525
new.f_charbig = '####updated per insert trigger####';
14526
SET @counter = @counter + 1;
14529
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
14530
INSERT INTO t1 (f_char1, f_char2, f_charbig)
14531
SELECT CAST(f_int1 AS CHAR),
14532
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
14533
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
14535
DROP TRIGGER trg_3;
14537
# check trigger-12 success: 1
14539
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
14540
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
14541
AND f_charbig = '####updated per insert trigger####';
14543
Table Op Msg_type Msg_text
14544
test.t1 analyze status OK
14545
CHECK TABLE t1 EXTENDED;
14546
Table Op Msg_type Msg_text
14547
test.t1 check status OK
14548
CHECKSUM TABLE t1 EXTENDED;
14550
test.t1 <some_value>
14552
Table Op Msg_type Msg_text
14553
test.t1 optimize status OK
14554
# check layout success: 1
14555
REPAIR TABLE t1 EXTENDED;
14556
Table Op Msg_type Msg_text
14557
test.t1 repair status OK
14558
# check layout success: 1
14561
# check TRUNCATE success: 1
14562
# check layout success: 1
14563
# End usability test (inc/partition_check.inc)
14570
f_charbig VARCHAR(1000)
14571
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
14573
PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int2 + 1)
14574
(PARTITION part1 VALUES IN (0)
14575
(SUBPARTITION sp11, SUBPARTITION sp12),
14576
PARTITION part2 VALUES IN (1)
14577
(SUBPARTITION sp21, SUBPARTITION sp22),
14578
PARTITION part3 VALUES IN (2)
14579
(SUBPARTITION sp31, SUBPARTITION sp32),
14580
PARTITION part4 VALUES IN (NULL)
14581
(SUBPARTITION sp41, SUBPARTITION sp42));
14582
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
14583
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
14584
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
14585
ALTER TABLE t1 DROP INDEX uidx1, DROP INDEX uidx2;
14586
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
14587
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
14588
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
14589
# Start usability test (inc/partition_check.inc)
14591
SHOW CREATE TABLE t1;
14593
t1 CREATE TABLE `t1` (
14594
`f_int1` int(11) DEFAULT NULL,
14595
`f_int2` int(11) DEFAULT NULL,
14596
`f_char1` char(20) DEFAULT NULL,
14597
`f_char2` char(20) DEFAULT NULL,
14598
`f_charbig` varchar(1000) DEFAULT NULL
14599
) ENGINE=MyISAM DEFAULT CHARSET=latin1
14600
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
14601
SUBPARTITION BY HASH (f_int2 + 1)
14602
(PARTITION part1 VALUES IN (0)
14603
(SUBPARTITION sp11 ENGINE = MyISAM,
14604
SUBPARTITION sp12 ENGINE = MyISAM),
14605
PARTITION part2 VALUES IN (1)
14606
(SUBPARTITION sp21 ENGINE = MyISAM,
14607
SUBPARTITION sp22 ENGINE = MyISAM),
14608
PARTITION part3 VALUES IN (2)
14609
(SUBPARTITION sp31 ENGINE = MyISAM,
14610
SUBPARTITION sp32 ENGINE = MyISAM),
14611
PARTITION part4 VALUES IN (NULL)
14612
(SUBPARTITION sp41 ENGINE = MyISAM,
14613
SUBPARTITION sp42 ENGINE = MyISAM)) */
14616
t1#P#part1#SP#sp11.MYD
14617
t1#P#part1#SP#sp11.MYI
14618
t1#P#part1#SP#sp12.MYD
14619
t1#P#part1#SP#sp12.MYI
14620
t1#P#part2#SP#sp21.MYD
14621
t1#P#part2#SP#sp21.MYI
14622
t1#P#part2#SP#sp22.MYD
14623
t1#P#part2#SP#sp22.MYI
14624
t1#P#part3#SP#sp31.MYD
14625
t1#P#part3#SP#sp31.MYI
14626
t1#P#part3#SP#sp32.MYD
14627
t1#P#part3#SP#sp32.MYI
14628
t1#P#part4#SP#sp41.MYD
14629
t1#P#part4#SP#sp41.MYI
14630
t1#P#part4#SP#sp42.MYD
14631
t1#P#part4#SP#sp42.MYI
14635
# check prerequisites-1 success: 1
14636
# check COUNT(*) success: 1
14637
# check MIN/MAX(f_int1) success: 1
14638
# check MIN/MAX(f_int2) success: 1
14639
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14640
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
14641
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
14642
WHERE f_int1 IN (2,3);
14643
# check prerequisites-3 success: 1
14644
DELETE FROM t1 WHERE f_charbig = 'delete me';
14645
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
14646
# check read via f_int1 success: 1
14647
# check read via f_int2 success: 1
14649
# check multiple-1 success: 1
14650
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
14652
# check multiple-2 success: 1
14653
INSERT INTO t1 SELECT * FROM t0_template
14654
WHERE MOD(f_int1,3) = 0;
14656
# check multiple-3 success: 1
14657
UPDATE t1 SET f_int1 = f_int1 + @max_row
14658
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
14659
AND @max_row_div2 + @max_row_div4;
14661
# check multiple-4 success: 1
14663
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
14664
AND @max_row_div2 + @max_row_div4 + @max_row;
14666
# check multiple-5 success: 1
14667
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
14669
SET f_int1 = @cur_value , f_int2 = @cur_value,
14670
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
14671
f_charbig = '#SINGLE#';
14673
# check single-1 success: 1
14674
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
14676
SET f_int1 = @cur_value , f_int2 = @cur_value,
14677
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
14678
f_charbig = '#SINGLE#';
14680
# check single-2 success: 1
14681
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
14682
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
14683
UPDATE t1 SET f_int1 = @cur_value2
14684
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
14686
# check single-3 success: 1
14687
SET @cur_value1= -1;
14688
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
14689
UPDATE t1 SET f_int1 = @cur_value1
14690
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
14692
# check single-4 success: 1
14693
SELECT MAX(f_int1) INTO @cur_value FROM t1;
14694
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
14696
# check single-5 success: 1
14697
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
14699
# check single-6 success: 1
14700
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
14702
# check single-7 success: 1
14703
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
14704
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
14705
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
14706
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
14707
f_charbig = '#NULL#';
14709
SET f_int1 = NULL , f_int2 = -@max_row,
14710
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
14711
f_charbig = '#NULL#';
14712
# check null success: 1
14714
# check null-1 success: 1
14715
UPDATE t1 SET f_int1 = -@max_row
14716
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
14717
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
14719
# check null-2 success: 1
14720
UPDATE t1 SET f_int1 = NULL
14721
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
14722
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
14724
# check null-3 success: 1
14726
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
14727
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
14729
# check null-4 success: 1
14731
WHERE f_int1 = 0 AND f_int2 = 0
14732
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
14733
AND f_charbig = '#NULL#';
14735
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14736
SELECT f_int1, f_int1, '', '', 'was inserted'
14737
FROM t0_template source_tab
14738
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
14740
# check transactions-1 success: 1
14743
# check transactions-2 success: 1
14746
# check transactions-3 success: 1
14747
DELETE FROM t1 WHERE f_charbig = 'was inserted';
14751
# check transactions-4 success: 1
14752
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14753
SELECT f_int1, f_int1, '', '', 'was inserted'
14754
FROM t0_template source_tab
14755
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
14757
# check transactions-5 success: 1
14760
Warning 1196 Some non-transactional changed tables couldn't be rolled back
14762
# check transactions-6 success: 1
14763
# INFO: Storage engine used for t1 seems to be not transactional.
14766
# check transactions-7 success: 1
14767
DELETE FROM t1 WHERE f_charbig = 'was inserted';
14769
SET @@session.sql_mode = 'traditional';
14770
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
14771
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14772
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
14773
'', '', 'was inserted' FROM t0_template
14774
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
14775
ERROR 22012: Division by 0
14778
# check transactions-8 success: 1
14779
# INFO: Storage engine used for t1 seems to be unable to revert
14780
# changes made by the failing statement.
14781
SET @@session.sql_mode = '';
14783
DELETE FROM t1 WHERE f_charbig = 'was inserted';
14785
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
14787
# check special-1 success: 1
14788
UPDATE t1 SET f_charbig = '';
14790
# check special-2 success: 1
14791
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
14792
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
14793
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
14794
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14795
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14796
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14797
'just inserted' FROM t0_template
14798
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14799
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
14801
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14802
f_charbig = 'updated by trigger'
14803
WHERE f_int1 = new.f_int1;
14805
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14806
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
14807
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14809
# check trigger-1 success: 1
14810
DROP TRIGGER trg_1;
14811
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14812
f_int2 = CAST(f_char1 AS SIGNED INT),
14813
f_charbig = 'just inserted'
14814
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14816
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14817
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14818
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14819
'just inserted' FROM t0_template
14820
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14821
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
14823
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14824
f_charbig = 'updated by trigger'
14825
WHERE f_int1 = new.f_int1;
14827
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14828
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
14829
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14831
# check trigger-2 success: 1
14832
DROP TRIGGER trg_1;
14833
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14834
f_int2 = CAST(f_char1 AS SIGNED INT),
14835
f_charbig = 'just inserted'
14836
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14838
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14839
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14840
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14841
'just inserted' FROM t0_template
14842
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14843
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
14845
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14846
f_charbig = 'updated by trigger'
14847
WHERE f_int1 = new.f_int1;
14849
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
14850
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14852
# check trigger-3 success: 1
14853
DROP TRIGGER trg_1;
14854
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14855
f_int2 = CAST(f_char1 AS SIGNED INT),
14856
f_charbig = 'just inserted'
14857
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14859
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14860
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14861
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14862
'just inserted' FROM t0_template
14863
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14864
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
14866
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14867
f_charbig = 'updated by trigger'
14868
WHERE f_int1 = - old.f_int1;
14870
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
14871
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14873
# check trigger-4 success: 1
14874
DROP TRIGGER trg_1;
14875
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14876
f_int2 = CAST(f_char1 AS SIGNED INT),
14877
f_charbig = 'just inserted'
14878
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14880
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14881
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14882
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14883
'just inserted' FROM t0_template
14884
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14885
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
14887
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14888
f_charbig = 'updated by trigger'
14889
WHERE f_int1 = new.f_int1;
14891
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
14892
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14894
# check trigger-5 success: 1
14895
DROP TRIGGER trg_1;
14896
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14897
f_int2 = CAST(f_char1 AS SIGNED INT),
14898
f_charbig = 'just inserted'
14899
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14901
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14902
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14903
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14904
'just inserted' FROM t0_template
14905
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14906
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
14908
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14909
f_charbig = 'updated by trigger'
14910
WHERE f_int1 = - old.f_int1;
14912
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
14913
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14915
# check trigger-6 success: 1
14916
DROP TRIGGER trg_1;
14917
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14918
f_int2 = CAST(f_char1 AS SIGNED INT),
14919
f_charbig = 'just inserted'
14920
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14922
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14923
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14924
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14925
'just inserted' FROM t0_template
14926
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14927
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
14929
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14930
f_charbig = 'updated by trigger'
14931
WHERE f_int1 = - old.f_int1;
14934
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14936
# check trigger-7 success: 1
14937
DROP TRIGGER trg_1;
14938
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14939
f_int2 = CAST(f_char1 AS SIGNED INT),
14940
f_charbig = 'just inserted'
14941
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14943
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14944
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14945
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14946
'just inserted' FROM t0_template
14947
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14948
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
14950
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14951
f_charbig = 'updated by trigger'
14952
WHERE f_int1 = - old.f_int1;
14955
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14957
# check trigger-8 success: 1
14958
DROP TRIGGER trg_1;
14959
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14960
f_int2 = CAST(f_char1 AS SIGNED INT),
14961
f_charbig = 'just inserted'
14962
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14964
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14966
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14967
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
14969
SET new.f_int1 = old.f_int1 + @max_row,
14970
new.f_int2 = old.f_int2 - @max_row,
14971
new.f_charbig = '####updated per update trigger####';
14974
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
14975
f_charbig = '####updated per update statement itself####';
14977
# check trigger-9 success: 1
14978
DROP TRIGGER trg_2;
14979
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14980
f_int2 = CAST(f_char1 AS SIGNED INT),
14981
f_charbig = CONCAT('===',f_char1,'===');
14982
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
14984
SET new.f_int1 = new.f_int1 + @max_row,
14985
new.f_int2 = new.f_int2 - @max_row,
14986
new.f_charbig = '####updated per update trigger####';
14989
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
14990
f_charbig = '####updated per update statement itself####';
14992
# check trigger-10 success: 1
14993
DROP TRIGGER trg_2;
14994
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14995
f_int2 = CAST(f_char1 AS SIGNED INT),
14996
f_charbig = CONCAT('===',f_char1,'===');
14997
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
14999
SET new.f_int1 = @my_max1 + @counter,
15000
new.f_int2 = @my_min2 - @counter,
15001
new.f_charbig = '####updated per insert trigger####';
15002
SET @counter = @counter + 1;
15005
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
15006
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15007
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
15008
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
15009
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
15011
DROP TRIGGER trg_3;
15013
# check trigger-11 success: 1
15015
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
15016
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
15017
AND f_charbig = '####updated per insert trigger####';
15018
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
15020
SET new.f_int1 = @my_max1 + @counter,
15021
new.f_int2 = @my_min2 - @counter,
15022
new.f_charbig = '####updated per insert trigger####';
15023
SET @counter = @counter + 1;
15026
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
15027
INSERT INTO t1 (f_char1, f_char2, f_charbig)
15028
SELECT CAST(f_int1 AS CHAR),
15029
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
15030
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
15032
DROP TRIGGER trg_3;
15034
# check trigger-12 success: 1
15036
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
15037
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
15038
AND f_charbig = '####updated per insert trigger####';
15040
Table Op Msg_type Msg_text
15041
test.t1 analyze status OK
15042
CHECK TABLE t1 EXTENDED;
15043
Table Op Msg_type Msg_text
15044
test.t1 check status OK
15045
CHECKSUM TABLE t1 EXTENDED;
15047
test.t1 <some_value>
15049
Table Op Msg_type Msg_text
15050
test.t1 optimize status OK
15051
# check layout success: 1
15052
REPAIR TABLE t1 EXTENDED;
15053
Table Op Msg_type Msg_text
15054
test.t1 repair status OK
15055
# check layout success: 1
15058
# check TRUNCATE success: 1
15059
# check layout success: 1
15060
# End usability test (inc/partition_check.inc)
15067
f_charbig VARCHAR(1000)
15068
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
15070
PARTITION BY LIST(ABS(MOD(f_int1,2)))
15071
SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3
15072
(PARTITION part1 VALUES IN (0),
15073
PARTITION part2 VALUES IN (1),
15074
PARTITION part3 VALUES IN (NULL));
15075
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15076
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
15077
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
15078
ALTER TABLE t1 DROP INDEX uidx1, DROP INDEX uidx2;
15079
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15080
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
15081
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
15082
# Start usability test (inc/partition_check.inc)
15084
SHOW CREATE TABLE t1;
15086
t1 CREATE TABLE `t1` (
15087
`f_int1` int(11) DEFAULT NULL,
15088
`f_int2` int(11) DEFAULT NULL,
15089
`f_char1` char(20) DEFAULT NULL,
15090
`f_char2` char(20) DEFAULT NULL,
15091
`f_charbig` varchar(1000) DEFAULT NULL
15092
) ENGINE=MyISAM DEFAULT CHARSET=latin1
15093
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
15094
SUBPARTITION BY KEY (f_int2)
15096
(PARTITION part1 VALUES IN (0) ENGINE = MyISAM,
15097
PARTITION part2 VALUES IN (1) ENGINE = MyISAM,
15098
PARTITION part3 VALUES IN (NULL) ENGINE = MyISAM) */
15101
t1#P#part1#SP#part1sp0.MYD
15102
t1#P#part1#SP#part1sp0.MYI
15103
t1#P#part1#SP#part1sp1.MYD
15104
t1#P#part1#SP#part1sp1.MYI
15105
t1#P#part1#SP#part1sp2.MYD
15106
t1#P#part1#SP#part1sp2.MYI
15107
t1#P#part2#SP#part2sp0.MYD
15108
t1#P#part2#SP#part2sp0.MYI
15109
t1#P#part2#SP#part2sp1.MYD
15110
t1#P#part2#SP#part2sp1.MYI
15111
t1#P#part2#SP#part2sp2.MYD
15112
t1#P#part2#SP#part2sp2.MYI
15113
t1#P#part3#SP#part3sp0.MYD
15114
t1#P#part3#SP#part3sp0.MYI
15115
t1#P#part3#SP#part3sp1.MYD
15116
t1#P#part3#SP#part3sp1.MYI
15117
t1#P#part3#SP#part3sp2.MYD
15118
t1#P#part3#SP#part3sp2.MYI
15122
# check prerequisites-1 success: 1
15123
# check COUNT(*) success: 1
15124
# check MIN/MAX(f_int1) success: 1
15125
# check MIN/MAX(f_int2) success: 1
15126
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15127
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
15128
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
15129
WHERE f_int1 IN (2,3);
15130
# check prerequisites-3 success: 1
15131
DELETE FROM t1 WHERE f_charbig = 'delete me';
15132
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
15133
# check read via f_int1 success: 1
15134
# check read via f_int2 success: 1
15136
# check multiple-1 success: 1
15137
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
15139
# check multiple-2 success: 1
15140
INSERT INTO t1 SELECT * FROM t0_template
15141
WHERE MOD(f_int1,3) = 0;
15143
# check multiple-3 success: 1
15144
UPDATE t1 SET f_int1 = f_int1 + @max_row
15145
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
15146
AND @max_row_div2 + @max_row_div4;
15148
# check multiple-4 success: 1
15150
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
15151
AND @max_row_div2 + @max_row_div4 + @max_row;
15153
# check multiple-5 success: 1
15154
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
15156
SET f_int1 = @cur_value , f_int2 = @cur_value,
15157
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
15158
f_charbig = '#SINGLE#';
15160
# check single-1 success: 1
15161
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
15163
SET f_int1 = @cur_value , f_int2 = @cur_value,
15164
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
15165
f_charbig = '#SINGLE#';
15167
# check single-2 success: 1
15168
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
15169
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
15170
UPDATE t1 SET f_int1 = @cur_value2
15171
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
15173
# check single-3 success: 1
15174
SET @cur_value1= -1;
15175
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
15176
UPDATE t1 SET f_int1 = @cur_value1
15177
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
15179
# check single-4 success: 1
15180
SELECT MAX(f_int1) INTO @cur_value FROM t1;
15181
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
15183
# check single-5 success: 1
15184
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
15186
# check single-6 success: 1
15187
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
15189
# check single-7 success: 1
15190
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
15191
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
15192
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
15193
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
15194
f_charbig = '#NULL#';
15196
SET f_int1 = NULL , f_int2 = -@max_row,
15197
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
15198
f_charbig = '#NULL#';
15199
# check null success: 1
15201
# check null-1 success: 1
15202
UPDATE t1 SET f_int1 = -@max_row
15203
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
15204
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
15206
# check null-2 success: 1
15207
UPDATE t1 SET f_int1 = NULL
15208
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
15209
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
15211
# check null-3 success: 1
15213
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
15214
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
15216
# check null-4 success: 1
15218
WHERE f_int1 = 0 AND f_int2 = 0
15219
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
15220
AND f_charbig = '#NULL#';
15222
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15223
SELECT f_int1, f_int1, '', '', 'was inserted'
15224
FROM t0_template source_tab
15225
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
15227
# check transactions-1 success: 1
15230
# check transactions-2 success: 1
15233
# check transactions-3 success: 1
15234
DELETE FROM t1 WHERE f_charbig = 'was inserted';
15238
# check transactions-4 success: 1
15239
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15240
SELECT f_int1, f_int1, '', '', 'was inserted'
15241
FROM t0_template source_tab
15242
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
15244
# check transactions-5 success: 1
15247
Warning 1196 Some non-transactional changed tables couldn't be rolled back
15249
# check transactions-6 success: 1
15250
# INFO: Storage engine used for t1 seems to be not transactional.
15253
# check transactions-7 success: 1
15254
DELETE FROM t1 WHERE f_charbig = 'was inserted';
15256
SET @@session.sql_mode = 'traditional';
15257
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
15258
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15259
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
15260
'', '', 'was inserted' FROM t0_template
15261
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
15262
ERROR 22012: Division by 0
15265
# check transactions-8 success: 1
15266
# INFO: Storage engine used for t1 seems to be unable to revert
15267
# changes made by the failing statement.
15268
SET @@session.sql_mode = '';
15270
DELETE FROM t1 WHERE f_charbig = 'was inserted';
15272
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
15274
# check special-1 success: 1
15275
UPDATE t1 SET f_charbig = '';
15277
# check special-2 success: 1
15278
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
15279
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15280
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
15281
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15282
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15283
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15284
'just inserted' FROM t0_template
15285
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15286
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
15288
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15289
f_charbig = 'updated by trigger'
15290
WHERE f_int1 = new.f_int1;
15292
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15293
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
15294
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15296
# check trigger-1 success: 1
15297
DROP TRIGGER trg_1;
15298
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15299
f_int2 = CAST(f_char1 AS SIGNED INT),
15300
f_charbig = 'just inserted'
15301
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15303
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15304
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15305
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15306
'just inserted' FROM t0_template
15307
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15308
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
15310
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15311
f_charbig = 'updated by trigger'
15312
WHERE f_int1 = new.f_int1;
15314
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15315
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
15316
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15318
# check trigger-2 success: 1
15319
DROP TRIGGER trg_1;
15320
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15321
f_int2 = CAST(f_char1 AS SIGNED INT),
15322
f_charbig = 'just inserted'
15323
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15325
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15326
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15327
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15328
'just inserted' FROM t0_template
15329
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15330
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
15332
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15333
f_charbig = 'updated by trigger'
15334
WHERE f_int1 = new.f_int1;
15336
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
15337
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15339
# check trigger-3 success: 1
15340
DROP TRIGGER trg_1;
15341
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15342
f_int2 = CAST(f_char1 AS SIGNED INT),
15343
f_charbig = 'just inserted'
15344
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15346
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15347
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15348
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15349
'just inserted' FROM t0_template
15350
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15351
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
15353
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15354
f_charbig = 'updated by trigger'
15355
WHERE f_int1 = - old.f_int1;
15357
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
15358
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15360
# check trigger-4 success: 1
15361
DROP TRIGGER trg_1;
15362
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15363
f_int2 = CAST(f_char1 AS SIGNED INT),
15364
f_charbig = 'just inserted'
15365
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15367
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15368
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15369
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15370
'just inserted' FROM t0_template
15371
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15372
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
15374
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15375
f_charbig = 'updated by trigger'
15376
WHERE f_int1 = new.f_int1;
15378
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
15379
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15381
# check trigger-5 success: 1
15382
DROP TRIGGER trg_1;
15383
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15384
f_int2 = CAST(f_char1 AS SIGNED INT),
15385
f_charbig = 'just inserted'
15386
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15388
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15389
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15390
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15391
'just inserted' FROM t0_template
15392
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15393
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
15395
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15396
f_charbig = 'updated by trigger'
15397
WHERE f_int1 = - old.f_int1;
15399
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
15400
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15402
# check trigger-6 success: 1
15403
DROP TRIGGER trg_1;
15404
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15405
f_int2 = CAST(f_char1 AS SIGNED INT),
15406
f_charbig = 'just inserted'
15407
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15409
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15410
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15411
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15412
'just inserted' FROM t0_template
15413
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15414
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
15416
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15417
f_charbig = 'updated by trigger'
15418
WHERE f_int1 = - old.f_int1;
15421
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15423
# check trigger-7 success: 1
15424
DROP TRIGGER trg_1;
15425
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15426
f_int2 = CAST(f_char1 AS SIGNED INT),
15427
f_charbig = 'just inserted'
15428
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15430
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15431
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15432
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15433
'just inserted' FROM t0_template
15434
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15435
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
15437
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15438
f_charbig = 'updated by trigger'
15439
WHERE f_int1 = - old.f_int1;
15442
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15444
# check trigger-8 success: 1
15445
DROP TRIGGER trg_1;
15446
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15447
f_int2 = CAST(f_char1 AS SIGNED INT),
15448
f_charbig = 'just inserted'
15449
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15451
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15453
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15454
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
15456
SET new.f_int1 = old.f_int1 + @max_row,
15457
new.f_int2 = old.f_int2 - @max_row,
15458
new.f_charbig = '####updated per update trigger####';
15461
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
15462
f_charbig = '####updated per update statement itself####';
15464
# check trigger-9 success: 1
15465
DROP TRIGGER trg_2;
15466
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15467
f_int2 = CAST(f_char1 AS SIGNED INT),
15468
f_charbig = CONCAT('===',f_char1,'===');
15469
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
15471
SET new.f_int1 = new.f_int1 + @max_row,
15472
new.f_int2 = new.f_int2 - @max_row,
15473
new.f_charbig = '####updated per update trigger####';
15476
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
15477
f_charbig = '####updated per update statement itself####';
15479
# check trigger-10 success: 1
15480
DROP TRIGGER trg_2;
15481
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15482
f_int2 = CAST(f_char1 AS SIGNED INT),
15483
f_charbig = CONCAT('===',f_char1,'===');
15484
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
15486
SET new.f_int1 = @my_max1 + @counter,
15487
new.f_int2 = @my_min2 - @counter,
15488
new.f_charbig = '####updated per insert trigger####';
15489
SET @counter = @counter + 1;
15492
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
15493
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15494
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
15495
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
15496
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
15498
DROP TRIGGER trg_3;
15500
# check trigger-11 success: 1
15502
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
15503
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
15504
AND f_charbig = '####updated per insert trigger####';
15505
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
15507
SET new.f_int1 = @my_max1 + @counter,
15508
new.f_int2 = @my_min2 - @counter,
15509
new.f_charbig = '####updated per insert trigger####';
15510
SET @counter = @counter + 1;
15513
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
15514
INSERT INTO t1 (f_char1, f_char2, f_charbig)
15515
SELECT CAST(f_int1 AS CHAR),
15516
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
15517
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
15519
DROP TRIGGER trg_3;
15521
# check trigger-12 success: 1
15523
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
15524
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
15525
AND f_charbig = '####updated per insert trigger####';
15527
Table Op Msg_type Msg_text
15528
test.t1 analyze status OK
15529
CHECK TABLE t1 EXTENDED;
15530
Table Op Msg_type Msg_text
15531
test.t1 check status OK
15532
CHECKSUM TABLE t1 EXTENDED;
15534
test.t1 <some_value>
15536
Table Op Msg_type Msg_text
15537
test.t1 optimize status OK
15538
# check layout success: 1
15539
REPAIR TABLE t1 EXTENDED;
15540
Table Op Msg_type Msg_text
15541
test.t1 repair status OK
15542
# check layout success: 1
15545
# check TRUNCATE success: 1
15546
# check layout success: 1
15547
# End usability test (inc/partition_check.inc)
15549
DROP VIEW IF EXISTS v1;
15550
DROP TABLE IF EXISTS t1;
15551
DROP TABLE IF EXISTS t0_aux;
15552
DROP TABLE IF EXISTS t0_definition;
15553
DROP TABLE IF EXISTS t0_template;