2
SET @@session.storage_engine = 'ndbcluster';
4
#------------------------------------------------------------------------
5
# There are several testcases disabled because of the open bugs
8
# The expected results suffer from the following bugs
9
# harmless #17455, #19305
10
# which cannot be suppressed because of technical reasons.
11
#------------------------------------------------------------------------
13
#------------------------------------------------------------------------
14
# 0. Setting of auxiliary variables + Creation of an auxiliary tables
15
# needed in many testcases
16
#------------------------------------------------------------------------
17
SELECT @max_row DIV 2 INTO @max_row_div2;
18
SELECT @max_row DIV 3 INTO @max_row_div3;
19
SELECT @max_row DIV 4 INTO @max_row_div4;
20
SET @max_int_4 = 2147483647;
21
DROP TABLE IF EXISTS t0_template;
22
CREATE TABLE t0_template (
27
f_charbig VARCHAR(1000) ,
30
# Logging of <max_row> INSERTs into t0_template suppressed
31
DROP TABLE IF EXISTS t0_definition;
32
CREATE TABLE t0_definition (
34
create_command VARBINARY(5000),
35
file_list VARBINARY(5000),
38
DROP TABLE IF EXISTS t0_aux;
39
CREATE TABLE t0_aux ( f_int1 INTEGER,
43
f_charbig VARCHAR(1000) )
46
SET @@session.sql_mode= '';
47
# End of basic preparations needed for all tests
48
#-----------------------------------------------
50
#========================================================================
51
# Checks where the engine is assigned on all supported (CREATE TABLE
52
# statement) positions + basic operations on the tables
53
# Storage engine mixups are currently (2005-12-23) not supported
54
#========================================================================
55
DROP TABLE IF EXISTS t1;
56
#------------------------------------------------------------------------
57
# 1 Assignment of storage engine just after column list only
58
#------------------------------------------------------------------------
64
f_charbig VARCHAR(1000)
65
) ENGINE = 'ndbcluster'
66
PARTITION BY HASH(f_int1) PARTITIONS 2;
67
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
68
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
69
# Start usability test (include/partition_check.inc)
73
t1 CREATE TABLE `t1` (
74
`f_int1` int(11) DEFAULT NULL,
75
`f_int2` int(11) DEFAULT NULL,
76
`f_char1` char(20) DEFAULT NULL,
77
`f_char2` char(20) DEFAULT NULL,
78
`f_charbig` varchar(1000) DEFAULT NULL
79
) ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY HASH (f_int1) PARTITIONS 2
81
# check prerequisites-1 success: 1
82
# check COUNT(*) success: 1
83
# check MIN/MAX(f_int1) success: 1
84
# check MIN/MAX(f_int2) success: 1
85
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
86
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
87
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
88
WHERE f_int1 IN (2,3);
89
# check prerequisites-3 success: 1
90
DELETE FROM t1 WHERE f_charbig = 'delete me';
91
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
92
# check read via f_int1 success: 1
93
# check read via f_int2 success: 1
95
# check multiple-1 success: 1
96
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
98
# check multiple-2 success: 1
99
INSERT INTO t1 SELECT * FROM t0_template
100
WHERE MOD(f_int1,3) = 0;
102
# check multiple-3 success: 1
103
UPDATE t1 SET f_int1 = f_int1 + @max_row
104
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
105
AND @max_row_div2 + @max_row_div4;
107
# check multiple-4 success: 1
109
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
110
AND @max_row_div2 + @max_row_div4 + @max_row;
112
# check multiple-5 success: 1
113
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
115
SET f_int1 = @cur_value , f_int2 = @cur_value,
116
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
117
f_charbig = '#SINGLE#';
119
# check single-1 success: 1
120
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
122
SET f_int1 = @cur_value , f_int2 = @cur_value,
123
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
124
f_charbig = '#SINGLE#';
126
# check single-2 success: 1
127
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
128
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
129
UPDATE t1 SET f_int1 = @cur_value2
130
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
132
# check single-3 success: 1
134
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
135
UPDATE t1 SET f_int1 = @cur_value1
136
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
138
# check single-4 success: 1
139
SELECT MAX(f_int1) INTO @cur_value FROM t1;
140
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
142
# check single-5 success: 1
143
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
145
# check single-6 success: 1
146
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
148
# check single-7 success: 1
149
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
150
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
151
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
152
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
153
f_charbig = '#NULL#';
155
SET f_int1 = NULL , f_int2 = -@max_row,
156
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
157
f_charbig = '#NULL#';
158
# check null success: 1
160
# check null-1 success: 1
161
UPDATE t1 SET f_int1 = -@max_row
162
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
163
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
165
# check null-2 success: 1
166
UPDATE t1 SET f_int1 = NULL
167
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
168
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
170
# check null-3 success: 1
172
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
173
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
175
# check null-4 success: 1
177
WHERE f_int1 = 0 AND f_int2 = 0
178
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
179
AND f_charbig = '#NULL#';
181
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
182
SELECT f_int1, f_int1, '', '', 'was inserted'
183
FROM t0_template source_tab
184
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
186
# check transactions-1 success: 1
189
# check transactions-2 success: 1
192
# check transactions-3 success: 1
193
DELETE FROM t1 WHERE f_charbig = 'was inserted';
197
# check transactions-4 success: 1
198
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
199
SELECT f_int1, f_int1, '', '', 'was inserted'
200
FROM t0_template source_tab
201
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
203
# check transactions-5 success: 1
206
# check transactions-6 success: 1
207
# INFO: Storage engine used for t1 seems to be transactional.
210
# check transactions-7 success: 1
211
DELETE FROM t1 WHERE f_charbig = 'was inserted';
213
SET @@session.sql_mode = 'traditional';
214
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
215
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
216
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
217
'', '', 'was inserted' FROM t0_template
218
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
219
ERROR 22012: Division by 0
222
# check transactions-8 success: 1
223
# INFO: Storage engine used for t1 seems to be unable to revert
224
# changes made by the failing statement.
225
SET @@session.sql_mode = '';
227
DELETE FROM t1 WHERE f_charbig = 'was inserted';
229
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
231
# check special-1 success: 1
232
UPDATE t1 SET f_charbig = '';
234
# check special-2 success: 1
235
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
236
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
237
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
238
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
239
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
240
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
241
'just inserted' FROM t0_template
242
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
243
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
245
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
246
f_charbig = 'updated by trigger'
247
WHERE f_int1 = new.f_int1;
249
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
250
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
251
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
253
# check trigger-1 success: 1
255
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
256
f_int2 = CAST(f_char1 AS SIGNED INT),
257
f_charbig = 'just inserted'
258
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
260
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
261
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
262
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
263
'just inserted' FROM t0_template
264
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
265
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
267
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
268
f_charbig = 'updated by trigger'
269
WHERE f_int1 = new.f_int1;
271
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
272
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
273
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
275
# check trigger-2 success: 1
277
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
278
f_int2 = CAST(f_char1 AS SIGNED INT),
279
f_charbig = 'just inserted'
280
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
282
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
283
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
284
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
285
'just inserted' FROM t0_template
286
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
287
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
289
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
290
f_charbig = 'updated by trigger'
291
WHERE f_int1 = new.f_int1;
293
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
294
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
296
# check trigger-3 success: 1
298
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
299
f_int2 = CAST(f_char1 AS SIGNED INT),
300
f_charbig = 'just inserted'
301
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
303
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
304
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
305
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
306
'just inserted' FROM t0_template
307
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
308
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
310
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
311
f_charbig = 'updated by trigger'
312
WHERE f_int1 = - old.f_int1;
314
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
315
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
317
# check trigger-4 success: 1
319
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
320
f_int2 = CAST(f_char1 AS SIGNED INT),
321
f_charbig = 'just inserted'
322
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
324
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
325
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
326
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
327
'just inserted' FROM t0_template
328
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
329
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
331
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
332
f_charbig = 'updated by trigger'
333
WHERE f_int1 = new.f_int1;
335
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
336
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
338
# check trigger-5 success: 1
340
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
341
f_int2 = CAST(f_char1 AS SIGNED INT),
342
f_charbig = 'just inserted'
343
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
345
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
346
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
347
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
348
'just inserted' FROM t0_template
349
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
350
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
352
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
353
f_charbig = 'updated by trigger'
354
WHERE f_int1 = - old.f_int1;
356
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
357
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
359
# check trigger-6 success: 1
361
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
362
f_int2 = CAST(f_char1 AS SIGNED INT),
363
f_charbig = 'just inserted'
364
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
366
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
367
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
368
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
369
'just inserted' FROM t0_template
370
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
371
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
373
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
374
f_charbig = 'updated by trigger'
375
WHERE f_int1 = - old.f_int1;
378
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
380
# check trigger-7 success: 1
382
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
383
f_int2 = CAST(f_char1 AS SIGNED INT),
384
f_charbig = 'just inserted'
385
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
387
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
388
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
389
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
390
'just inserted' FROM t0_template
391
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
392
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
394
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
395
f_charbig = 'updated by trigger'
396
WHERE f_int1 = - old.f_int1;
399
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
401
# check trigger-8 success: 1
403
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
404
f_int2 = CAST(f_char1 AS SIGNED INT),
405
f_charbig = 'just inserted'
406
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
408
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
410
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
411
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
413
SET new.f_int1 = old.f_int1 + @max_row,
414
new.f_int2 = old.f_int2 - @max_row,
415
new.f_charbig = '####updated per update trigger####';
418
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
419
f_charbig = '####updated per update statement itself####';
421
# check trigger-9 success: 1
423
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
424
f_int2 = CAST(f_char1 AS SIGNED INT),
425
f_charbig = CONCAT('===',f_char1,'===');
426
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
428
SET new.f_int1 = new.f_int1 + @max_row,
429
new.f_int2 = new.f_int2 - @max_row,
430
new.f_charbig = '####updated per update trigger####';
433
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
434
f_charbig = '####updated per update statement itself####';
436
# check trigger-10 success: 1
438
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
439
f_int2 = CAST(f_char1 AS SIGNED INT),
440
f_charbig = CONCAT('===',f_char1,'===');
441
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
443
SET new.f_int1 = @my_max1 + @counter,
444
new.f_int2 = @my_min2 - @counter,
445
new.f_charbig = '####updated per insert trigger####';
446
SET @counter = @counter + 1;
449
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
450
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
451
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
452
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
453
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
457
# check trigger-11 success: 1
459
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
460
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
461
AND f_charbig = '####updated per insert trigger####';
462
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
464
SET new.f_int1 = @my_max1 + @counter,
465
new.f_int2 = @my_min2 - @counter,
466
new.f_charbig = '####updated per insert trigger####';
467
SET @counter = @counter + 1;
470
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
471
INSERT INTO t1 (f_char1, f_char2, f_charbig)
472
SELECT CAST(f_int1 AS CHAR),
473
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
474
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
478
# check trigger-12 success: 1
480
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
481
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
482
AND f_charbig = '####updated per insert trigger####';
484
Table Op Msg_type Msg_text
485
test.t1 analyze note The storage engine for the table doesn't support analyze
486
CHECK TABLE t1 EXTENDED;
487
Table Op Msg_type Msg_text
488
test.t1 check note The storage engine for the table doesn't support check
489
CHECKSUM TABLE t1 EXTENDED;
493
Table Op Msg_type Msg_text
494
test.t1 optimize note The storage engine for the table doesn't support optimize
495
# check layout success: 1
496
REPAIR TABLE t1 EXTENDED;
497
Table Op Msg_type Msg_text
498
test.t1 repair note The storage engine for the table doesn't support repair
499
# check layout success: 1
502
# check TRUNCATE success: 1
503
# check layout success: 1
504
# End usability test (include/partition_check.inc)
506
#------------------------------------------------------------------------
507
# 2 Assignment of storage engine just after partition or subpartition
509
#------------------------------------------------------------------------
515
f_charbig VARCHAR(1000)
517
PARTITION BY HASH(f_int1)
518
( PARTITION part1 STORAGE ENGINE = 'ndbcluster',
519
PARTITION part2 STORAGE ENGINE = 'ndbcluster'
521
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
522
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
523
# Start usability test (include/partition_check.inc)
525
SHOW CREATE TABLE t1;
527
t1 CREATE TABLE `t1` (
528
`f_int1` int(11) DEFAULT NULL,
529
`f_int2` int(11) DEFAULT NULL,
530
`f_char1` char(20) DEFAULT NULL,
531
`f_char2` char(20) DEFAULT NULL,
532
`f_charbig` varchar(1000) DEFAULT NULL
533
) ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY HASH (f_int1) (PARTITION part1 ENGINE = ndbcluster, PARTITION part2 ENGINE = ndbcluster)
535
# check prerequisites-1 success: 1
536
# check COUNT(*) success: 1
537
# check MIN/MAX(f_int1) success: 1
538
# check MIN/MAX(f_int2) success: 1
539
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
540
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
541
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
542
WHERE f_int1 IN (2,3);
543
# check prerequisites-3 success: 1
544
DELETE FROM t1 WHERE f_charbig = 'delete me';
545
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
546
# check read via f_int1 success: 1
547
# check read via f_int2 success: 1
549
# check multiple-1 success: 1
550
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
552
# check multiple-2 success: 1
553
INSERT INTO t1 SELECT * FROM t0_template
554
WHERE MOD(f_int1,3) = 0;
556
# check multiple-3 success: 1
557
UPDATE t1 SET f_int1 = f_int1 + @max_row
558
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
559
AND @max_row_div2 + @max_row_div4;
561
# check multiple-4 success: 1
563
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
564
AND @max_row_div2 + @max_row_div4 + @max_row;
566
# check multiple-5 success: 1
567
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
569
SET f_int1 = @cur_value , f_int2 = @cur_value,
570
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
571
f_charbig = '#SINGLE#';
573
# check single-1 success: 1
574
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
576
SET f_int1 = @cur_value , f_int2 = @cur_value,
577
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
578
f_charbig = '#SINGLE#';
580
# check single-2 success: 1
581
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
582
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
583
UPDATE t1 SET f_int1 = @cur_value2
584
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
586
# check single-3 success: 1
588
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
589
UPDATE t1 SET f_int1 = @cur_value1
590
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
592
# check single-4 success: 1
593
SELECT MAX(f_int1) INTO @cur_value FROM t1;
594
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
596
# check single-5 success: 1
597
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
599
# check single-6 success: 1
600
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
602
# check single-7 success: 1
603
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
604
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
605
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
606
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
607
f_charbig = '#NULL#';
609
SET f_int1 = NULL , f_int2 = -@max_row,
610
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
611
f_charbig = '#NULL#';
612
# check null success: 1
614
# check null-1 success: 1
615
UPDATE t1 SET f_int1 = -@max_row
616
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
617
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
619
# check null-2 success: 1
620
UPDATE t1 SET f_int1 = NULL
621
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
622
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
624
# check null-3 success: 1
626
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
627
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
629
# check null-4 success: 1
631
WHERE f_int1 = 0 AND f_int2 = 0
632
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
633
AND f_charbig = '#NULL#';
635
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
636
SELECT f_int1, f_int1, '', '', 'was inserted'
637
FROM t0_template source_tab
638
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
640
# check transactions-1 success: 1
643
# check transactions-2 success: 1
646
# check transactions-3 success: 1
647
DELETE FROM t1 WHERE f_charbig = 'was inserted';
651
# check transactions-4 success: 1
652
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
653
SELECT f_int1, f_int1, '', '', 'was inserted'
654
FROM t0_template source_tab
655
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
657
# check transactions-5 success: 1
660
# check transactions-6 success: 1
661
# INFO: Storage engine used for t1 seems to be transactional.
664
# check transactions-7 success: 1
665
DELETE FROM t1 WHERE f_charbig = 'was inserted';
667
SET @@session.sql_mode = 'traditional';
668
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
669
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
670
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
671
'', '', 'was inserted' FROM t0_template
672
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
673
ERROR 22012: Division by 0
676
# check transactions-8 success: 1
677
# INFO: Storage engine used for t1 seems to be unable to revert
678
# changes made by the failing statement.
679
SET @@session.sql_mode = '';
681
DELETE FROM t1 WHERE f_charbig = 'was inserted';
683
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
685
# check special-1 success: 1
686
UPDATE t1 SET f_charbig = '';
688
# check special-2 success: 1
689
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
690
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
691
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
692
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
693
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
694
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
695
'just inserted' FROM t0_template
696
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
697
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
699
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
700
f_charbig = 'updated by trigger'
701
WHERE f_int1 = new.f_int1;
703
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
704
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
705
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
707
# check trigger-1 success: 1
709
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
710
f_int2 = CAST(f_char1 AS SIGNED INT),
711
f_charbig = 'just inserted'
712
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
714
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
715
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
716
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
717
'just inserted' FROM t0_template
718
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
719
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
721
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
722
f_charbig = 'updated by trigger'
723
WHERE f_int1 = new.f_int1;
725
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
726
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
727
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
729
# check trigger-2 success: 1
731
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
732
f_int2 = CAST(f_char1 AS SIGNED INT),
733
f_charbig = 'just inserted'
734
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
736
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
737
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
738
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
739
'just inserted' FROM t0_template
740
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
741
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
743
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
744
f_charbig = 'updated by trigger'
745
WHERE f_int1 = new.f_int1;
747
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
748
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
750
# check trigger-3 success: 1
752
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
753
f_int2 = CAST(f_char1 AS SIGNED INT),
754
f_charbig = 'just inserted'
755
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
757
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
758
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
759
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
760
'just inserted' FROM t0_template
761
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
762
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
764
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
765
f_charbig = 'updated by trigger'
766
WHERE f_int1 = - old.f_int1;
768
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
769
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
771
# check trigger-4 success: 1
773
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
774
f_int2 = CAST(f_char1 AS SIGNED INT),
775
f_charbig = 'just inserted'
776
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
778
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
779
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
780
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
781
'just inserted' FROM t0_template
782
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
783
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
785
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
786
f_charbig = 'updated by trigger'
787
WHERE f_int1 = new.f_int1;
789
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
790
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
792
# check trigger-5 success: 1
794
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
795
f_int2 = CAST(f_char1 AS SIGNED INT),
796
f_charbig = 'just inserted'
797
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
799
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
800
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
801
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
802
'just inserted' FROM t0_template
803
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
804
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
806
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
807
f_charbig = 'updated by trigger'
808
WHERE f_int1 = - old.f_int1;
810
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
811
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
813
# check trigger-6 success: 1
815
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
816
f_int2 = CAST(f_char1 AS SIGNED INT),
817
f_charbig = 'just inserted'
818
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
820
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
821
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
822
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
823
'just inserted' FROM t0_template
824
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
825
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
827
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
828
f_charbig = 'updated by trigger'
829
WHERE f_int1 = - old.f_int1;
832
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
834
# check trigger-7 success: 1
836
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
837
f_int2 = CAST(f_char1 AS SIGNED INT),
838
f_charbig = 'just inserted'
839
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
841
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
842
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
843
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
844
'just inserted' FROM t0_template
845
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
846
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
848
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
849
f_charbig = 'updated by trigger'
850
WHERE f_int1 = - old.f_int1;
853
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
855
# check trigger-8 success: 1
857
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
858
f_int2 = CAST(f_char1 AS SIGNED INT),
859
f_charbig = 'just inserted'
860
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
862
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
864
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
865
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
867
SET new.f_int1 = old.f_int1 + @max_row,
868
new.f_int2 = old.f_int2 - @max_row,
869
new.f_charbig = '####updated per update trigger####';
872
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
873
f_charbig = '####updated per update statement itself####';
875
# check trigger-9 success: 1
877
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
878
f_int2 = CAST(f_char1 AS SIGNED INT),
879
f_charbig = CONCAT('===',f_char1,'===');
880
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
882
SET new.f_int1 = new.f_int1 + @max_row,
883
new.f_int2 = new.f_int2 - @max_row,
884
new.f_charbig = '####updated per update trigger####';
887
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
888
f_charbig = '####updated per update statement itself####';
890
# check trigger-10 success: 1
892
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
893
f_int2 = CAST(f_char1 AS SIGNED INT),
894
f_charbig = CONCAT('===',f_char1,'===');
895
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
897
SET new.f_int1 = @my_max1 + @counter,
898
new.f_int2 = @my_min2 - @counter,
899
new.f_charbig = '####updated per insert trigger####';
900
SET @counter = @counter + 1;
903
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
904
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
905
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
906
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
907
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
911
# check trigger-11 success: 1
913
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
914
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
915
AND f_charbig = '####updated per insert trigger####';
916
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
918
SET new.f_int1 = @my_max1 + @counter,
919
new.f_int2 = @my_min2 - @counter,
920
new.f_charbig = '####updated per insert trigger####';
921
SET @counter = @counter + 1;
924
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
925
INSERT INTO t1 (f_char1, f_char2, f_charbig)
926
SELECT CAST(f_int1 AS CHAR),
927
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
928
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
932
# check trigger-12 success: 1
934
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
935
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
936
AND f_charbig = '####updated per insert trigger####';
938
Table Op Msg_type Msg_text
939
test.t1 analyze note The storage engine for the table doesn't support analyze
940
CHECK TABLE t1 EXTENDED;
941
Table Op Msg_type Msg_text
942
test.t1 check note The storage engine for the table doesn't support check
943
CHECKSUM TABLE t1 EXTENDED;
947
Table Op Msg_type Msg_text
948
test.t1 optimize note The storage engine for the table doesn't support optimize
949
# check layout success: 1
950
REPAIR TABLE t1 EXTENDED;
951
Table Op Msg_type Msg_text
952
test.t1 repair note The storage engine for the table doesn't support repair
953
# check layout success: 1
956
# check TRUNCATE success: 1
957
# check layout success: 1
958
# End usability test (include/partition_check.inc)
965
f_charbig VARCHAR(1000)
967
PARTITION BY RANGE(f_int1)
968
SUBPARTITION BY HASH(f_int1)
969
( PARTITION part1 VALUES LESS THAN (10)
970
(SUBPARTITION subpart11 STORAGE ENGINE = 'ndbcluster',
971
SUBPARTITION subpart12 STORAGE ENGINE = 'ndbcluster'),
972
PARTITION part2 VALUES LESS THAN (2147483646)
973
(SUBPARTITION subpart21 STORAGE ENGINE = 'ndbcluster',
974
SUBPARTITION subpart22 STORAGE ENGINE = 'ndbcluster')
976
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
977
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
978
# Start usability test (include/partition_check.inc)
980
SHOW CREATE TABLE t1;
982
t1 CREATE TABLE `t1` (
983
`f_int1` int(11) DEFAULT NULL,
984
`f_int2` int(11) DEFAULT NULL,
985
`f_char1` char(20) DEFAULT NULL,
986
`f_char2` char(20) DEFAULT NULL,
987
`f_charbig` varchar(1000) DEFAULT NULL
988
) ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY RANGE (f_int1) SUBPARTITION BY HASH (f_int1) (PARTITION part1 VALUES LESS THAN (10) (SUBPARTITION subpart11 ENGINE = ndbcluster, SUBPARTITION subpart12 ENGINE = ndbcluster), PARTITION part2 VALUES LESS THAN (2147483646) (SUBPARTITION subpart21 ENGINE = ndbcluster, SUBPARTITION subpart22 ENGINE = ndbcluster))
990
# check prerequisites-1 success: 1
991
# check COUNT(*) success: 1
992
# check MIN/MAX(f_int1) success: 1
993
# check MIN/MAX(f_int2) success: 1
994
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
995
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
996
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
997
WHERE f_int1 IN (2,3);
998
# check prerequisites-3 success: 1
999
DELETE FROM t1 WHERE f_charbig = 'delete me';
1000
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
1001
# check read via f_int1 success: 1
1002
# check read via f_int2 success: 1
1004
# check multiple-1 success: 1
1005
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
1007
# check multiple-2 success: 1
1008
INSERT INTO t1 SELECT * FROM t0_template
1009
WHERE MOD(f_int1,3) = 0;
1011
# check multiple-3 success: 1
1012
UPDATE t1 SET f_int1 = f_int1 + @max_row
1013
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
1014
AND @max_row_div2 + @max_row_div4;
1016
# check multiple-4 success: 1
1018
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
1019
AND @max_row_div2 + @max_row_div4 + @max_row;
1021
# check multiple-5 success: 1
1022
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
1024
SET f_int1 = @cur_value , f_int2 = @cur_value,
1025
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
1026
f_charbig = '#SINGLE#';
1028
# check single-1 success: 1
1029
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
1031
SET f_int1 = @cur_value , f_int2 = @cur_value,
1032
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
1033
f_charbig = '#SINGLE#';
1035
# check single-2 success: 1
1036
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
1037
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
1038
UPDATE t1 SET f_int1 = @cur_value2
1039
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
1041
# check single-3 success: 1
1042
SET @cur_value1= -1;
1043
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
1044
UPDATE t1 SET f_int1 = @cur_value1
1045
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
1047
# check single-4 success: 1
1048
SELECT MAX(f_int1) INTO @cur_value FROM t1;
1049
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
1051
# check single-5 success: 1
1052
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
1054
# check single-6 success: 1
1055
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
1056
ERROR HY000: Table has no partition for value 2147483647
1057
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
1058
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
1059
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
1060
f_charbig = '#NULL#';
1062
SET f_int1 = NULL , f_int2 = -@max_row,
1063
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
1064
f_charbig = '#NULL#';
1065
# check null success: 1
1067
# check null-1 success: 1
1068
UPDATE t1 SET f_int1 = -@max_row
1069
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
1070
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
1072
# check null-2 success: 1
1073
UPDATE t1 SET f_int1 = NULL
1074
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
1075
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
1077
# check null-3 success: 1
1079
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
1080
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
1082
# check null-4 success: 1
1084
WHERE f_int1 = 0 AND f_int2 = 0
1085
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
1086
AND f_charbig = '#NULL#';
1088
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1089
SELECT f_int1, f_int1, '', '', 'was inserted'
1090
FROM t0_template source_tab
1091
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
1093
# check transactions-1 success: 1
1096
# check transactions-2 success: 1
1099
# check transactions-3 success: 1
1100
DELETE FROM t1 WHERE f_charbig = 'was inserted';
1104
# check transactions-4 success: 1
1105
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1106
SELECT f_int1, f_int1, '', '', 'was inserted'
1107
FROM t0_template source_tab
1108
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
1110
# check transactions-5 success: 1
1113
# check transactions-6 success: 1
1114
# INFO: Storage engine used for t1 seems to be transactional.
1117
# check transactions-7 success: 1
1118
DELETE FROM t1 WHERE f_charbig = 'was inserted';
1120
SET @@session.sql_mode = 'traditional';
1121
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
1122
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1123
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
1124
'', '', 'was inserted' FROM t0_template
1125
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
1126
ERROR 22012: Division by 0
1129
# check transactions-8 success: 1
1130
# INFO: Storage engine used for t1 seems to be unable to revert
1131
# changes made by the failing statement.
1132
SET @@session.sql_mode = '';
1134
DELETE FROM t1 WHERE f_charbig = 'was inserted';
1136
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
1138
# check special-1 success: 1
1139
UPDATE t1 SET f_charbig = '';
1141
# check special-2 success: 1
1142
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
1143
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
1144
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
1145
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1146
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1147
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1148
'just inserted' FROM t0_template
1149
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1150
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
1152
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1153
f_charbig = 'updated by trigger'
1154
WHERE f_int1 = new.f_int1;
1156
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1157
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
1158
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1160
# check trigger-1 success: 1
1162
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1163
f_int2 = CAST(f_char1 AS SIGNED INT),
1164
f_charbig = 'just inserted'
1165
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1167
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1168
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1169
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1170
'just inserted' FROM t0_template
1171
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1172
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
1174
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1175
f_charbig = 'updated by trigger'
1176
WHERE f_int1 = new.f_int1;
1178
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1179
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
1180
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1182
# check trigger-2 success: 1
1184
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1185
f_int2 = CAST(f_char1 AS SIGNED INT),
1186
f_charbig = 'just inserted'
1187
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1189
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1190
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1191
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1192
'just inserted' FROM t0_template
1193
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1194
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
1196
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1197
f_charbig = 'updated by trigger'
1198
WHERE f_int1 = new.f_int1;
1200
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
1201
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1203
# check trigger-3 success: 1
1205
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1206
f_int2 = CAST(f_char1 AS SIGNED INT),
1207
f_charbig = 'just inserted'
1208
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1210
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1211
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1212
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1213
'just inserted' FROM t0_template
1214
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1215
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
1217
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1218
f_charbig = 'updated by trigger'
1219
WHERE f_int1 = - old.f_int1;
1221
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
1222
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1224
# check trigger-4 success: 1
1226
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1227
f_int2 = CAST(f_char1 AS SIGNED INT),
1228
f_charbig = 'just inserted'
1229
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1231
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1232
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1233
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1234
'just inserted' FROM t0_template
1235
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1236
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
1238
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1239
f_charbig = 'updated by trigger'
1240
WHERE f_int1 = new.f_int1;
1242
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
1243
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1245
# check trigger-5 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 AFTER 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 = - old.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-6 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 DELETE 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;
1285
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1287
# check trigger-7 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 DELETE 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 = - old.f_int1;
1306
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1308
# check trigger-8 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;
1317
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1318
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
1320
SET new.f_int1 = old.f_int1 + @max_row,
1321
new.f_int2 = old.f_int2 - @max_row,
1322
new.f_charbig = '####updated per update trigger####';
1325
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
1326
f_charbig = '####updated per update statement itself####';
1328
# check trigger-9 success: 1
1330
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1331
f_int2 = CAST(f_char1 AS SIGNED INT),
1332
f_charbig = CONCAT('===',f_char1,'===');
1333
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
1335
SET new.f_int1 = new.f_int1 + @max_row,
1336
new.f_int2 = new.f_int2 - @max_row,
1337
new.f_charbig = '####updated per update trigger####';
1340
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
1341
f_charbig = '####updated per update statement itself####';
1343
# check trigger-10 success: 1
1345
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1346
f_int2 = CAST(f_char1 AS SIGNED INT),
1347
f_charbig = CONCAT('===',f_char1,'===');
1348
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
1350
SET new.f_int1 = @my_max1 + @counter,
1351
new.f_int2 = @my_min2 - @counter,
1352
new.f_charbig = '####updated per insert trigger####';
1353
SET @counter = @counter + 1;
1356
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
1357
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1358
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
1359
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
1360
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
1364
# check trigger-11 success: 1
1366
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
1367
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
1368
AND f_charbig = '####updated per insert trigger####';
1369
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
1371
SET new.f_int1 = @my_max1 + @counter,
1372
new.f_int2 = @my_min2 - @counter,
1373
new.f_charbig = '####updated per insert trigger####';
1374
SET @counter = @counter + 1;
1377
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
1378
INSERT INTO t1 (f_char1, f_char2, f_charbig)
1379
SELECT CAST(f_int1 AS CHAR),
1380
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
1381
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
1385
# check trigger-12 success: 1
1387
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
1388
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
1389
AND f_charbig = '####updated per insert trigger####';
1391
Table Op Msg_type Msg_text
1392
test.t1 analyze note The storage engine for the table doesn't support analyze
1393
CHECK TABLE t1 EXTENDED;
1394
Table Op Msg_type Msg_text
1395
test.t1 check note The storage engine for the table doesn't support check
1396
CHECKSUM TABLE t1 EXTENDED;
1398
test.t1 <some_value>
1400
Table Op Msg_type Msg_text
1401
test.t1 optimize note The storage engine for the table doesn't support optimize
1402
# check layout success: 1
1403
REPAIR TABLE t1 EXTENDED;
1404
Table Op Msg_type Msg_text
1405
test.t1 repair note The storage engine for the table doesn't support repair
1406
# check layout success: 1
1409
# check TRUNCATE success: 1
1410
# check layout success: 1
1411
# End usability test (include/partition_check.inc)
1413
#------------------------------------------------------------------------
1414
# 3 Some but not all named partitions or subpartitions get a storage
1416
#------------------------------------------------------------------------
1422
f_charbig VARCHAR(1000)
1424
PARTITION BY HASH(f_int1)
1425
( PARTITION part1 STORAGE ENGINE = 'ndbcluster',
1428
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
1429
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
1430
# Start usability test (include/partition_check.inc)
1432
SHOW CREATE TABLE t1;
1434
t1 CREATE TABLE `t1` (
1435
`f_int1` int(11) DEFAULT NULL,
1436
`f_int2` int(11) DEFAULT NULL,
1437
`f_char1` char(20) DEFAULT NULL,
1438
`f_char2` char(20) DEFAULT NULL,
1439
`f_charbig` varchar(1000) DEFAULT NULL
1440
) ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY HASH (f_int1) (PARTITION part1 ENGINE = ndbcluster, PARTITION part2 ENGINE = ndbcluster)
1442
# check prerequisites-1 success: 1
1443
# check COUNT(*) success: 1
1444
# check MIN/MAX(f_int1) success: 1
1445
# check MIN/MAX(f_int2) success: 1
1446
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1447
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
1448
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
1449
WHERE f_int1 IN (2,3);
1450
# check prerequisites-3 success: 1
1451
DELETE FROM t1 WHERE f_charbig = 'delete me';
1452
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
1453
# check read via f_int1 success: 1
1454
# check read via f_int2 success: 1
1456
# check multiple-1 success: 1
1457
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
1459
# check multiple-2 success: 1
1460
INSERT INTO t1 SELECT * FROM t0_template
1461
WHERE MOD(f_int1,3) = 0;
1463
# check multiple-3 success: 1
1464
UPDATE t1 SET f_int1 = f_int1 + @max_row
1465
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
1466
AND @max_row_div2 + @max_row_div4;
1468
# check multiple-4 success: 1
1470
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
1471
AND @max_row_div2 + @max_row_div4 + @max_row;
1473
# check multiple-5 success: 1
1474
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
1476
SET f_int1 = @cur_value , f_int2 = @cur_value,
1477
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
1478
f_charbig = '#SINGLE#';
1480
# check single-1 success: 1
1481
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
1483
SET f_int1 = @cur_value , f_int2 = @cur_value,
1484
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
1485
f_charbig = '#SINGLE#';
1487
# check single-2 success: 1
1488
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
1489
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
1490
UPDATE t1 SET f_int1 = @cur_value2
1491
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
1493
# check single-3 success: 1
1494
SET @cur_value1= -1;
1495
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
1496
UPDATE t1 SET f_int1 = @cur_value1
1497
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
1499
# check single-4 success: 1
1500
SELECT MAX(f_int1) INTO @cur_value FROM t1;
1501
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
1503
# check single-5 success: 1
1504
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
1506
# check single-6 success: 1
1507
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
1509
# check single-7 success: 1
1510
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
1511
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
1512
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
1513
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
1514
f_charbig = '#NULL#';
1516
SET f_int1 = NULL , f_int2 = -@max_row,
1517
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
1518
f_charbig = '#NULL#';
1519
# check null success: 1
1521
# check null-1 success: 1
1522
UPDATE t1 SET f_int1 = -@max_row
1523
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
1524
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
1526
# check null-2 success: 1
1527
UPDATE t1 SET f_int1 = NULL
1528
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
1529
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
1531
# check null-3 success: 1
1533
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
1534
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
1536
# check null-4 success: 1
1538
WHERE f_int1 = 0 AND f_int2 = 0
1539
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
1540
AND f_charbig = '#NULL#';
1542
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1543
SELECT f_int1, f_int1, '', '', 'was inserted'
1544
FROM t0_template source_tab
1545
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
1547
# check transactions-1 success: 1
1550
# check transactions-2 success: 1
1553
# check transactions-3 success: 1
1554
DELETE FROM t1 WHERE f_charbig = 'was inserted';
1558
# check transactions-4 success: 1
1559
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1560
SELECT f_int1, f_int1, '', '', 'was inserted'
1561
FROM t0_template source_tab
1562
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
1564
# check transactions-5 success: 1
1567
# check transactions-6 success: 1
1568
# INFO: Storage engine used for t1 seems to be transactional.
1571
# check transactions-7 success: 1
1572
DELETE FROM t1 WHERE f_charbig = 'was inserted';
1574
SET @@session.sql_mode = 'traditional';
1575
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
1576
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1577
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
1578
'', '', 'was inserted' FROM t0_template
1579
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
1580
ERROR 22012: Division by 0
1583
# check transactions-8 success: 1
1584
# INFO: Storage engine used for t1 seems to be unable to revert
1585
# changes made by the failing statement.
1586
SET @@session.sql_mode = '';
1588
DELETE FROM t1 WHERE f_charbig = 'was inserted';
1590
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
1592
# check special-1 success: 1
1593
UPDATE t1 SET f_charbig = '';
1595
# check special-2 success: 1
1596
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
1597
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
1598
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
1599
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1600
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1601
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1602
'just inserted' FROM t0_template
1603
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1604
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
1606
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1607
f_charbig = 'updated by trigger'
1608
WHERE f_int1 = new.f_int1;
1610
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1611
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
1612
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1614
# check trigger-1 success: 1
1616
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1617
f_int2 = CAST(f_char1 AS SIGNED INT),
1618
f_charbig = 'just inserted'
1619
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1621
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1622
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1623
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1624
'just inserted' FROM t0_template
1625
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1626
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
1628
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1629
f_charbig = 'updated by trigger'
1630
WHERE f_int1 = new.f_int1;
1632
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1633
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
1634
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1636
# check trigger-2 success: 1
1638
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1639
f_int2 = CAST(f_char1 AS SIGNED INT),
1640
f_charbig = 'just inserted'
1641
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1643
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1644
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1645
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1646
'just inserted' FROM t0_template
1647
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1648
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
1650
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1651
f_charbig = 'updated by trigger'
1652
WHERE f_int1 = new.f_int1;
1654
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
1655
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1657
# check trigger-3 success: 1
1659
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1660
f_int2 = CAST(f_char1 AS SIGNED INT),
1661
f_charbig = 'just inserted'
1662
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1664
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1665
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1666
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1667
'just inserted' FROM t0_template
1668
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1669
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
1671
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1672
f_charbig = 'updated by trigger'
1673
WHERE f_int1 = - old.f_int1;
1675
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
1676
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1678
# check trigger-4 success: 1
1680
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1681
f_int2 = CAST(f_char1 AS SIGNED INT),
1682
f_charbig = 'just inserted'
1683
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1685
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1686
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1687
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1688
'just inserted' FROM t0_template
1689
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1690
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
1692
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1693
f_charbig = 'updated by trigger'
1694
WHERE f_int1 = new.f_int1;
1696
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
1697
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1699
# check trigger-5 success: 1
1701
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1702
f_int2 = CAST(f_char1 AS SIGNED INT),
1703
f_charbig = 'just inserted'
1704
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1706
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1707
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1708
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1709
'just inserted' FROM t0_template
1710
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1711
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
1713
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1714
f_charbig = 'updated by trigger'
1715
WHERE f_int1 = - old.f_int1;
1717
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
1718
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1720
# check trigger-6 success: 1
1722
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1723
f_int2 = CAST(f_char1 AS SIGNED INT),
1724
f_charbig = 'just inserted'
1725
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1727
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1728
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1729
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1730
'just inserted' FROM t0_template
1731
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1732
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
1734
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1735
f_charbig = 'updated by trigger'
1736
WHERE f_int1 = - old.f_int1;
1739
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1741
# check trigger-7 success: 1
1743
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1744
f_int2 = CAST(f_char1 AS SIGNED INT),
1745
f_charbig = 'just inserted'
1746
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1748
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1749
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1750
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1751
'just inserted' FROM t0_template
1752
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1753
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
1755
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1756
f_charbig = 'updated by trigger'
1757
WHERE f_int1 = - old.f_int1;
1760
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1762
# check trigger-8 success: 1
1764
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1765
f_int2 = CAST(f_char1 AS SIGNED INT),
1766
f_charbig = 'just inserted'
1767
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1769
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1771
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1772
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
1774
SET new.f_int1 = old.f_int1 + @max_row,
1775
new.f_int2 = old.f_int2 - @max_row,
1776
new.f_charbig = '####updated per update trigger####';
1779
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
1780
f_charbig = '####updated per update statement itself####';
1782
# check trigger-9 success: 1
1784
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1785
f_int2 = CAST(f_char1 AS SIGNED INT),
1786
f_charbig = CONCAT('===',f_char1,'===');
1787
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
1789
SET new.f_int1 = new.f_int1 + @max_row,
1790
new.f_int2 = new.f_int2 - @max_row,
1791
new.f_charbig = '####updated per update trigger####';
1794
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
1795
f_charbig = '####updated per update statement itself####';
1797
# check trigger-10 success: 1
1799
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1800
f_int2 = CAST(f_char1 AS SIGNED INT),
1801
f_charbig = CONCAT('===',f_char1,'===');
1802
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
1804
SET new.f_int1 = @my_max1 + @counter,
1805
new.f_int2 = @my_min2 - @counter,
1806
new.f_charbig = '####updated per insert trigger####';
1807
SET @counter = @counter + 1;
1810
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
1811
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1812
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
1813
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
1814
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
1818
# check trigger-11 success: 1
1820
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
1821
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
1822
AND f_charbig = '####updated per insert trigger####';
1823
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
1825
SET new.f_int1 = @my_max1 + @counter,
1826
new.f_int2 = @my_min2 - @counter,
1827
new.f_charbig = '####updated per insert trigger####';
1828
SET @counter = @counter + 1;
1831
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
1832
INSERT INTO t1 (f_char1, f_char2, f_charbig)
1833
SELECT CAST(f_int1 AS CHAR),
1834
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
1835
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
1839
# check trigger-12 success: 1
1841
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
1842
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
1843
AND f_charbig = '####updated per insert trigger####';
1845
Table Op Msg_type Msg_text
1846
test.t1 analyze note The storage engine for the table doesn't support analyze
1847
CHECK TABLE t1 EXTENDED;
1848
Table Op Msg_type Msg_text
1849
test.t1 check note The storage engine for the table doesn't support check
1850
CHECKSUM TABLE t1 EXTENDED;
1852
test.t1 <some_value>
1854
Table Op Msg_type Msg_text
1855
test.t1 optimize note The storage engine for the table doesn't support optimize
1856
# check layout success: 1
1857
REPAIR TABLE t1 EXTENDED;
1858
Table Op Msg_type Msg_text
1859
test.t1 repair note The storage engine for the table doesn't support repair
1860
# check layout success: 1
1863
# check TRUNCATE success: 1
1864
# check layout success: 1
1865
# End usability test (include/partition_check.inc)
1872
f_charbig VARCHAR(1000)
1874
PARTITION BY HASH(f_int1)
1876
PARTITION part2 STORAGE ENGINE = 'ndbcluster'
1878
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
1879
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
1880
# Start usability test (include/partition_check.inc)
1882
SHOW CREATE TABLE t1;
1884
t1 CREATE TABLE `t1` (
1885
`f_int1` int(11) DEFAULT NULL,
1886
`f_int2` int(11) DEFAULT NULL,
1887
`f_char1` char(20) DEFAULT NULL,
1888
`f_char2` char(20) DEFAULT NULL,
1889
`f_charbig` varchar(1000) DEFAULT NULL
1890
) ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY HASH (f_int1) (PARTITION part1 ENGINE = ndbcluster, PARTITION part2 ENGINE = ndbcluster)
1892
# check prerequisites-1 success: 1
1893
# check COUNT(*) success: 1
1894
# check MIN/MAX(f_int1) success: 1
1895
# check MIN/MAX(f_int2) success: 1
1896
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1897
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
1898
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
1899
WHERE f_int1 IN (2,3);
1900
# check prerequisites-3 success: 1
1901
DELETE FROM t1 WHERE f_charbig = 'delete me';
1902
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
1903
# check read via f_int1 success: 1
1904
# check read via f_int2 success: 1
1906
# check multiple-1 success: 1
1907
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
1909
# check multiple-2 success: 1
1910
INSERT INTO t1 SELECT * FROM t0_template
1911
WHERE MOD(f_int1,3) = 0;
1913
# check multiple-3 success: 1
1914
UPDATE t1 SET f_int1 = f_int1 + @max_row
1915
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
1916
AND @max_row_div2 + @max_row_div4;
1918
# check multiple-4 success: 1
1920
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
1921
AND @max_row_div2 + @max_row_div4 + @max_row;
1923
# check multiple-5 success: 1
1924
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
1926
SET f_int1 = @cur_value , f_int2 = @cur_value,
1927
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
1928
f_charbig = '#SINGLE#';
1930
# check single-1 success: 1
1931
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
1933
SET f_int1 = @cur_value , f_int2 = @cur_value,
1934
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
1935
f_charbig = '#SINGLE#';
1937
# check single-2 success: 1
1938
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
1939
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
1940
UPDATE t1 SET f_int1 = @cur_value2
1941
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
1943
# check single-3 success: 1
1944
SET @cur_value1= -1;
1945
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
1946
UPDATE t1 SET f_int1 = @cur_value1
1947
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
1949
# check single-4 success: 1
1950
SELECT MAX(f_int1) INTO @cur_value FROM t1;
1951
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
1953
# check single-5 success: 1
1954
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
1956
# check single-6 success: 1
1957
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
1959
# check single-7 success: 1
1960
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
1961
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
1962
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
1963
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
1964
f_charbig = '#NULL#';
1966
SET f_int1 = NULL , f_int2 = -@max_row,
1967
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
1968
f_charbig = '#NULL#';
1969
# check null success: 1
1971
# check null-1 success: 1
1972
UPDATE t1 SET f_int1 = -@max_row
1973
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
1974
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
1976
# check null-2 success: 1
1977
UPDATE t1 SET f_int1 = NULL
1978
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
1979
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
1981
# check null-3 success: 1
1983
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
1984
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
1986
# check null-4 success: 1
1988
WHERE f_int1 = 0 AND f_int2 = 0
1989
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
1990
AND f_charbig = '#NULL#';
1992
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1993
SELECT f_int1, f_int1, '', '', 'was inserted'
1994
FROM t0_template source_tab
1995
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
1997
# check transactions-1 success: 1
2000
# check transactions-2 success: 1
2003
# check transactions-3 success: 1
2004
DELETE FROM t1 WHERE f_charbig = 'was inserted';
2008
# check transactions-4 success: 1
2009
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2010
SELECT f_int1, f_int1, '', '', 'was inserted'
2011
FROM t0_template source_tab
2012
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
2014
# check transactions-5 success: 1
2017
# check transactions-6 success: 1
2018
# INFO: Storage engine used for t1 seems to be transactional.
2021
# check transactions-7 success: 1
2022
DELETE FROM t1 WHERE f_charbig = 'was inserted';
2024
SET @@session.sql_mode = 'traditional';
2025
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
2026
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2027
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
2028
'', '', 'was inserted' FROM t0_template
2029
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
2030
ERROR 22012: Division by 0
2033
# check transactions-8 success: 1
2034
# INFO: Storage engine used for t1 seems to be unable to revert
2035
# changes made by the failing statement.
2036
SET @@session.sql_mode = '';
2038
DELETE FROM t1 WHERE f_charbig = 'was inserted';
2040
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
2042
# check special-1 success: 1
2043
UPDATE t1 SET f_charbig = '';
2045
# check special-2 success: 1
2046
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
2047
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
2048
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
2049
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2050
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2051
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2052
'just inserted' FROM t0_template
2053
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2054
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
2056
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2057
f_charbig = 'updated by trigger'
2058
WHERE f_int1 = new.f_int1;
2060
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2061
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
2062
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2064
# check trigger-1 success: 1
2066
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2067
f_int2 = CAST(f_char1 AS SIGNED INT),
2068
f_charbig = 'just inserted'
2069
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2071
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2072
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2073
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2074
'just inserted' FROM t0_template
2075
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2076
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
2078
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2079
f_charbig = 'updated by trigger'
2080
WHERE f_int1 = new.f_int1;
2082
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2083
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
2084
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2086
# check trigger-2 success: 1
2088
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2089
f_int2 = CAST(f_char1 AS SIGNED INT),
2090
f_charbig = 'just inserted'
2091
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2093
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2094
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2095
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2096
'just inserted' FROM t0_template
2097
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2098
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
2100
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2101
f_charbig = 'updated by trigger'
2102
WHERE f_int1 = new.f_int1;
2104
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
2105
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2107
# check trigger-3 success: 1
2109
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2110
f_int2 = CAST(f_char1 AS SIGNED INT),
2111
f_charbig = 'just inserted'
2112
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2114
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2115
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2116
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2117
'just inserted' FROM t0_template
2118
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2119
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
2121
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2122
f_charbig = 'updated by trigger'
2123
WHERE f_int1 = - old.f_int1;
2125
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
2126
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2128
# check trigger-4 success: 1
2130
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2131
f_int2 = CAST(f_char1 AS SIGNED INT),
2132
f_charbig = 'just inserted'
2133
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2135
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2136
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2137
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2138
'just inserted' FROM t0_template
2139
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2140
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
2142
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2143
f_charbig = 'updated by trigger'
2144
WHERE f_int1 = new.f_int1;
2146
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
2147
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2149
# check trigger-5 success: 1
2151
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2152
f_int2 = CAST(f_char1 AS SIGNED INT),
2153
f_charbig = 'just inserted'
2154
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2156
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2157
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2158
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2159
'just inserted' FROM t0_template
2160
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2161
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
2163
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2164
f_charbig = 'updated by trigger'
2165
WHERE f_int1 = - old.f_int1;
2167
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
2168
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2170
# check trigger-6 success: 1
2172
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2173
f_int2 = CAST(f_char1 AS SIGNED INT),
2174
f_charbig = 'just inserted'
2175
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2177
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2178
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2179
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2180
'just inserted' FROM t0_template
2181
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2182
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
2184
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2185
f_charbig = 'updated by trigger'
2186
WHERE f_int1 = - old.f_int1;
2189
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2191
# check trigger-7 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 DELETE 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 = - old.f_int1;
2210
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2212
# check trigger-8 success: 1
2214
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2215
f_int2 = CAST(f_char1 AS SIGNED INT),
2216
f_charbig = 'just inserted'
2217
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2219
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2221
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2222
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
2224
SET new.f_int1 = old.f_int1 + @max_row,
2225
new.f_int2 = old.f_int2 - @max_row,
2226
new.f_charbig = '####updated per update trigger####';
2229
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
2230
f_charbig = '####updated per update statement itself####';
2232
# check trigger-9 success: 1
2234
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2235
f_int2 = CAST(f_char1 AS SIGNED INT),
2236
f_charbig = CONCAT('===',f_char1,'===');
2237
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
2239
SET new.f_int1 = new.f_int1 + @max_row,
2240
new.f_int2 = new.f_int2 - @max_row,
2241
new.f_charbig = '####updated per update trigger####';
2244
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
2245
f_charbig = '####updated per update statement itself####';
2247
# check trigger-10 success: 1
2249
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2250
f_int2 = CAST(f_char1 AS SIGNED INT),
2251
f_charbig = CONCAT('===',f_char1,'===');
2252
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
2254
SET new.f_int1 = @my_max1 + @counter,
2255
new.f_int2 = @my_min2 - @counter,
2256
new.f_charbig = '####updated per insert trigger####';
2257
SET @counter = @counter + 1;
2260
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
2261
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2262
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
2263
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
2264
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
2268
# check trigger-11 success: 1
2270
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
2271
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
2272
AND f_charbig = '####updated per insert trigger####';
2273
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
2275
SET new.f_int1 = @my_max1 + @counter,
2276
new.f_int2 = @my_min2 - @counter,
2277
new.f_charbig = '####updated per insert trigger####';
2278
SET @counter = @counter + 1;
2281
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
2282
INSERT INTO t1 (f_char1, f_char2, f_charbig)
2283
SELECT CAST(f_int1 AS CHAR),
2284
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
2285
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
2289
# check trigger-12 success: 1
2291
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
2292
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
2293
AND f_charbig = '####updated per insert trigger####';
2295
Table Op Msg_type Msg_text
2296
test.t1 analyze note The storage engine for the table doesn't support analyze
2297
CHECK TABLE t1 EXTENDED;
2298
Table Op Msg_type Msg_text
2299
test.t1 check note The storage engine for the table doesn't support check
2300
CHECKSUM TABLE t1 EXTENDED;
2302
test.t1 <some_value>
2304
Table Op Msg_type Msg_text
2305
test.t1 optimize note The storage engine for the table doesn't support optimize
2306
# check layout success: 1
2307
REPAIR TABLE t1 EXTENDED;
2308
Table Op Msg_type Msg_text
2309
test.t1 repair note The storage engine for the table doesn't support repair
2310
# check layout success: 1
2313
# check TRUNCATE success: 1
2314
# check layout success: 1
2315
# End usability test (include/partition_check.inc)
2322
f_charbig VARCHAR(1000)
2324
PARTITION BY RANGE(f_int1)
2325
SUBPARTITION BY HASH(f_int1)
2326
( PARTITION part1 VALUES LESS THAN (10)
2327
(SUBPARTITION subpart11,
2328
SUBPARTITION subpart12 STORAGE ENGINE = 'ndbcluster'),
2329
PARTITION part2 VALUES LESS THAN (2147483646)
2330
(SUBPARTITION subpart21 STORAGE ENGINE = 'ndbcluster',
2331
SUBPARTITION subpart22 STORAGE ENGINE = 'ndbcluster')
2333
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
2334
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
2335
# Start usability test (include/partition_check.inc)
2337
SHOW CREATE TABLE t1;
2339
t1 CREATE TABLE `t1` (
2340
`f_int1` int(11) DEFAULT NULL,
2341
`f_int2` int(11) DEFAULT NULL,
2342
`f_char1` char(20) DEFAULT NULL,
2343
`f_char2` char(20) DEFAULT NULL,
2344
`f_charbig` varchar(1000) DEFAULT NULL
2345
) ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY RANGE (f_int1) SUBPARTITION BY HASH (f_int1) (PARTITION part1 VALUES LESS THAN (10) (SUBPARTITION subpart11 ENGINE = ndbcluster, SUBPARTITION subpart12 ENGINE = ndbcluster), PARTITION part2 VALUES LESS THAN (2147483646) (SUBPARTITION subpart21 ENGINE = ndbcluster, SUBPARTITION subpart22 ENGINE = ndbcluster))
2347
# check prerequisites-1 success: 1
2348
# check COUNT(*) success: 1
2349
# check MIN/MAX(f_int1) success: 1
2350
# check MIN/MAX(f_int2) success: 1
2351
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2352
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
2353
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
2354
WHERE f_int1 IN (2,3);
2355
# check prerequisites-3 success: 1
2356
DELETE FROM t1 WHERE f_charbig = 'delete me';
2357
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
2358
# check read via f_int1 success: 1
2359
# check read via f_int2 success: 1
2361
# check multiple-1 success: 1
2362
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
2364
# check multiple-2 success: 1
2365
INSERT INTO t1 SELECT * FROM t0_template
2366
WHERE MOD(f_int1,3) = 0;
2368
# check multiple-3 success: 1
2369
UPDATE t1 SET f_int1 = f_int1 + @max_row
2370
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
2371
AND @max_row_div2 + @max_row_div4;
2373
# check multiple-4 success: 1
2375
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
2376
AND @max_row_div2 + @max_row_div4 + @max_row;
2378
# check multiple-5 success: 1
2379
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
2381
SET f_int1 = @cur_value , f_int2 = @cur_value,
2382
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
2383
f_charbig = '#SINGLE#';
2385
# check single-1 success: 1
2386
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
2388
SET f_int1 = @cur_value , f_int2 = @cur_value,
2389
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
2390
f_charbig = '#SINGLE#';
2392
# check single-2 success: 1
2393
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
2394
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
2395
UPDATE t1 SET f_int1 = @cur_value2
2396
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
2398
# check single-3 success: 1
2399
SET @cur_value1= -1;
2400
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
2401
UPDATE t1 SET f_int1 = @cur_value1
2402
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
2404
# check single-4 success: 1
2405
SELECT MAX(f_int1) INTO @cur_value FROM t1;
2406
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
2408
# check single-5 success: 1
2409
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
2411
# check single-6 success: 1
2412
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
2413
ERROR HY000: Table has no partition for value 2147483647
2414
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
2415
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
2416
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
2417
f_charbig = '#NULL#';
2419
SET f_int1 = NULL , f_int2 = -@max_row,
2420
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
2421
f_charbig = '#NULL#';
2422
# check null success: 1
2424
# check null-1 success: 1
2425
UPDATE t1 SET f_int1 = -@max_row
2426
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
2427
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
2429
# check null-2 success: 1
2430
UPDATE t1 SET f_int1 = NULL
2431
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
2432
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
2434
# check null-3 success: 1
2436
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
2437
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
2439
# check null-4 success: 1
2441
WHERE f_int1 = 0 AND f_int2 = 0
2442
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
2443
AND f_charbig = '#NULL#';
2445
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2446
SELECT f_int1, f_int1, '', '', 'was inserted'
2447
FROM t0_template source_tab
2448
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
2450
# check transactions-1 success: 1
2453
# check transactions-2 success: 1
2456
# check transactions-3 success: 1
2457
DELETE FROM t1 WHERE f_charbig = 'was inserted';
2461
# check transactions-4 success: 1
2462
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2463
SELECT f_int1, f_int1, '', '', 'was inserted'
2464
FROM t0_template source_tab
2465
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
2467
# check transactions-5 success: 1
2470
# check transactions-6 success: 1
2471
# INFO: Storage engine used for t1 seems to be transactional.
2474
# check transactions-7 success: 1
2475
DELETE FROM t1 WHERE f_charbig = 'was inserted';
2477
SET @@session.sql_mode = 'traditional';
2478
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
2479
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2480
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
2481
'', '', 'was inserted' FROM t0_template
2482
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
2483
ERROR 22012: Division by 0
2486
# check transactions-8 success: 1
2487
# INFO: Storage engine used for t1 seems to be unable to revert
2488
# changes made by the failing statement.
2489
SET @@session.sql_mode = '';
2491
DELETE FROM t1 WHERE f_charbig = 'was inserted';
2493
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
2495
# check special-1 success: 1
2496
UPDATE t1 SET f_charbig = '';
2498
# check special-2 success: 1
2499
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
2500
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
2501
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
2502
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2503
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2504
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2505
'just inserted' FROM t0_template
2506
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2507
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
2509
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2510
f_charbig = 'updated by trigger'
2511
WHERE f_int1 = new.f_int1;
2513
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2514
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
2515
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2517
# check trigger-1 success: 1
2519
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2520
f_int2 = CAST(f_char1 AS SIGNED INT),
2521
f_charbig = 'just inserted'
2522
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2524
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2525
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2526
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2527
'just inserted' FROM t0_template
2528
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2529
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
2531
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2532
f_charbig = 'updated by trigger'
2533
WHERE f_int1 = new.f_int1;
2535
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2536
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
2537
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2539
# check trigger-2 success: 1
2541
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2542
f_int2 = CAST(f_char1 AS SIGNED INT),
2543
f_charbig = 'just inserted'
2544
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2546
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2547
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2548
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2549
'just inserted' FROM t0_template
2550
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2551
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
2553
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2554
f_charbig = 'updated by trigger'
2555
WHERE f_int1 = new.f_int1;
2557
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
2558
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2560
# check trigger-3 success: 1
2562
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2563
f_int2 = CAST(f_char1 AS SIGNED INT),
2564
f_charbig = 'just inserted'
2565
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2567
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2568
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2569
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2570
'just inserted' FROM t0_template
2571
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2572
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
2574
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2575
f_charbig = 'updated by trigger'
2576
WHERE f_int1 = - old.f_int1;
2578
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
2579
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2581
# check trigger-4 success: 1
2583
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2584
f_int2 = CAST(f_char1 AS SIGNED INT),
2585
f_charbig = 'just inserted'
2586
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2588
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2589
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2590
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2591
'just inserted' FROM t0_template
2592
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2593
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
2595
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2596
f_charbig = 'updated by trigger'
2597
WHERE f_int1 = new.f_int1;
2599
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
2600
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2602
# check trigger-5 success: 1
2604
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2605
f_int2 = CAST(f_char1 AS SIGNED INT),
2606
f_charbig = 'just inserted'
2607
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2609
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2610
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2611
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2612
'just inserted' FROM t0_template
2613
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2614
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
2616
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2617
f_charbig = 'updated by trigger'
2618
WHERE f_int1 = - old.f_int1;
2620
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
2621
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2623
# check trigger-6 success: 1
2625
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2626
f_int2 = CAST(f_char1 AS SIGNED INT),
2627
f_charbig = 'just inserted'
2628
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2630
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2631
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2632
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2633
'just inserted' FROM t0_template
2634
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2635
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
2637
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2638
f_charbig = 'updated by trigger'
2639
WHERE f_int1 = - old.f_int1;
2642
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2644
# check trigger-7 success: 1
2646
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2647
f_int2 = CAST(f_char1 AS SIGNED INT),
2648
f_charbig = 'just inserted'
2649
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2651
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2652
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2653
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2654
'just inserted' FROM t0_template
2655
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2656
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
2658
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2659
f_charbig = 'updated by trigger'
2660
WHERE f_int1 = - old.f_int1;
2663
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2665
# check trigger-8 success: 1
2667
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2668
f_int2 = CAST(f_char1 AS SIGNED INT),
2669
f_charbig = 'just inserted'
2670
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2672
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2674
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2675
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
2677
SET new.f_int1 = old.f_int1 + @max_row,
2678
new.f_int2 = old.f_int2 - @max_row,
2679
new.f_charbig = '####updated per update trigger####';
2682
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
2683
f_charbig = '####updated per update statement itself####';
2685
# check trigger-9 success: 1
2687
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2688
f_int2 = CAST(f_char1 AS SIGNED INT),
2689
f_charbig = CONCAT('===',f_char1,'===');
2690
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
2692
SET new.f_int1 = new.f_int1 + @max_row,
2693
new.f_int2 = new.f_int2 - @max_row,
2694
new.f_charbig = '####updated per update trigger####';
2697
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
2698
f_charbig = '####updated per update statement itself####';
2700
# check trigger-10 success: 1
2702
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2703
f_int2 = CAST(f_char1 AS SIGNED INT),
2704
f_charbig = CONCAT('===',f_char1,'===');
2705
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
2707
SET new.f_int1 = @my_max1 + @counter,
2708
new.f_int2 = @my_min2 - @counter,
2709
new.f_charbig = '####updated per insert trigger####';
2710
SET @counter = @counter + 1;
2713
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
2714
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2715
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
2716
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
2717
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
2721
# check trigger-11 success: 1
2723
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
2724
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
2725
AND f_charbig = '####updated per insert trigger####';
2726
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
2728
SET new.f_int1 = @my_max1 + @counter,
2729
new.f_int2 = @my_min2 - @counter,
2730
new.f_charbig = '####updated per insert trigger####';
2731
SET @counter = @counter + 1;
2734
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
2735
INSERT INTO t1 (f_char1, f_char2, f_charbig)
2736
SELECT CAST(f_int1 AS CHAR),
2737
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
2738
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
2742
# check trigger-12 success: 1
2744
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
2745
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
2746
AND f_charbig = '####updated per insert trigger####';
2748
Table Op Msg_type Msg_text
2749
test.t1 analyze note The storage engine for the table doesn't support analyze
2750
CHECK TABLE t1 EXTENDED;
2751
Table Op Msg_type Msg_text
2752
test.t1 check note The storage engine for the table doesn't support check
2753
CHECKSUM TABLE t1 EXTENDED;
2755
test.t1 <some_value>
2757
Table Op Msg_type Msg_text
2758
test.t1 optimize note The storage engine for the table doesn't support optimize
2759
# check layout success: 1
2760
REPAIR TABLE t1 EXTENDED;
2761
Table Op Msg_type Msg_text
2762
test.t1 repair note The storage engine for the table doesn't support repair
2763
# check layout success: 1
2766
# check TRUNCATE success: 1
2767
# check layout success: 1
2768
# End usability test (include/partition_check.inc)
2775
f_charbig VARCHAR(1000)
2777
PARTITION BY RANGE(f_int1)
2778
SUBPARTITION BY HASH(f_int1)
2779
( PARTITION part1 VALUES LESS THAN (10)
2780
(SUBPARTITION subpart11 STORAGE ENGINE = 'ndbcluster',
2781
SUBPARTITION subpart12 STORAGE ENGINE = 'ndbcluster'),
2782
PARTITION part2 VALUES LESS THAN (2147483646)
2783
(SUBPARTITION subpart21,
2784
SUBPARTITION subpart22 )
2786
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
2787
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
2788
# Start usability test (include/partition_check.inc)
2790
SHOW CREATE TABLE t1;
2792
t1 CREATE TABLE `t1` (
2793
`f_int1` int(11) DEFAULT NULL,
2794
`f_int2` int(11) DEFAULT NULL,
2795
`f_char1` char(20) DEFAULT NULL,
2796
`f_char2` char(20) DEFAULT NULL,
2797
`f_charbig` varchar(1000) DEFAULT NULL
2798
) ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY RANGE (f_int1) SUBPARTITION BY HASH (f_int1) (PARTITION part1 VALUES LESS THAN (10) (SUBPARTITION subpart11 ENGINE = ndbcluster, SUBPARTITION subpart12 ENGINE = ndbcluster), PARTITION part2 VALUES LESS THAN (2147483646) (SUBPARTITION subpart21 ENGINE = ndbcluster, SUBPARTITION subpart22 ENGINE = ndbcluster))
2800
# check prerequisites-1 success: 1
2801
# check COUNT(*) success: 1
2802
# check MIN/MAX(f_int1) success: 1
2803
# check MIN/MAX(f_int2) success: 1
2804
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2805
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
2806
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
2807
WHERE f_int1 IN (2,3);
2808
# check prerequisites-3 success: 1
2809
DELETE FROM t1 WHERE f_charbig = 'delete me';
2810
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
2811
# check read via f_int1 success: 1
2812
# check read via f_int2 success: 1
2814
# check multiple-1 success: 1
2815
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
2817
# check multiple-2 success: 1
2818
INSERT INTO t1 SELECT * FROM t0_template
2819
WHERE MOD(f_int1,3) = 0;
2821
# check multiple-3 success: 1
2822
UPDATE t1 SET f_int1 = f_int1 + @max_row
2823
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
2824
AND @max_row_div2 + @max_row_div4;
2826
# check multiple-4 success: 1
2828
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
2829
AND @max_row_div2 + @max_row_div4 + @max_row;
2831
# check multiple-5 success: 1
2832
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
2834
SET f_int1 = @cur_value , f_int2 = @cur_value,
2835
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
2836
f_charbig = '#SINGLE#';
2838
# check single-1 success: 1
2839
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
2841
SET f_int1 = @cur_value , f_int2 = @cur_value,
2842
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
2843
f_charbig = '#SINGLE#';
2845
# check single-2 success: 1
2846
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
2847
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
2848
UPDATE t1 SET f_int1 = @cur_value2
2849
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
2851
# check single-3 success: 1
2852
SET @cur_value1= -1;
2853
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
2854
UPDATE t1 SET f_int1 = @cur_value1
2855
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
2857
# check single-4 success: 1
2858
SELECT MAX(f_int1) INTO @cur_value FROM t1;
2859
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
2861
# check single-5 success: 1
2862
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
2864
# check single-6 success: 1
2865
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
2866
ERROR HY000: Table has no partition for value 2147483647
2867
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
2868
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
2869
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
2870
f_charbig = '#NULL#';
2872
SET f_int1 = NULL , f_int2 = -@max_row,
2873
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
2874
f_charbig = '#NULL#';
2875
# check null success: 1
2877
# check null-1 success: 1
2878
UPDATE t1 SET f_int1 = -@max_row
2879
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
2880
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
2882
# check null-2 success: 1
2883
UPDATE t1 SET f_int1 = NULL
2884
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
2885
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
2887
# check null-3 success: 1
2889
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
2890
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
2892
# check null-4 success: 1
2894
WHERE f_int1 = 0 AND f_int2 = 0
2895
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
2896
AND f_charbig = '#NULL#';
2898
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2899
SELECT f_int1, f_int1, '', '', 'was inserted'
2900
FROM t0_template source_tab
2901
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
2903
# check transactions-1 success: 1
2906
# check transactions-2 success: 1
2909
# check transactions-3 success: 1
2910
DELETE FROM t1 WHERE f_charbig = 'was inserted';
2914
# check transactions-4 success: 1
2915
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2916
SELECT f_int1, f_int1, '', '', 'was inserted'
2917
FROM t0_template source_tab
2918
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
2920
# check transactions-5 success: 1
2923
# check transactions-6 success: 1
2924
# INFO: Storage engine used for t1 seems to be transactional.
2927
# check transactions-7 success: 1
2928
DELETE FROM t1 WHERE f_charbig = 'was inserted';
2930
SET @@session.sql_mode = 'traditional';
2931
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
2932
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2933
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
2934
'', '', 'was inserted' FROM t0_template
2935
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
2936
ERROR 22012: Division by 0
2939
# check transactions-8 success: 1
2940
# INFO: Storage engine used for t1 seems to be unable to revert
2941
# changes made by the failing statement.
2942
SET @@session.sql_mode = '';
2944
DELETE FROM t1 WHERE f_charbig = 'was inserted';
2946
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
2948
# check special-1 success: 1
2949
UPDATE t1 SET f_charbig = '';
2951
# check special-2 success: 1
2952
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
2953
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
2954
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
2955
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2956
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2957
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2958
'just inserted' FROM t0_template
2959
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2960
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
2962
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2963
f_charbig = 'updated by trigger'
2964
WHERE f_int1 = new.f_int1;
2966
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2967
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
2968
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2970
# check trigger-1 success: 1
2972
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2973
f_int2 = CAST(f_char1 AS SIGNED INT),
2974
f_charbig = 'just inserted'
2975
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2977
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2978
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2979
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2980
'just inserted' FROM t0_template
2981
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2982
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
2984
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2985
f_charbig = 'updated by trigger'
2986
WHERE f_int1 = new.f_int1;
2988
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2989
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
2990
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2992
# check trigger-2 success: 1
2994
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2995
f_int2 = CAST(f_char1 AS SIGNED INT),
2996
f_charbig = 'just inserted'
2997
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2999
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3000
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3001
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3002
'just inserted' FROM t0_template
3003
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3004
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
3006
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3007
f_charbig = 'updated by trigger'
3008
WHERE f_int1 = new.f_int1;
3010
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3011
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3013
# check trigger-3 success: 1
3015
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3016
f_int2 = CAST(f_char1 AS SIGNED INT),
3017
f_charbig = 'just inserted'
3018
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3020
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3021
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3022
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3023
'just inserted' FROM t0_template
3024
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3025
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
3027
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3028
f_charbig = 'updated by trigger'
3029
WHERE f_int1 = - old.f_int1;
3031
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3032
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3034
# check trigger-4 success: 1
3036
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3037
f_int2 = CAST(f_char1 AS SIGNED INT),
3038
f_charbig = 'just inserted'
3039
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3041
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3042
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3043
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3044
'just inserted' FROM t0_template
3045
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3046
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
3048
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3049
f_charbig = 'updated by trigger'
3050
WHERE f_int1 = new.f_int1;
3052
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3053
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3055
# check trigger-5 success: 1
3057
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3058
f_int2 = CAST(f_char1 AS SIGNED INT),
3059
f_charbig = 'just inserted'
3060
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3062
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3063
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3064
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3065
'just inserted' FROM t0_template
3066
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3067
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
3069
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3070
f_charbig = 'updated by trigger'
3071
WHERE f_int1 = - old.f_int1;
3073
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3074
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3076
# check trigger-6 success: 1
3078
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3079
f_int2 = CAST(f_char1 AS SIGNED INT),
3080
f_charbig = 'just inserted'
3081
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3083
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3084
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3085
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3086
'just inserted' FROM t0_template
3087
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3088
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
3090
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3091
f_charbig = 'updated by trigger'
3092
WHERE f_int1 = - old.f_int1;
3095
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3097
# check trigger-7 success: 1
3099
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3100
f_int2 = CAST(f_char1 AS SIGNED INT),
3101
f_charbig = 'just inserted'
3102
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3104
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3105
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3106
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3107
'just inserted' FROM t0_template
3108
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3109
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
3111
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3112
f_charbig = 'updated by trigger'
3113
WHERE f_int1 = - old.f_int1;
3116
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3118
# check trigger-8 success: 1
3120
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3121
f_int2 = CAST(f_char1 AS SIGNED INT),
3122
f_charbig = 'just inserted'
3123
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3125
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3127
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3128
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
3130
SET new.f_int1 = old.f_int1 + @max_row,
3131
new.f_int2 = old.f_int2 - @max_row,
3132
new.f_charbig = '####updated per update trigger####';
3135
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
3136
f_charbig = '####updated per update statement itself####';
3138
# check trigger-9 success: 1
3140
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3141
f_int2 = CAST(f_char1 AS SIGNED INT),
3142
f_charbig = CONCAT('===',f_char1,'===');
3143
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
3145
SET new.f_int1 = new.f_int1 + @max_row,
3146
new.f_int2 = new.f_int2 - @max_row,
3147
new.f_charbig = '####updated per update trigger####';
3150
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
3151
f_charbig = '####updated per update statement itself####';
3153
# check trigger-10 success: 1
3155
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3156
f_int2 = CAST(f_char1 AS SIGNED INT),
3157
f_charbig = CONCAT('===',f_char1,'===');
3158
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
3160
SET new.f_int1 = @my_max1 + @counter,
3161
new.f_int2 = @my_min2 - @counter,
3162
new.f_charbig = '####updated per insert trigger####';
3163
SET @counter = @counter + 1;
3166
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
3167
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3168
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
3169
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
3170
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
3174
# check trigger-11 success: 1
3176
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
3177
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
3178
AND f_charbig = '####updated per insert trigger####';
3179
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
3181
SET new.f_int1 = @my_max1 + @counter,
3182
new.f_int2 = @my_min2 - @counter,
3183
new.f_charbig = '####updated per insert trigger####';
3184
SET @counter = @counter + 1;
3187
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
3188
INSERT INTO t1 (f_char1, f_char2, f_charbig)
3189
SELECT CAST(f_int1 AS CHAR),
3190
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
3191
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
3195
# check trigger-12 success: 1
3197
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
3198
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
3199
AND f_charbig = '####updated per insert trigger####';
3201
Table Op Msg_type Msg_text
3202
test.t1 analyze note The storage engine for the table doesn't support analyze
3203
CHECK TABLE t1 EXTENDED;
3204
Table Op Msg_type Msg_text
3205
test.t1 check note The storage engine for the table doesn't support check
3206
CHECKSUM TABLE t1 EXTENDED;
3208
test.t1 <some_value>
3210
Table Op Msg_type Msg_text
3211
test.t1 optimize note The storage engine for the table doesn't support optimize
3212
# check layout success: 1
3213
REPAIR TABLE t1 EXTENDED;
3214
Table Op Msg_type Msg_text
3215
test.t1 repair note The storage engine for the table doesn't support repair
3216
# check layout success: 1
3219
# check TRUNCATE success: 1
3220
# check layout success: 1
3221
# End usability test (include/partition_check.inc)
3223
#------------------------------------------------------------------------
3224
# 4 Storage engine assignment after partition name + after name of
3225
# subpartitions belonging to another partition
3226
#------------------------------------------------------------------------
3232
f_charbig VARCHAR(1000)
3234
PARTITION BY RANGE(f_int1)
3235
SUBPARTITION BY HASH(f_int1)
3236
( PARTITION part1 VALUES LESS THAN (10) ENGINE = 'ndbcluster'
3237
(SUBPARTITION subpart11,
3238
SUBPARTITION subpart12),
3239
PARTITION part2 VALUES LESS THAN (2147483646)
3240
(SUBPARTITION subpart21 STORAGE ENGINE = 'ndbcluster',
3241
SUBPARTITION subpart22 STORAGE ENGINE = 'ndbcluster')
3243
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
3244
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
3245
# Start usability test (include/partition_check.inc)
3247
SHOW CREATE TABLE t1;
3249
t1 CREATE TABLE `t1` (
3250
`f_int1` int(11) DEFAULT NULL,
3251
`f_int2` int(11) DEFAULT NULL,
3252
`f_char1` char(20) DEFAULT NULL,
3253
`f_char2` char(20) DEFAULT NULL,
3254
`f_charbig` varchar(1000) DEFAULT NULL
3255
) ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY RANGE (f_int1) SUBPARTITION BY HASH (f_int1) (PARTITION part1 VALUES LESS THAN (10) (SUBPARTITION subpart11 ENGINE = ndbcluster, SUBPARTITION subpart12 ENGINE = ndbcluster), PARTITION part2 VALUES LESS THAN (2147483646) (SUBPARTITION subpart21 ENGINE = ndbcluster, SUBPARTITION subpart22 ENGINE = ndbcluster))
3257
# check prerequisites-1 success: 1
3258
# check COUNT(*) success: 1
3259
# check MIN/MAX(f_int1) success: 1
3260
# check MIN/MAX(f_int2) success: 1
3261
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3262
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
3263
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
3264
WHERE f_int1 IN (2,3);
3265
# check prerequisites-3 success: 1
3266
DELETE FROM t1 WHERE f_charbig = 'delete me';
3267
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
3268
# check read via f_int1 success: 1
3269
# check read via f_int2 success: 1
3271
# check multiple-1 success: 1
3272
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
3274
# check multiple-2 success: 1
3275
INSERT INTO t1 SELECT * FROM t0_template
3276
WHERE MOD(f_int1,3) = 0;
3278
# check multiple-3 success: 1
3279
UPDATE t1 SET f_int1 = f_int1 + @max_row
3280
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
3281
AND @max_row_div2 + @max_row_div4;
3283
# check multiple-4 success: 1
3285
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
3286
AND @max_row_div2 + @max_row_div4 + @max_row;
3288
# check multiple-5 success: 1
3289
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
3291
SET f_int1 = @cur_value , f_int2 = @cur_value,
3292
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
3293
f_charbig = '#SINGLE#';
3295
# check single-1 success: 1
3296
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
3298
SET f_int1 = @cur_value , f_int2 = @cur_value,
3299
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
3300
f_charbig = '#SINGLE#';
3302
# check single-2 success: 1
3303
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
3304
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
3305
UPDATE t1 SET f_int1 = @cur_value2
3306
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
3308
# check single-3 success: 1
3309
SET @cur_value1= -1;
3310
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
3311
UPDATE t1 SET f_int1 = @cur_value1
3312
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
3314
# check single-4 success: 1
3315
SELECT MAX(f_int1) INTO @cur_value FROM t1;
3316
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
3318
# check single-5 success: 1
3319
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
3321
# check single-6 success: 1
3322
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
3323
ERROR HY000: Table has no partition for value 2147483647
3324
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
3325
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
3326
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
3327
f_charbig = '#NULL#';
3329
SET f_int1 = NULL , f_int2 = -@max_row,
3330
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
3331
f_charbig = '#NULL#';
3332
# check null success: 1
3334
# check null-1 success: 1
3335
UPDATE t1 SET f_int1 = -@max_row
3336
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
3337
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
3339
# check null-2 success: 1
3340
UPDATE t1 SET f_int1 = NULL
3341
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
3342
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
3344
# check null-3 success: 1
3346
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
3347
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
3349
# check null-4 success: 1
3351
WHERE f_int1 = 0 AND f_int2 = 0
3352
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
3353
AND f_charbig = '#NULL#';
3355
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3356
SELECT f_int1, f_int1, '', '', 'was inserted'
3357
FROM t0_template source_tab
3358
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
3360
# check transactions-1 success: 1
3363
# check transactions-2 success: 1
3366
# check transactions-3 success: 1
3367
DELETE FROM t1 WHERE f_charbig = 'was inserted';
3371
# check transactions-4 success: 1
3372
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3373
SELECT f_int1, f_int1, '', '', 'was inserted'
3374
FROM t0_template source_tab
3375
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
3377
# check transactions-5 success: 1
3380
# check transactions-6 success: 1
3381
# INFO: Storage engine used for t1 seems to be transactional.
3384
# check transactions-7 success: 1
3385
DELETE FROM t1 WHERE f_charbig = 'was inserted';
3387
SET @@session.sql_mode = 'traditional';
3388
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
3389
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3390
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
3391
'', '', 'was inserted' FROM t0_template
3392
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
3393
ERROR 22012: Division by 0
3396
# check transactions-8 success: 1
3397
# INFO: Storage engine used for t1 seems to be unable to revert
3398
# changes made by the failing statement.
3399
SET @@session.sql_mode = '';
3401
DELETE FROM t1 WHERE f_charbig = 'was inserted';
3403
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
3405
# check special-1 success: 1
3406
UPDATE t1 SET f_charbig = '';
3408
# check special-2 success: 1
3409
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
3410
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
3411
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
3412
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3413
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3414
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3415
'just inserted' FROM t0_template
3416
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3417
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
3419
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3420
f_charbig = 'updated by trigger'
3421
WHERE f_int1 = new.f_int1;
3423
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3424
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
3425
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3427
# check trigger-1 success: 1
3429
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3430
f_int2 = CAST(f_char1 AS SIGNED INT),
3431
f_charbig = 'just inserted'
3432
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3434
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3435
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3436
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3437
'just inserted' FROM t0_template
3438
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3439
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
3441
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3442
f_charbig = 'updated by trigger'
3443
WHERE f_int1 = new.f_int1;
3445
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3446
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
3447
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3449
# check trigger-2 success: 1
3451
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3452
f_int2 = CAST(f_char1 AS SIGNED INT),
3453
f_charbig = 'just inserted'
3454
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3456
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3457
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3458
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3459
'just inserted' FROM t0_template
3460
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3461
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
3463
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3464
f_charbig = 'updated by trigger'
3465
WHERE f_int1 = new.f_int1;
3467
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3468
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3470
# check trigger-3 success: 1
3472
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3473
f_int2 = CAST(f_char1 AS SIGNED INT),
3474
f_charbig = 'just inserted'
3475
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3477
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3478
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3479
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3480
'just inserted' FROM t0_template
3481
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3482
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
3484
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3485
f_charbig = 'updated by trigger'
3486
WHERE f_int1 = - old.f_int1;
3488
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3489
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3491
# check trigger-4 success: 1
3493
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3494
f_int2 = CAST(f_char1 AS SIGNED INT),
3495
f_charbig = 'just inserted'
3496
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3498
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3499
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3500
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3501
'just inserted' FROM t0_template
3502
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3503
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
3505
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3506
f_charbig = 'updated by trigger'
3507
WHERE f_int1 = new.f_int1;
3509
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3510
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3512
# check trigger-5 success: 1
3514
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3515
f_int2 = CAST(f_char1 AS SIGNED INT),
3516
f_charbig = 'just inserted'
3517
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3519
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3520
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3521
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3522
'just inserted' FROM t0_template
3523
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3524
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
3526
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3527
f_charbig = 'updated by trigger'
3528
WHERE f_int1 = - old.f_int1;
3530
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3531
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3533
# check trigger-6 success: 1
3535
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3536
f_int2 = CAST(f_char1 AS SIGNED INT),
3537
f_charbig = 'just inserted'
3538
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3540
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3541
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3542
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3543
'just inserted' FROM t0_template
3544
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3545
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
3547
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3548
f_charbig = 'updated by trigger'
3549
WHERE f_int1 = - old.f_int1;
3552
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3554
# check trigger-7 success: 1
3556
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3557
f_int2 = CAST(f_char1 AS SIGNED INT),
3558
f_charbig = 'just inserted'
3559
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3561
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3562
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3563
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3564
'just inserted' FROM t0_template
3565
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3566
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
3568
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3569
f_charbig = 'updated by trigger'
3570
WHERE f_int1 = - old.f_int1;
3573
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3575
# check trigger-8 success: 1
3577
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3578
f_int2 = CAST(f_char1 AS SIGNED INT),
3579
f_charbig = 'just inserted'
3580
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3582
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3584
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3585
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
3587
SET new.f_int1 = old.f_int1 + @max_row,
3588
new.f_int2 = old.f_int2 - @max_row,
3589
new.f_charbig = '####updated per update trigger####';
3592
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
3593
f_charbig = '####updated per update statement itself####';
3595
# check trigger-9 success: 1
3597
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3598
f_int2 = CAST(f_char1 AS SIGNED INT),
3599
f_charbig = CONCAT('===',f_char1,'===');
3600
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
3602
SET new.f_int1 = new.f_int1 + @max_row,
3603
new.f_int2 = new.f_int2 - @max_row,
3604
new.f_charbig = '####updated per update trigger####';
3607
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
3608
f_charbig = '####updated per update statement itself####';
3610
# check trigger-10 success: 1
3612
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3613
f_int2 = CAST(f_char1 AS SIGNED INT),
3614
f_charbig = CONCAT('===',f_char1,'===');
3615
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
3617
SET new.f_int1 = @my_max1 + @counter,
3618
new.f_int2 = @my_min2 - @counter,
3619
new.f_charbig = '####updated per insert trigger####';
3620
SET @counter = @counter + 1;
3623
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
3624
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3625
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
3626
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
3627
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
3631
# check trigger-11 success: 1
3633
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
3634
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
3635
AND f_charbig = '####updated per insert trigger####';
3636
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
3638
SET new.f_int1 = @my_max1 + @counter,
3639
new.f_int2 = @my_min2 - @counter,
3640
new.f_charbig = '####updated per insert trigger####';
3641
SET @counter = @counter + 1;
3644
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
3645
INSERT INTO t1 (f_char1, f_char2, f_charbig)
3646
SELECT CAST(f_int1 AS CHAR),
3647
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
3648
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
3652
# check trigger-12 success: 1
3654
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
3655
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
3656
AND f_charbig = '####updated per insert trigger####';
3658
Table Op Msg_type Msg_text
3659
test.t1 analyze note The storage engine for the table doesn't support analyze
3660
CHECK TABLE t1 EXTENDED;
3661
Table Op Msg_type Msg_text
3662
test.t1 check note The storage engine for the table doesn't support check
3663
CHECKSUM TABLE t1 EXTENDED;
3665
test.t1 <some_value>
3667
Table Op Msg_type Msg_text
3668
test.t1 optimize note The storage engine for the table doesn't support optimize
3669
# check layout success: 1
3670
REPAIR TABLE t1 EXTENDED;
3671
Table Op Msg_type Msg_text
3672
test.t1 repair note The storage engine for the table doesn't support repair
3673
# check layout success: 1
3676
# check TRUNCATE success: 1
3677
# check layout success: 1
3678
# End usability test (include/partition_check.inc)
3685
f_charbig VARCHAR(1000)
3687
PARTITION BY RANGE(f_int1)
3688
SUBPARTITION BY HASH(f_int1)
3689
( PARTITION part1 VALUES LESS THAN (10)
3690
(SUBPARTITION subpart11 STORAGE ENGINE = 'ndbcluster',
3691
SUBPARTITION subpart12 STORAGE ENGINE = 'ndbcluster'),
3692
PARTITION part2 VALUES LESS THAN (2147483646) ENGINE = 'ndbcluster'
3693
(SUBPARTITION subpart21,
3694
SUBPARTITION subpart22)
3696
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
3697
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
3698
# Start usability test (include/partition_check.inc)
3700
SHOW CREATE TABLE t1;
3702
t1 CREATE TABLE `t1` (
3703
`f_int1` int(11) DEFAULT NULL,
3704
`f_int2` int(11) DEFAULT NULL,
3705
`f_char1` char(20) DEFAULT NULL,
3706
`f_char2` char(20) DEFAULT NULL,
3707
`f_charbig` varchar(1000) DEFAULT NULL
3708
) ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY RANGE (f_int1) SUBPARTITION BY HASH (f_int1) (PARTITION part1 VALUES LESS THAN (10) (SUBPARTITION subpart11 ENGINE = ndbcluster, SUBPARTITION subpart12 ENGINE = ndbcluster), PARTITION part2 VALUES LESS THAN (2147483646) (SUBPARTITION subpart21 ENGINE = ndbcluster, SUBPARTITION subpart22 ENGINE = ndbcluster))
3710
# check prerequisites-1 success: 1
3711
# check COUNT(*) success: 1
3712
# check MIN/MAX(f_int1) success: 1
3713
# check MIN/MAX(f_int2) success: 1
3714
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3715
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
3716
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
3717
WHERE f_int1 IN (2,3);
3718
# check prerequisites-3 success: 1
3719
DELETE FROM t1 WHERE f_charbig = 'delete me';
3720
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
3721
# check read via f_int1 success: 1
3722
# check read via f_int2 success: 1
3724
# check multiple-1 success: 1
3725
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
3727
# check multiple-2 success: 1
3728
INSERT INTO t1 SELECT * FROM t0_template
3729
WHERE MOD(f_int1,3) = 0;
3731
# check multiple-3 success: 1
3732
UPDATE t1 SET f_int1 = f_int1 + @max_row
3733
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
3734
AND @max_row_div2 + @max_row_div4;
3736
# check multiple-4 success: 1
3738
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
3739
AND @max_row_div2 + @max_row_div4 + @max_row;
3741
# check multiple-5 success: 1
3742
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
3744
SET f_int1 = @cur_value , f_int2 = @cur_value,
3745
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
3746
f_charbig = '#SINGLE#';
3748
# check single-1 success: 1
3749
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
3751
SET f_int1 = @cur_value , f_int2 = @cur_value,
3752
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
3753
f_charbig = '#SINGLE#';
3755
# check single-2 success: 1
3756
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
3757
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
3758
UPDATE t1 SET f_int1 = @cur_value2
3759
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
3761
# check single-3 success: 1
3762
SET @cur_value1= -1;
3763
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
3764
UPDATE t1 SET f_int1 = @cur_value1
3765
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
3767
# check single-4 success: 1
3768
SELECT MAX(f_int1) INTO @cur_value FROM t1;
3769
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
3771
# check single-5 success: 1
3772
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
3774
# check single-6 success: 1
3775
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
3776
ERROR HY000: Table has no partition for value 2147483647
3777
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
3778
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
3779
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
3780
f_charbig = '#NULL#';
3782
SET f_int1 = NULL , f_int2 = -@max_row,
3783
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
3784
f_charbig = '#NULL#';
3785
# check null success: 1
3787
# check null-1 success: 1
3788
UPDATE t1 SET f_int1 = -@max_row
3789
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
3790
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
3792
# check null-2 success: 1
3793
UPDATE t1 SET f_int1 = NULL
3794
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
3795
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
3797
# check null-3 success: 1
3799
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
3800
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
3802
# check null-4 success: 1
3804
WHERE f_int1 = 0 AND f_int2 = 0
3805
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
3806
AND f_charbig = '#NULL#';
3808
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3809
SELECT f_int1, f_int1, '', '', 'was inserted'
3810
FROM t0_template source_tab
3811
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
3813
# check transactions-1 success: 1
3816
# check transactions-2 success: 1
3819
# check transactions-3 success: 1
3820
DELETE FROM t1 WHERE f_charbig = 'was inserted';
3824
# check transactions-4 success: 1
3825
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3826
SELECT f_int1, f_int1, '', '', 'was inserted'
3827
FROM t0_template source_tab
3828
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
3830
# check transactions-5 success: 1
3833
# check transactions-6 success: 1
3834
# INFO: Storage engine used for t1 seems to be transactional.
3837
# check transactions-7 success: 1
3838
DELETE FROM t1 WHERE f_charbig = 'was inserted';
3840
SET @@session.sql_mode = 'traditional';
3841
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
3842
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3843
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
3844
'', '', 'was inserted' FROM t0_template
3845
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
3846
ERROR 22012: Division by 0
3849
# check transactions-8 success: 1
3850
# INFO: Storage engine used for t1 seems to be unable to revert
3851
# changes made by the failing statement.
3852
SET @@session.sql_mode = '';
3854
DELETE FROM t1 WHERE f_charbig = 'was inserted';
3856
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
3858
# check special-1 success: 1
3859
UPDATE t1 SET f_charbig = '';
3861
# check special-2 success: 1
3862
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
3863
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
3864
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
3865
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3866
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3867
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3868
'just inserted' FROM t0_template
3869
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3870
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
3872
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3873
f_charbig = 'updated by trigger'
3874
WHERE f_int1 = new.f_int1;
3876
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3877
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
3878
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3880
# check trigger-1 success: 1
3882
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3883
f_int2 = CAST(f_char1 AS SIGNED INT),
3884
f_charbig = 'just inserted'
3885
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3887
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3888
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3889
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3890
'just inserted' FROM t0_template
3891
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3892
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
3894
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3895
f_charbig = 'updated by trigger'
3896
WHERE f_int1 = new.f_int1;
3898
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3899
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
3900
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3902
# check trigger-2 success: 1
3904
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3905
f_int2 = CAST(f_char1 AS SIGNED INT),
3906
f_charbig = 'just inserted'
3907
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3909
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3910
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3911
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3912
'just inserted' FROM t0_template
3913
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3914
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
3916
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3917
f_charbig = 'updated by trigger'
3918
WHERE f_int1 = new.f_int1;
3920
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3921
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3923
# check trigger-3 success: 1
3925
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3926
f_int2 = CAST(f_char1 AS SIGNED INT),
3927
f_charbig = 'just inserted'
3928
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3930
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3931
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3932
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3933
'just inserted' FROM t0_template
3934
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3935
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
3937
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3938
f_charbig = 'updated by trigger'
3939
WHERE f_int1 = - old.f_int1;
3941
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3942
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3944
# check trigger-4 success: 1
3946
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3947
f_int2 = CAST(f_char1 AS SIGNED INT),
3948
f_charbig = 'just inserted'
3949
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3951
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3952
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3953
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3954
'just inserted' FROM t0_template
3955
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3956
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
3958
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3959
f_charbig = 'updated by trigger'
3960
WHERE f_int1 = new.f_int1;
3962
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3963
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3965
# check trigger-5 success: 1
3967
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3968
f_int2 = CAST(f_char1 AS SIGNED INT),
3969
f_charbig = 'just inserted'
3970
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3972
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3973
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3974
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3975
'just inserted' FROM t0_template
3976
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3977
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
3979
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3980
f_charbig = 'updated by trigger'
3981
WHERE f_int1 = - old.f_int1;
3983
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3984
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3986
# check trigger-6 success: 1
3988
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3989
f_int2 = CAST(f_char1 AS SIGNED INT),
3990
f_charbig = 'just inserted'
3991
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3993
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3994
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3995
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3996
'just inserted' FROM t0_template
3997
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3998
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
4000
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4001
f_charbig = 'updated by trigger'
4002
WHERE f_int1 = - old.f_int1;
4005
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4007
# check trigger-7 success: 1
4009
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4010
f_int2 = CAST(f_char1 AS SIGNED INT),
4011
f_charbig = 'just inserted'
4012
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4014
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4015
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4016
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4017
'just inserted' FROM t0_template
4018
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4019
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
4021
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4022
f_charbig = 'updated by trigger'
4023
WHERE f_int1 = - old.f_int1;
4026
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4028
# check trigger-8 success: 1
4030
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4031
f_int2 = CAST(f_char1 AS SIGNED INT),
4032
f_charbig = 'just inserted'
4033
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4035
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4037
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4038
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
4040
SET new.f_int1 = old.f_int1 + @max_row,
4041
new.f_int2 = old.f_int2 - @max_row,
4042
new.f_charbig = '####updated per update trigger####';
4045
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
4046
f_charbig = '####updated per update statement itself####';
4048
# check trigger-9 success: 1
4050
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4051
f_int2 = CAST(f_char1 AS SIGNED INT),
4052
f_charbig = CONCAT('===',f_char1,'===');
4053
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
4055
SET new.f_int1 = new.f_int1 + @max_row,
4056
new.f_int2 = new.f_int2 - @max_row,
4057
new.f_charbig = '####updated per update trigger####';
4060
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
4061
f_charbig = '####updated per update statement itself####';
4063
# check trigger-10 success: 1
4065
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4066
f_int2 = CAST(f_char1 AS SIGNED INT),
4067
f_charbig = CONCAT('===',f_char1,'===');
4068
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
4070
SET new.f_int1 = @my_max1 + @counter,
4071
new.f_int2 = @my_min2 - @counter,
4072
new.f_charbig = '####updated per insert trigger####';
4073
SET @counter = @counter + 1;
4076
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
4077
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4078
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
4079
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
4080
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
4084
# check trigger-11 success: 1
4086
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
4087
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
4088
AND f_charbig = '####updated per insert trigger####';
4089
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
4091
SET new.f_int1 = @my_max1 + @counter,
4092
new.f_int2 = @my_min2 - @counter,
4093
new.f_charbig = '####updated per insert trigger####';
4094
SET @counter = @counter + 1;
4097
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
4098
INSERT INTO t1 (f_char1, f_char2, f_charbig)
4099
SELECT CAST(f_int1 AS CHAR),
4100
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
4101
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
4105
# check trigger-12 success: 1
4107
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
4108
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
4109
AND f_charbig = '####updated per insert trigger####';
4111
Table Op Msg_type Msg_text
4112
test.t1 analyze note The storage engine for the table doesn't support analyze
4113
CHECK TABLE t1 EXTENDED;
4114
Table Op Msg_type Msg_text
4115
test.t1 check note The storage engine for the table doesn't support check
4116
CHECKSUM TABLE t1 EXTENDED;
4118
test.t1 <some_value>
4120
Table Op Msg_type Msg_text
4121
test.t1 optimize note The storage engine for the table doesn't support optimize
4122
# check layout success: 1
4123
REPAIR TABLE t1 EXTENDED;
4124
Table Op Msg_type Msg_text
4125
test.t1 repair note The storage engine for the table doesn't support repair
4126
# check layout success: 1
4129
# check TRUNCATE success: 1
4130
# check layout success: 1
4131
# End usability test (include/partition_check.inc)
4133
#------------------------------------------------------------------------
4134
# 5 Precedence of storage engine assignments (if there is any)
4135
#------------------------------------------------------------------------
4136
# 5.1 Storage engine assignment after column list + after partition
4137
# or subpartition name
4143
f_charbig VARCHAR(1000)
4144
) ENGINE = 'ndbcluster'
4145
PARTITION BY HASH(f_int1)
4146
( PARTITION part1 STORAGE ENGINE = 'ndbcluster',
4147
PARTITION part2 STORAGE ENGINE = 'ndbcluster'
4149
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
4150
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
4151
# Start usability test (include/partition_check.inc)
4153
SHOW CREATE TABLE t1;
4155
t1 CREATE TABLE `t1` (
4156
`f_int1` int(11) DEFAULT NULL,
4157
`f_int2` int(11) DEFAULT NULL,
4158
`f_char1` char(20) DEFAULT NULL,
4159
`f_char2` char(20) DEFAULT NULL,
4160
`f_charbig` varchar(1000) DEFAULT NULL
4161
) ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY HASH (f_int1) (PARTITION part1 ENGINE = ndbcluster, PARTITION part2 ENGINE = ndbcluster)
4163
# check prerequisites-1 success: 1
4164
# check COUNT(*) success: 1
4165
# check MIN/MAX(f_int1) success: 1
4166
# check MIN/MAX(f_int2) success: 1
4167
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4168
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
4169
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
4170
WHERE f_int1 IN (2,3);
4171
# check prerequisites-3 success: 1
4172
DELETE FROM t1 WHERE f_charbig = 'delete me';
4173
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
4174
# check read via f_int1 success: 1
4175
# check read via f_int2 success: 1
4177
# check multiple-1 success: 1
4178
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
4180
# check multiple-2 success: 1
4181
INSERT INTO t1 SELECT * FROM t0_template
4182
WHERE MOD(f_int1,3) = 0;
4184
# check multiple-3 success: 1
4185
UPDATE t1 SET f_int1 = f_int1 + @max_row
4186
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
4187
AND @max_row_div2 + @max_row_div4;
4189
# check multiple-4 success: 1
4191
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
4192
AND @max_row_div2 + @max_row_div4 + @max_row;
4194
# check multiple-5 success: 1
4195
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
4197
SET f_int1 = @cur_value , f_int2 = @cur_value,
4198
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
4199
f_charbig = '#SINGLE#';
4201
# check single-1 success: 1
4202
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
4204
SET f_int1 = @cur_value , f_int2 = @cur_value,
4205
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
4206
f_charbig = '#SINGLE#';
4208
# check single-2 success: 1
4209
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
4210
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
4211
UPDATE t1 SET f_int1 = @cur_value2
4212
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
4214
# check single-3 success: 1
4215
SET @cur_value1= -1;
4216
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
4217
UPDATE t1 SET f_int1 = @cur_value1
4218
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
4220
# check single-4 success: 1
4221
SELECT MAX(f_int1) INTO @cur_value FROM t1;
4222
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
4224
# check single-5 success: 1
4225
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
4227
# check single-6 success: 1
4228
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
4230
# check single-7 success: 1
4231
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
4232
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
4233
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
4234
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
4235
f_charbig = '#NULL#';
4237
SET f_int1 = NULL , f_int2 = -@max_row,
4238
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
4239
f_charbig = '#NULL#';
4240
# check null success: 1
4242
# check null-1 success: 1
4243
UPDATE t1 SET f_int1 = -@max_row
4244
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
4245
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
4247
# check null-2 success: 1
4248
UPDATE t1 SET f_int1 = NULL
4249
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
4250
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
4252
# check null-3 success: 1
4254
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
4255
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
4257
# check null-4 success: 1
4259
WHERE f_int1 = 0 AND f_int2 = 0
4260
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
4261
AND f_charbig = '#NULL#';
4263
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4264
SELECT f_int1, f_int1, '', '', 'was inserted'
4265
FROM t0_template source_tab
4266
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
4268
# check transactions-1 success: 1
4271
# check transactions-2 success: 1
4274
# check transactions-3 success: 1
4275
DELETE FROM t1 WHERE f_charbig = 'was inserted';
4279
# check transactions-4 success: 1
4280
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4281
SELECT f_int1, f_int1, '', '', 'was inserted'
4282
FROM t0_template source_tab
4283
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
4285
# check transactions-5 success: 1
4288
# check transactions-6 success: 1
4289
# INFO: Storage engine used for t1 seems to be transactional.
4292
# check transactions-7 success: 1
4293
DELETE FROM t1 WHERE f_charbig = 'was inserted';
4295
SET @@session.sql_mode = 'traditional';
4296
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
4297
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4298
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
4299
'', '', 'was inserted' FROM t0_template
4300
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
4301
ERROR 22012: Division by 0
4304
# check transactions-8 success: 1
4305
# INFO: Storage engine used for t1 seems to be unable to revert
4306
# changes made by the failing statement.
4307
SET @@session.sql_mode = '';
4309
DELETE FROM t1 WHERE f_charbig = 'was inserted';
4311
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
4313
# check special-1 success: 1
4314
UPDATE t1 SET f_charbig = '';
4316
# check special-2 success: 1
4317
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
4318
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
4319
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
4320
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4321
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4322
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4323
'just inserted' FROM t0_template
4324
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4325
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
4327
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4328
f_charbig = 'updated by trigger'
4329
WHERE f_int1 = new.f_int1;
4331
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4332
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
4333
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4335
# check trigger-1 success: 1
4337
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4338
f_int2 = CAST(f_char1 AS SIGNED INT),
4339
f_charbig = 'just inserted'
4340
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4342
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4343
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4344
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4345
'just inserted' FROM t0_template
4346
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4347
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
4349
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4350
f_charbig = 'updated by trigger'
4351
WHERE f_int1 = new.f_int1;
4353
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4354
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
4355
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4357
# check trigger-2 success: 1
4359
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4360
f_int2 = CAST(f_char1 AS SIGNED INT),
4361
f_charbig = 'just inserted'
4362
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4364
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4365
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4366
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4367
'just inserted' FROM t0_template
4368
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4369
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
4371
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4372
f_charbig = 'updated by trigger'
4373
WHERE f_int1 = new.f_int1;
4375
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
4376
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4378
# check trigger-3 success: 1
4380
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4381
f_int2 = CAST(f_char1 AS SIGNED INT),
4382
f_charbig = 'just inserted'
4383
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4385
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4386
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4387
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4388
'just inserted' FROM t0_template
4389
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4390
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
4392
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4393
f_charbig = 'updated by trigger'
4394
WHERE f_int1 = - old.f_int1;
4396
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
4397
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4399
# check trigger-4 success: 1
4401
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4402
f_int2 = CAST(f_char1 AS SIGNED INT),
4403
f_charbig = 'just inserted'
4404
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4406
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4407
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4408
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4409
'just inserted' FROM t0_template
4410
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4411
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
4413
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4414
f_charbig = 'updated by trigger'
4415
WHERE f_int1 = new.f_int1;
4417
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
4418
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4420
# check trigger-5 success: 1
4422
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4423
f_int2 = CAST(f_char1 AS SIGNED INT),
4424
f_charbig = 'just inserted'
4425
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4427
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4428
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4429
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4430
'just inserted' FROM t0_template
4431
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4432
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
4434
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4435
f_charbig = 'updated by trigger'
4436
WHERE f_int1 = - old.f_int1;
4438
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
4439
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4441
# check trigger-6 success: 1
4443
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4444
f_int2 = CAST(f_char1 AS SIGNED INT),
4445
f_charbig = 'just inserted'
4446
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4448
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4449
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4450
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4451
'just inserted' FROM t0_template
4452
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4453
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
4455
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4456
f_charbig = 'updated by trigger'
4457
WHERE f_int1 = - old.f_int1;
4460
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4462
# check trigger-7 success: 1
4464
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4465
f_int2 = CAST(f_char1 AS SIGNED INT),
4466
f_charbig = 'just inserted'
4467
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4469
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4470
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4471
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4472
'just inserted' FROM t0_template
4473
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4474
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
4476
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4477
f_charbig = 'updated by trigger'
4478
WHERE f_int1 = - old.f_int1;
4481
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4483
# check trigger-8 success: 1
4485
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4486
f_int2 = CAST(f_char1 AS SIGNED INT),
4487
f_charbig = 'just inserted'
4488
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4490
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4492
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4493
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
4495
SET new.f_int1 = old.f_int1 + @max_row,
4496
new.f_int2 = old.f_int2 - @max_row,
4497
new.f_charbig = '####updated per update trigger####';
4500
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
4501
f_charbig = '####updated per update statement itself####';
4503
# check trigger-9 success: 1
4505
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4506
f_int2 = CAST(f_char1 AS SIGNED INT),
4507
f_charbig = CONCAT('===',f_char1,'===');
4508
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
4510
SET new.f_int1 = new.f_int1 + @max_row,
4511
new.f_int2 = new.f_int2 - @max_row,
4512
new.f_charbig = '####updated per update trigger####';
4515
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
4516
f_charbig = '####updated per update statement itself####';
4518
# check trigger-10 success: 1
4520
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4521
f_int2 = CAST(f_char1 AS SIGNED INT),
4522
f_charbig = CONCAT('===',f_char1,'===');
4523
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
4525
SET new.f_int1 = @my_max1 + @counter,
4526
new.f_int2 = @my_min2 - @counter,
4527
new.f_charbig = '####updated per insert trigger####';
4528
SET @counter = @counter + 1;
4531
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
4532
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4533
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
4534
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
4535
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
4539
# check trigger-11 success: 1
4541
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
4542
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
4543
AND f_charbig = '####updated per insert trigger####';
4544
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
4546
SET new.f_int1 = @my_max1 + @counter,
4547
new.f_int2 = @my_min2 - @counter,
4548
new.f_charbig = '####updated per insert trigger####';
4549
SET @counter = @counter + 1;
4552
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
4553
INSERT INTO t1 (f_char1, f_char2, f_charbig)
4554
SELECT CAST(f_int1 AS CHAR),
4555
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
4556
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
4560
# check trigger-12 success: 1
4562
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
4563
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
4564
AND f_charbig = '####updated per insert trigger####';
4566
Table Op Msg_type Msg_text
4567
test.t1 analyze note The storage engine for the table doesn't support analyze
4568
CHECK TABLE t1 EXTENDED;
4569
Table Op Msg_type Msg_text
4570
test.t1 check note The storage engine for the table doesn't support check
4571
CHECKSUM TABLE t1 EXTENDED;
4573
test.t1 <some_value>
4575
Table Op Msg_type Msg_text
4576
test.t1 optimize note The storage engine for the table doesn't support optimize
4577
# check layout success: 1
4578
REPAIR TABLE t1 EXTENDED;
4579
Table Op Msg_type Msg_text
4580
test.t1 repair note The storage engine for the table doesn't support repair
4581
# check layout success: 1
4584
# check TRUNCATE success: 1
4585
# check layout success: 1
4586
# End usability test (include/partition_check.inc)
4593
f_charbig VARCHAR(1000)
4595
PARTITION BY RANGE(f_int1)
4596
SUBPARTITION BY HASH(f_int1)
4597
( PARTITION part1 VALUES LESS THAN (10)
4598
(SUBPARTITION subpart11 STORAGE ENGINE = 'ndbcluster',
4599
SUBPARTITION subpart12 STORAGE ENGINE = 'ndbcluster'),
4600
PARTITION part2 VALUES LESS THAN (2147483646)
4601
(SUBPARTITION subpart21 STORAGE ENGINE = 'ndbcluster',
4602
SUBPARTITION subpart22 STORAGE ENGINE = 'ndbcluster')
4604
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
4605
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
4606
# Start usability test (include/partition_check.inc)
4608
SHOW CREATE TABLE t1;
4610
t1 CREATE TABLE `t1` (
4611
`f_int1` int(11) DEFAULT NULL,
4612
`f_int2` int(11) DEFAULT NULL,
4613
`f_char1` char(20) DEFAULT NULL,
4614
`f_char2` char(20) DEFAULT NULL,
4615
`f_charbig` varchar(1000) DEFAULT NULL
4616
) ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY RANGE (f_int1) SUBPARTITION BY HASH (f_int1) (PARTITION part1 VALUES LESS THAN (10) (SUBPARTITION subpart11 ENGINE = ndbcluster, SUBPARTITION subpart12 ENGINE = ndbcluster), PARTITION part2 VALUES LESS THAN (2147483646) (SUBPARTITION subpart21 ENGINE = ndbcluster, SUBPARTITION subpart22 ENGINE = ndbcluster))
4618
# check prerequisites-1 success: 1
4619
# check COUNT(*) success: 1
4620
# check MIN/MAX(f_int1) success: 1
4621
# check MIN/MAX(f_int2) success: 1
4622
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4623
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
4624
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
4625
WHERE f_int1 IN (2,3);
4626
# check prerequisites-3 success: 1
4627
DELETE FROM t1 WHERE f_charbig = 'delete me';
4628
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
4629
# check read via f_int1 success: 1
4630
# check read via f_int2 success: 1
4632
# check multiple-1 success: 1
4633
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
4635
# check multiple-2 success: 1
4636
INSERT INTO t1 SELECT * FROM t0_template
4637
WHERE MOD(f_int1,3) = 0;
4639
# check multiple-3 success: 1
4640
UPDATE t1 SET f_int1 = f_int1 + @max_row
4641
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
4642
AND @max_row_div2 + @max_row_div4;
4644
# check multiple-4 success: 1
4646
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
4647
AND @max_row_div2 + @max_row_div4 + @max_row;
4649
# check multiple-5 success: 1
4650
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
4652
SET f_int1 = @cur_value , f_int2 = @cur_value,
4653
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
4654
f_charbig = '#SINGLE#';
4656
# check single-1 success: 1
4657
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
4659
SET f_int1 = @cur_value , f_int2 = @cur_value,
4660
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
4661
f_charbig = '#SINGLE#';
4663
# check single-2 success: 1
4664
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
4665
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
4666
UPDATE t1 SET f_int1 = @cur_value2
4667
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
4669
# check single-3 success: 1
4670
SET @cur_value1= -1;
4671
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
4672
UPDATE t1 SET f_int1 = @cur_value1
4673
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
4675
# check single-4 success: 1
4676
SELECT MAX(f_int1) INTO @cur_value FROM t1;
4677
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
4679
# check single-5 success: 1
4680
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
4682
# check single-6 success: 1
4683
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
4684
ERROR HY000: Table has no partition for value 2147483647
4685
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
4686
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
4687
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
4688
f_charbig = '#NULL#';
4690
SET f_int1 = NULL , f_int2 = -@max_row,
4691
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
4692
f_charbig = '#NULL#';
4693
# check null success: 1
4695
# check null-1 success: 1
4696
UPDATE t1 SET f_int1 = -@max_row
4697
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
4698
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
4700
# check null-2 success: 1
4701
UPDATE t1 SET f_int1 = NULL
4702
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
4703
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
4705
# check null-3 success: 1
4707
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
4708
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
4710
# check null-4 success: 1
4712
WHERE f_int1 = 0 AND f_int2 = 0
4713
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
4714
AND f_charbig = '#NULL#';
4716
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4717
SELECT f_int1, f_int1, '', '', 'was inserted'
4718
FROM t0_template source_tab
4719
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
4721
# check transactions-1 success: 1
4724
# check transactions-2 success: 1
4727
# check transactions-3 success: 1
4728
DELETE FROM t1 WHERE f_charbig = 'was inserted';
4732
# check transactions-4 success: 1
4733
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4734
SELECT f_int1, f_int1, '', '', 'was inserted'
4735
FROM t0_template source_tab
4736
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
4738
# check transactions-5 success: 1
4741
# check transactions-6 success: 1
4742
# INFO: Storage engine used for t1 seems to be transactional.
4745
# check transactions-7 success: 1
4746
DELETE FROM t1 WHERE f_charbig = 'was inserted';
4748
SET @@session.sql_mode = 'traditional';
4749
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
4750
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4751
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
4752
'', '', 'was inserted' FROM t0_template
4753
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
4754
ERROR 22012: Division by 0
4757
# check transactions-8 success: 1
4758
# INFO: Storage engine used for t1 seems to be unable to revert
4759
# changes made by the failing statement.
4760
SET @@session.sql_mode = '';
4762
DELETE FROM t1 WHERE f_charbig = 'was inserted';
4764
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
4766
# check special-1 success: 1
4767
UPDATE t1 SET f_charbig = '';
4769
# check special-2 success: 1
4770
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
4771
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
4772
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
4773
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4774
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4775
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4776
'just inserted' FROM t0_template
4777
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4778
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
4780
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4781
f_charbig = 'updated by trigger'
4782
WHERE f_int1 = new.f_int1;
4784
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4785
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
4786
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4788
# check trigger-1 success: 1
4790
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4791
f_int2 = CAST(f_char1 AS SIGNED INT),
4792
f_charbig = 'just inserted'
4793
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4795
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4796
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4797
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4798
'just inserted' FROM t0_template
4799
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4800
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
4802
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4803
f_charbig = 'updated by trigger'
4804
WHERE f_int1 = new.f_int1;
4806
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4807
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
4808
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4810
# check trigger-2 success: 1
4812
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4813
f_int2 = CAST(f_char1 AS SIGNED INT),
4814
f_charbig = 'just inserted'
4815
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4817
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4818
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4819
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4820
'just inserted' FROM t0_template
4821
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4822
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
4824
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4825
f_charbig = 'updated by trigger'
4826
WHERE f_int1 = new.f_int1;
4828
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
4829
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4831
# check trigger-3 success: 1
4833
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4834
f_int2 = CAST(f_char1 AS SIGNED INT),
4835
f_charbig = 'just inserted'
4836
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4838
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4839
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4840
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4841
'just inserted' FROM t0_template
4842
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4843
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
4845
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4846
f_charbig = 'updated by trigger'
4847
WHERE f_int1 = - old.f_int1;
4849
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
4850
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4852
# check trigger-4 success: 1
4854
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4855
f_int2 = CAST(f_char1 AS SIGNED INT),
4856
f_charbig = 'just inserted'
4857
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4859
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4860
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4861
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4862
'just inserted' FROM t0_template
4863
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4864
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
4866
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4867
f_charbig = 'updated by trigger'
4868
WHERE f_int1 = new.f_int1;
4870
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
4871
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4873
# check trigger-5 success: 1
4875
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4876
f_int2 = CAST(f_char1 AS SIGNED INT),
4877
f_charbig = 'just inserted'
4878
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4880
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4881
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4882
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4883
'just inserted' FROM t0_template
4884
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4885
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
4887
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4888
f_charbig = 'updated by trigger'
4889
WHERE f_int1 = - old.f_int1;
4891
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
4892
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4894
# check trigger-6 success: 1
4896
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4897
f_int2 = CAST(f_char1 AS SIGNED INT),
4898
f_charbig = 'just inserted'
4899
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4901
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4902
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4903
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4904
'just inserted' FROM t0_template
4905
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4906
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
4908
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4909
f_charbig = 'updated by trigger'
4910
WHERE f_int1 = - old.f_int1;
4913
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4915
# check trigger-7 success: 1
4917
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4918
f_int2 = CAST(f_char1 AS SIGNED INT),
4919
f_charbig = 'just inserted'
4920
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4922
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4923
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4924
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4925
'just inserted' FROM t0_template
4926
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4927
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
4929
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4930
f_charbig = 'updated by trigger'
4931
WHERE f_int1 = - old.f_int1;
4934
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4936
# check trigger-8 success: 1
4938
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4939
f_int2 = CAST(f_char1 AS SIGNED INT),
4940
f_charbig = 'just inserted'
4941
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4943
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4945
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4946
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
4948
SET new.f_int1 = old.f_int1 + @max_row,
4949
new.f_int2 = old.f_int2 - @max_row,
4950
new.f_charbig = '####updated per update trigger####';
4953
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
4954
f_charbig = '####updated per update statement itself####';
4956
# check trigger-9 success: 1
4958
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4959
f_int2 = CAST(f_char1 AS SIGNED INT),
4960
f_charbig = CONCAT('===',f_char1,'===');
4961
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
4963
SET new.f_int1 = new.f_int1 + @max_row,
4964
new.f_int2 = new.f_int2 - @max_row,
4965
new.f_charbig = '####updated per update trigger####';
4968
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
4969
f_charbig = '####updated per update statement itself####';
4971
# check trigger-10 success: 1
4973
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4974
f_int2 = CAST(f_char1 AS SIGNED INT),
4975
f_charbig = CONCAT('===',f_char1,'===');
4976
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
4978
SET new.f_int1 = @my_max1 + @counter,
4979
new.f_int2 = @my_min2 - @counter,
4980
new.f_charbig = '####updated per insert trigger####';
4981
SET @counter = @counter + 1;
4984
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
4985
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4986
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
4987
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
4988
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
4992
# check trigger-11 success: 1
4994
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
4995
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
4996
AND f_charbig = '####updated per insert trigger####';
4997
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
4999
SET new.f_int1 = @my_max1 + @counter,
5000
new.f_int2 = @my_min2 - @counter,
5001
new.f_charbig = '####updated per insert trigger####';
5002
SET @counter = @counter + 1;
5005
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
5006
INSERT INTO t1 (f_char1, f_char2, f_charbig)
5007
SELECT CAST(f_int1 AS CHAR),
5008
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
5009
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
5013
# check trigger-12 success: 1
5015
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
5016
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
5017
AND f_charbig = '####updated per insert trigger####';
5019
Table Op Msg_type Msg_text
5020
test.t1 analyze note The storage engine for the table doesn't support analyze
5021
CHECK TABLE t1 EXTENDED;
5022
Table Op Msg_type Msg_text
5023
test.t1 check note The storage engine for the table doesn't support check
5024
CHECKSUM TABLE t1 EXTENDED;
5026
test.t1 <some_value>
5028
Table Op Msg_type Msg_text
5029
test.t1 optimize note The storage engine for the table doesn't support optimize
5030
# check layout success: 1
5031
REPAIR TABLE t1 EXTENDED;
5032
Table Op Msg_type Msg_text
5033
test.t1 repair note The storage engine for the table doesn't support repair
5034
# check layout success: 1
5037
# check TRUNCATE success: 1
5038
# check layout success: 1
5039
# End usability test (include/partition_check.inc)
5041
# 6.2 Storage engine assignment after partition name + after
5048
f_charbig VARCHAR(1000)
5050
PARTITION BY RANGE(f_int1)
5051
SUBPARTITION BY HASH(f_int1)
5052
( PARTITION part1 VALUES LESS THAN (10) STORAGE ENGINE = 'ndbcluster'
5053
(SUBPARTITION subpart11 STORAGE ENGINE = 'ndbcluster',
5054
SUBPARTITION subpart12 STORAGE ENGINE = 'ndbcluster'),
5055
PARTITION part2 VALUES LESS THAN (2147483646)
5056
(SUBPARTITION subpart21 STORAGE ENGINE = 'ndbcluster',
5057
SUBPARTITION subpart22 STORAGE ENGINE = 'ndbcluster')
5059
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
5060
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
5061
# Start usability test (include/partition_check.inc)
5063
SHOW CREATE TABLE t1;
5065
t1 CREATE TABLE `t1` (
5066
`f_int1` int(11) DEFAULT NULL,
5067
`f_int2` int(11) DEFAULT NULL,
5068
`f_char1` char(20) DEFAULT NULL,
5069
`f_char2` char(20) DEFAULT NULL,
5070
`f_charbig` varchar(1000) DEFAULT NULL
5071
) ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY RANGE (f_int1) SUBPARTITION BY HASH (f_int1) (PARTITION part1 VALUES LESS THAN (10) (SUBPARTITION subpart11 ENGINE = ndbcluster, SUBPARTITION subpart12 ENGINE = ndbcluster), PARTITION part2 VALUES LESS THAN (2147483646) (SUBPARTITION subpart21 ENGINE = ndbcluster, SUBPARTITION subpart22 ENGINE = ndbcluster))
5073
# check prerequisites-1 success: 1
5074
# check COUNT(*) success: 1
5075
# check MIN/MAX(f_int1) success: 1
5076
# check MIN/MAX(f_int2) success: 1
5077
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5078
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
5079
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
5080
WHERE f_int1 IN (2,3);
5081
# check prerequisites-3 success: 1
5082
DELETE FROM t1 WHERE f_charbig = 'delete me';
5083
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
5084
# check read via f_int1 success: 1
5085
# check read via f_int2 success: 1
5087
# check multiple-1 success: 1
5088
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
5090
# check multiple-2 success: 1
5091
INSERT INTO t1 SELECT * FROM t0_template
5092
WHERE MOD(f_int1,3) = 0;
5094
# check multiple-3 success: 1
5095
UPDATE t1 SET f_int1 = f_int1 + @max_row
5096
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
5097
AND @max_row_div2 + @max_row_div4;
5099
# check multiple-4 success: 1
5101
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
5102
AND @max_row_div2 + @max_row_div4 + @max_row;
5104
# check multiple-5 success: 1
5105
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
5107
SET f_int1 = @cur_value , f_int2 = @cur_value,
5108
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
5109
f_charbig = '#SINGLE#';
5111
# check single-1 success: 1
5112
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
5114
SET f_int1 = @cur_value , f_int2 = @cur_value,
5115
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
5116
f_charbig = '#SINGLE#';
5118
# check single-2 success: 1
5119
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
5120
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
5121
UPDATE t1 SET f_int1 = @cur_value2
5122
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
5124
# check single-3 success: 1
5125
SET @cur_value1= -1;
5126
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
5127
UPDATE t1 SET f_int1 = @cur_value1
5128
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
5130
# check single-4 success: 1
5131
SELECT MAX(f_int1) INTO @cur_value FROM t1;
5132
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
5134
# check single-5 success: 1
5135
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
5137
# check single-6 success: 1
5138
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
5139
ERROR HY000: Table has no partition for value 2147483647
5140
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
5141
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
5142
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
5143
f_charbig = '#NULL#';
5145
SET f_int1 = NULL , f_int2 = -@max_row,
5146
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
5147
f_charbig = '#NULL#';
5148
# check null success: 1
5150
# check null-1 success: 1
5151
UPDATE t1 SET f_int1 = -@max_row
5152
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
5153
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
5155
# check null-2 success: 1
5156
UPDATE t1 SET f_int1 = NULL
5157
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
5158
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
5160
# check null-3 success: 1
5162
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
5163
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
5165
# check null-4 success: 1
5167
WHERE f_int1 = 0 AND f_int2 = 0
5168
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
5169
AND f_charbig = '#NULL#';
5171
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5172
SELECT f_int1, f_int1, '', '', 'was inserted'
5173
FROM t0_template source_tab
5174
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
5176
# check transactions-1 success: 1
5179
# check transactions-2 success: 1
5182
# check transactions-3 success: 1
5183
DELETE FROM t1 WHERE f_charbig = 'was inserted';
5187
# check transactions-4 success: 1
5188
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5189
SELECT f_int1, f_int1, '', '', 'was inserted'
5190
FROM t0_template source_tab
5191
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
5193
# check transactions-5 success: 1
5196
# check transactions-6 success: 1
5197
# INFO: Storage engine used for t1 seems to be transactional.
5200
# check transactions-7 success: 1
5201
DELETE FROM t1 WHERE f_charbig = 'was inserted';
5203
SET @@session.sql_mode = 'traditional';
5204
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
5205
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5206
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
5207
'', '', 'was inserted' FROM t0_template
5208
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
5209
ERROR 22012: Division by 0
5212
# check transactions-8 success: 1
5213
# INFO: Storage engine used for t1 seems to be unable to revert
5214
# changes made by the failing statement.
5215
SET @@session.sql_mode = '';
5217
DELETE FROM t1 WHERE f_charbig = 'was inserted';
5219
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
5221
# check special-1 success: 1
5222
UPDATE t1 SET f_charbig = '';
5224
# check special-2 success: 1
5225
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
5226
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
5227
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
5228
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5229
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5230
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5231
'just inserted' FROM t0_template
5232
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5233
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
5235
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5236
f_charbig = 'updated by trigger'
5237
WHERE f_int1 = new.f_int1;
5239
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5240
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
5241
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5243
# check trigger-1 success: 1
5245
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5246
f_int2 = CAST(f_char1 AS SIGNED INT),
5247
f_charbig = 'just inserted'
5248
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5250
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5251
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5252
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5253
'just inserted' FROM t0_template
5254
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5255
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
5257
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5258
f_charbig = 'updated by trigger'
5259
WHERE f_int1 = new.f_int1;
5261
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5262
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
5263
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5265
# check trigger-2 success: 1
5267
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5268
f_int2 = CAST(f_char1 AS SIGNED INT),
5269
f_charbig = 'just inserted'
5270
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5272
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5273
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5274
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5275
'just inserted' FROM t0_template
5276
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5277
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
5279
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5280
f_charbig = 'updated by trigger'
5281
WHERE f_int1 = new.f_int1;
5283
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
5284
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5286
# check trigger-3 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 = 'just inserted'
5291
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5293
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5294
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5295
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5296
'just inserted' FROM t0_template
5297
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5298
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
5300
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5301
f_charbig = 'updated by trigger'
5302
WHERE f_int1 = - old.f_int1;
5304
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
5305
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5307
# check trigger-4 success: 1
5309
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5310
f_int2 = CAST(f_char1 AS SIGNED INT),
5311
f_charbig = 'just inserted'
5312
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5314
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5315
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5316
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5317
'just inserted' FROM t0_template
5318
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5319
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
5321
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5322
f_charbig = 'updated by trigger'
5323
WHERE f_int1 = new.f_int1;
5325
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
5326
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5328
# check trigger-5 success: 1
5330
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5331
f_int2 = CAST(f_char1 AS SIGNED INT),
5332
f_charbig = 'just inserted'
5333
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5335
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5336
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5337
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5338
'just inserted' FROM t0_template
5339
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5340
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
5342
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5343
f_charbig = 'updated by trigger'
5344
WHERE f_int1 = - old.f_int1;
5346
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
5347
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5349
# check trigger-6 success: 1
5351
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5352
f_int2 = CAST(f_char1 AS SIGNED INT),
5353
f_charbig = 'just inserted'
5354
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5356
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5357
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5358
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5359
'just inserted' FROM t0_template
5360
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5361
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
5363
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5364
f_charbig = 'updated by trigger'
5365
WHERE f_int1 = - old.f_int1;
5368
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5370
# check trigger-7 success: 1
5372
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5373
f_int2 = CAST(f_char1 AS SIGNED INT),
5374
f_charbig = 'just inserted'
5375
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5377
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5378
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5379
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5380
'just inserted' FROM t0_template
5381
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5382
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
5384
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5385
f_charbig = 'updated by trigger'
5386
WHERE f_int1 = - old.f_int1;
5389
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5391
# check trigger-8 success: 1
5393
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5394
f_int2 = CAST(f_char1 AS SIGNED INT),
5395
f_charbig = 'just inserted'
5396
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5398
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5400
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5401
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
5403
SET new.f_int1 = old.f_int1 + @max_row,
5404
new.f_int2 = old.f_int2 - @max_row,
5405
new.f_charbig = '####updated per update trigger####';
5408
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
5409
f_charbig = '####updated per update statement itself####';
5411
# check trigger-9 success: 1
5413
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5414
f_int2 = CAST(f_char1 AS SIGNED INT),
5415
f_charbig = CONCAT('===',f_char1,'===');
5416
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
5418
SET new.f_int1 = new.f_int1 + @max_row,
5419
new.f_int2 = new.f_int2 - @max_row,
5420
new.f_charbig = '####updated per update trigger####';
5423
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
5424
f_charbig = '####updated per update statement itself####';
5426
# check trigger-10 success: 1
5428
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5429
f_int2 = CAST(f_char1 AS SIGNED INT),
5430
f_charbig = CONCAT('===',f_char1,'===');
5431
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
5433
SET new.f_int1 = @my_max1 + @counter,
5434
new.f_int2 = @my_min2 - @counter,
5435
new.f_charbig = '####updated per insert trigger####';
5436
SET @counter = @counter + 1;
5439
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
5440
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5441
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
5442
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
5443
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
5447
# check trigger-11 success: 1
5449
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
5450
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
5451
AND f_charbig = '####updated per insert trigger####';
5452
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
5454
SET new.f_int1 = @my_max1 + @counter,
5455
new.f_int2 = @my_min2 - @counter,
5456
new.f_charbig = '####updated per insert trigger####';
5457
SET @counter = @counter + 1;
5460
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
5461
INSERT INTO t1 (f_char1, f_char2, f_charbig)
5462
SELECT CAST(f_int1 AS CHAR),
5463
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
5464
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
5468
# check trigger-12 success: 1
5470
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
5471
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
5472
AND f_charbig = '####updated per insert trigger####';
5474
Table Op Msg_type Msg_text
5475
test.t1 analyze note The storage engine for the table doesn't support analyze
5476
CHECK TABLE t1 EXTENDED;
5477
Table Op Msg_type Msg_text
5478
test.t1 check note The storage engine for the table doesn't support check
5479
CHECKSUM TABLE t1 EXTENDED;
5481
test.t1 <some_value>
5483
Table Op Msg_type Msg_text
5484
test.t1 optimize note The storage engine for the table doesn't support optimize
5485
# check layout success: 1
5486
REPAIR TABLE t1 EXTENDED;
5487
Table Op Msg_type Msg_text
5488
test.t1 repair note The storage engine for the table doesn't support repair
5489
# check layout success: 1
5492
# check TRUNCATE success: 1
5493
# check layout success: 1
5494
# End usability test (include/partition_check.inc)
5496
#------------------------------------------------------------------------
5497
# 6 Session default engine differs from engine used within create table
5498
#------------------------------------------------------------------------
5499
SET SESSION storage_engine='MEMORY';
5505
f_charbig VARCHAR(1000)
5507
PARTITION BY HASH(f_int1) ( PARTITION part1 ENGINE = 'ndbcluster');
5508
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
5509
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
5510
# Start usability test (include/partition_check.inc)
5512
SHOW CREATE TABLE t1;
5514
t1 CREATE TABLE `t1` (
5515
`f_int1` int(11) DEFAULT NULL,
5516
`f_int2` int(11) DEFAULT NULL,
5517
`f_char1` char(20) DEFAULT NULL,
5518
`f_char2` char(20) DEFAULT NULL,
5519
`f_charbig` varchar(1000) DEFAULT NULL
5520
) ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY HASH (f_int1) (PARTITION part1 ENGINE = ndbcluster)
5522
# check prerequisites-1 success: 1
5523
# check COUNT(*) success: 1
5524
# check MIN/MAX(f_int1) success: 1
5525
# check MIN/MAX(f_int2) success: 1
5526
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5527
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
5528
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
5529
WHERE f_int1 IN (2,3);
5530
# check prerequisites-3 success: 1
5531
DELETE FROM t1 WHERE f_charbig = 'delete me';
5532
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
5533
# check read via f_int1 success: 1
5534
# check read via f_int2 success: 1
5536
# check multiple-1 success: 1
5537
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
5539
# check multiple-2 success: 1
5540
INSERT INTO t1 SELECT * FROM t0_template
5541
WHERE MOD(f_int1,3) = 0;
5543
# check multiple-3 success: 1
5544
UPDATE t1 SET f_int1 = f_int1 + @max_row
5545
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
5546
AND @max_row_div2 + @max_row_div4;
5548
# check multiple-4 success: 1
5550
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
5551
AND @max_row_div2 + @max_row_div4 + @max_row;
5553
# check multiple-5 success: 1
5554
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
5556
SET f_int1 = @cur_value , f_int2 = @cur_value,
5557
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
5558
f_charbig = '#SINGLE#';
5560
# check single-1 success: 1
5561
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
5563
SET f_int1 = @cur_value , f_int2 = @cur_value,
5564
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
5565
f_charbig = '#SINGLE#';
5567
# check single-2 success: 1
5568
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
5569
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
5570
UPDATE t1 SET f_int1 = @cur_value2
5571
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
5573
# check single-3 success: 1
5574
SET @cur_value1= -1;
5575
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
5576
UPDATE t1 SET f_int1 = @cur_value1
5577
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
5579
# check single-4 success: 1
5580
SELECT MAX(f_int1) INTO @cur_value FROM t1;
5581
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
5583
# check single-5 success: 1
5584
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
5586
# check single-6 success: 1
5587
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
5589
# check single-7 success: 1
5590
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
5591
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
5592
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
5593
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
5594
f_charbig = '#NULL#';
5596
SET f_int1 = NULL , f_int2 = -@max_row,
5597
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
5598
f_charbig = '#NULL#';
5599
# check null success: 1
5601
# check null-1 success: 1
5602
UPDATE t1 SET f_int1 = -@max_row
5603
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
5604
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
5606
# check null-2 success: 1
5607
UPDATE t1 SET f_int1 = NULL
5608
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
5609
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
5611
# check null-3 success: 1
5613
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
5614
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
5616
# check null-4 success: 1
5618
WHERE f_int1 = 0 AND f_int2 = 0
5619
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
5620
AND f_charbig = '#NULL#';
5622
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5623
SELECT f_int1, f_int1, '', '', 'was inserted'
5624
FROM t0_template source_tab
5625
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
5627
# check transactions-1 success: 1
5630
# check transactions-2 success: 1
5633
# check transactions-3 success: 1
5634
DELETE FROM t1 WHERE f_charbig = 'was inserted';
5638
# check transactions-4 success: 1
5639
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5640
SELECT f_int1, f_int1, '', '', 'was inserted'
5641
FROM t0_template source_tab
5642
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
5644
# check transactions-5 success: 1
5647
Warning 1196 Some non-transactional changed tables couldn't be rolled back
5649
# check transactions-6 success: 1
5650
# INFO: Storage engine used for t1 seems to be not transactional.
5653
# check transactions-7 success: 1
5654
DELETE FROM t1 WHERE f_charbig = 'was inserted';
5656
SET @@session.sql_mode = 'traditional';
5657
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
5658
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5659
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
5660
'', '', 'was inserted' FROM t0_template
5661
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
5662
ERROR 22012: Division by 0
5665
# check transactions-8 success: 1
5666
# INFO: Storage engine used for t1 seems to be unable to revert
5667
# changes made by the failing statement.
5668
SET @@session.sql_mode = '';
5670
DELETE FROM t1 WHERE f_charbig = 'was inserted';
5672
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
5674
# check special-1 success: 1
5675
UPDATE t1 SET f_charbig = '';
5677
# check special-2 success: 1
5678
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
5679
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
5680
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
5681
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5682
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5683
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5684
'just inserted' FROM t0_template
5685
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5686
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
5688
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5689
f_charbig = 'updated by trigger'
5690
WHERE f_int1 = new.f_int1;
5692
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5693
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
5694
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5696
# check trigger-1 success: 1
5698
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5699
f_int2 = CAST(f_char1 AS SIGNED INT),
5700
f_charbig = 'just inserted'
5701
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5703
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5704
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5705
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5706
'just inserted' FROM t0_template
5707
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5708
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
5710
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5711
f_charbig = 'updated by trigger'
5712
WHERE f_int1 = new.f_int1;
5714
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5715
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
5716
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5718
# check trigger-2 success: 1
5720
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5721
f_int2 = CAST(f_char1 AS SIGNED INT),
5722
f_charbig = 'just inserted'
5723
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5725
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5726
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5727
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5728
'just inserted' FROM t0_template
5729
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5730
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
5732
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5733
f_charbig = 'updated by trigger'
5734
WHERE f_int1 = new.f_int1;
5736
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
5737
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5739
# check trigger-3 success: 1
5741
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5742
f_int2 = CAST(f_char1 AS SIGNED INT),
5743
f_charbig = 'just inserted'
5744
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5746
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5747
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5748
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5749
'just inserted' FROM t0_template
5750
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5751
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
5753
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5754
f_charbig = 'updated by trigger'
5755
WHERE f_int1 = - old.f_int1;
5757
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
5758
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5760
# check trigger-4 success: 1
5762
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5763
f_int2 = CAST(f_char1 AS SIGNED INT),
5764
f_charbig = 'just inserted'
5765
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5767
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5768
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5769
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5770
'just inserted' FROM t0_template
5771
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5772
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
5774
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5775
f_charbig = 'updated by trigger'
5776
WHERE f_int1 = new.f_int1;
5778
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
5779
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5781
# check trigger-5 success: 1
5783
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5784
f_int2 = CAST(f_char1 AS SIGNED INT),
5785
f_charbig = 'just inserted'
5786
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5788
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5789
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5790
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5791
'just inserted' FROM t0_template
5792
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5793
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
5795
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5796
f_charbig = 'updated by trigger'
5797
WHERE f_int1 = - old.f_int1;
5799
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
5800
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5802
# check trigger-6 success: 1
5804
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5805
f_int2 = CAST(f_char1 AS SIGNED INT),
5806
f_charbig = 'just inserted'
5807
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5809
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5810
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5811
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5812
'just inserted' FROM t0_template
5813
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5814
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
5816
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5817
f_charbig = 'updated by trigger'
5818
WHERE f_int1 = - old.f_int1;
5821
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5823
# check trigger-7 success: 1
5825
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5826
f_int2 = CAST(f_char1 AS SIGNED INT),
5827
f_charbig = 'just inserted'
5828
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5830
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5831
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5832
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5833
'just inserted' FROM t0_template
5834
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5835
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
5837
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5838
f_charbig = 'updated by trigger'
5839
WHERE f_int1 = - old.f_int1;
5842
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5844
# check trigger-8 success: 1
5846
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5847
f_int2 = CAST(f_char1 AS SIGNED INT),
5848
f_charbig = 'just inserted'
5849
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5851
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5853
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5854
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
5856
SET new.f_int1 = old.f_int1 + @max_row,
5857
new.f_int2 = old.f_int2 - @max_row,
5858
new.f_charbig = '####updated per update trigger####';
5861
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
5862
f_charbig = '####updated per update statement itself####';
5864
# check trigger-9 success: 1
5866
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5867
f_int2 = CAST(f_char1 AS SIGNED INT),
5868
f_charbig = CONCAT('===',f_char1,'===');
5869
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
5871
SET new.f_int1 = new.f_int1 + @max_row,
5872
new.f_int2 = new.f_int2 - @max_row,
5873
new.f_charbig = '####updated per update trigger####';
5876
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
5877
f_charbig = '####updated per update statement itself####';
5879
# check trigger-10 success: 1
5881
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5882
f_int2 = CAST(f_char1 AS SIGNED INT),
5883
f_charbig = CONCAT('===',f_char1,'===');
5884
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
5886
SET new.f_int1 = @my_max1 + @counter,
5887
new.f_int2 = @my_min2 - @counter,
5888
new.f_charbig = '####updated per insert trigger####';
5889
SET @counter = @counter + 1;
5892
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
5893
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5894
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
5895
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
5896
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
5900
# check trigger-11 success: 1
5902
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
5903
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
5904
AND f_charbig = '####updated per insert trigger####';
5905
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
5907
SET new.f_int1 = @my_max1 + @counter,
5908
new.f_int2 = @my_min2 - @counter,
5909
new.f_charbig = '####updated per insert trigger####';
5910
SET @counter = @counter + 1;
5913
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
5914
INSERT INTO t1 (f_char1, f_char2, f_charbig)
5915
SELECT CAST(f_int1 AS CHAR),
5916
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
5917
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
5921
# check trigger-12 success: 1
5923
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
5924
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
5925
AND f_charbig = '####updated per insert trigger####';
5927
Table Op Msg_type Msg_text
5928
test.t1 analyze note The storage engine for the table doesn't support analyze
5929
CHECK TABLE t1 EXTENDED;
5930
Table Op Msg_type Msg_text
5931
test.t1 check note The storage engine for the table doesn't support check
5932
CHECKSUM TABLE t1 EXTENDED;
5934
test.t1 <some_value>
5936
Table Op Msg_type Msg_text
5937
test.t1 optimize note The storage engine for the table doesn't support optimize
5938
# check layout success: 1
5939
REPAIR TABLE t1 EXTENDED;
5940
Table Op Msg_type Msg_text
5941
test.t1 repair note The storage engine for the table doesn't support repair
5942
# check layout success: 1
5945
# check TRUNCATE success: 1
5946
# check layout success: 1
5947
# End usability test (include/partition_check.inc)
5954
f_charbig VARCHAR(1000)
5956
PARTITION BY RANGE(f_int1)
5957
SUBPARTITION BY HASH(f_int1)
5958
( PARTITION part1 VALUES LESS THAN (1000)
5959
(SUBPARTITION subpart11 STORAGE ENGINE = 'ndbcluster',
5960
SUBPARTITION subpart12 STORAGE ENGINE = 'ndbcluster'));
5961
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
5962
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
5963
# Start usability test (include/partition_check.inc)
5965
SHOW CREATE TABLE t1;
5967
t1 CREATE TABLE `t1` (
5968
`f_int1` int(11) DEFAULT NULL,
5969
`f_int2` int(11) DEFAULT NULL,
5970
`f_char1` char(20) DEFAULT NULL,
5971
`f_char2` char(20) DEFAULT NULL,
5972
`f_charbig` varchar(1000) DEFAULT NULL
5973
) ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY RANGE (f_int1) SUBPARTITION BY HASH (f_int1) (PARTITION part1 VALUES LESS THAN (1000) (SUBPARTITION subpart11 ENGINE = ndbcluster, SUBPARTITION subpart12 ENGINE = ndbcluster))
5975
# check prerequisites-1 success: 1
5976
# check COUNT(*) success: 1
5977
# check MIN/MAX(f_int1) success: 1
5978
# check MIN/MAX(f_int2) success: 1
5979
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5980
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
5981
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
5982
WHERE f_int1 IN (2,3);
5983
# check prerequisites-3 success: 1
5984
DELETE FROM t1 WHERE f_charbig = 'delete me';
5985
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
5986
# check read via f_int1 success: 1
5987
# check read via f_int2 success: 1
5989
# check multiple-1 success: 1
5990
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
5992
# check multiple-2 success: 1
5993
INSERT INTO t1 SELECT * FROM t0_template
5994
WHERE MOD(f_int1,3) = 0;
5996
# check multiple-3 success: 1
5997
UPDATE t1 SET f_int1 = f_int1 + @max_row
5998
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
5999
AND @max_row_div2 + @max_row_div4;
6001
# check multiple-4 success: 1
6003
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
6004
AND @max_row_div2 + @max_row_div4 + @max_row;
6006
# check multiple-5 success: 1
6007
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
6009
SET f_int1 = @cur_value , f_int2 = @cur_value,
6010
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
6011
f_charbig = '#SINGLE#';
6013
# check single-1 success: 1
6014
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
6016
SET f_int1 = @cur_value , f_int2 = @cur_value,
6017
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
6018
f_charbig = '#SINGLE#';
6020
# check single-2 success: 1
6021
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
6022
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
6023
UPDATE t1 SET f_int1 = @cur_value2
6024
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
6026
# check single-3 success: 1
6027
SET @cur_value1= -1;
6028
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
6029
UPDATE t1 SET f_int1 = @cur_value1
6030
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
6032
# check single-4 success: 1
6033
SELECT MAX(f_int1) INTO @cur_value FROM t1;
6034
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
6036
# check single-5 success: 1
6037
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
6039
# check single-6 success: 1
6040
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
6042
# check single-7 success: 1
6043
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
6044
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
6045
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
6046
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
6047
f_charbig = '#NULL#';
6049
SET f_int1 = NULL , f_int2 = -@max_row,
6050
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
6051
f_charbig = '#NULL#';
6052
# check null success: 1
6054
# check null-1 success: 1
6055
UPDATE t1 SET f_int1 = -@max_row
6056
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
6057
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
6059
# check null-2 success: 1
6060
UPDATE t1 SET f_int1 = NULL
6061
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
6062
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
6064
# check null-3 success: 1
6066
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
6067
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
6069
# check null-4 success: 1
6071
WHERE f_int1 = 0 AND f_int2 = 0
6072
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
6073
AND f_charbig = '#NULL#';
6075
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6076
SELECT f_int1, f_int1, '', '', 'was inserted'
6077
FROM t0_template source_tab
6078
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
6080
# check transactions-1 success: 1
6083
# check transactions-2 success: 1
6086
# check transactions-3 success: 1
6087
DELETE FROM t1 WHERE f_charbig = 'was inserted';
6091
# check transactions-4 success: 1
6092
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6093
SELECT f_int1, f_int1, '', '', 'was inserted'
6094
FROM t0_template source_tab
6095
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
6097
# check transactions-5 success: 1
6100
Warning 1196 Some non-transactional changed tables couldn't be rolled back
6102
# check transactions-6 success: 1
6103
# INFO: Storage engine used for t1 seems to be not transactional.
6106
# check transactions-7 success: 1
6107
DELETE FROM t1 WHERE f_charbig = 'was inserted';
6109
SET @@session.sql_mode = 'traditional';
6110
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
6111
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6112
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
6113
'', '', 'was inserted' FROM t0_template
6114
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
6115
ERROR 22012: Division by 0
6118
# check transactions-8 success: 1
6119
# INFO: Storage engine used for t1 seems to be unable to revert
6120
# changes made by the failing statement.
6121
SET @@session.sql_mode = '';
6123
DELETE FROM t1 WHERE f_charbig = 'was inserted';
6125
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
6127
# check special-1 success: 1
6128
UPDATE t1 SET f_charbig = '';
6130
# check special-2 success: 1
6131
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
6132
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
6133
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
6134
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6135
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6136
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6137
'just inserted' FROM t0_template
6138
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6139
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
6141
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6142
f_charbig = 'updated by trigger'
6143
WHERE f_int1 = new.f_int1;
6145
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6146
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
6147
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6149
# check trigger-1 success: 1
6151
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6152
f_int2 = CAST(f_char1 AS SIGNED INT),
6153
f_charbig = 'just inserted'
6154
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6156
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6157
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6158
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6159
'just inserted' FROM t0_template
6160
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6161
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
6163
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6164
f_charbig = 'updated by trigger'
6165
WHERE f_int1 = new.f_int1;
6167
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6168
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
6169
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6171
# check trigger-2 success: 1
6173
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6174
f_int2 = CAST(f_char1 AS SIGNED INT),
6175
f_charbig = 'just inserted'
6176
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6178
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6179
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6180
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6181
'just inserted' FROM t0_template
6182
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6183
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
6185
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6186
f_charbig = 'updated by trigger'
6187
WHERE f_int1 = new.f_int1;
6189
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
6190
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6192
# check trigger-3 success: 1
6194
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6195
f_int2 = CAST(f_char1 AS SIGNED INT),
6196
f_charbig = 'just inserted'
6197
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6199
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6200
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6201
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6202
'just inserted' FROM t0_template
6203
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6204
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
6206
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6207
f_charbig = 'updated by trigger'
6208
WHERE f_int1 = - old.f_int1;
6210
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
6211
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6213
# check trigger-4 success: 1
6215
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6216
f_int2 = CAST(f_char1 AS SIGNED INT),
6217
f_charbig = 'just inserted'
6218
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6220
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6221
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6222
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6223
'just inserted' FROM t0_template
6224
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6225
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
6227
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6228
f_charbig = 'updated by trigger'
6229
WHERE f_int1 = new.f_int1;
6231
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
6232
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6234
# check trigger-5 success: 1
6236
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6237
f_int2 = CAST(f_char1 AS SIGNED INT),
6238
f_charbig = 'just inserted'
6239
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6241
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6242
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6243
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6244
'just inserted' FROM t0_template
6245
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6246
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
6248
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6249
f_charbig = 'updated by trigger'
6250
WHERE f_int1 = - old.f_int1;
6252
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
6253
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6255
# check trigger-6 success: 1
6257
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6258
f_int2 = CAST(f_char1 AS SIGNED INT),
6259
f_charbig = 'just inserted'
6260
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6262
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6263
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6264
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6265
'just inserted' FROM t0_template
6266
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6267
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
6269
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6270
f_charbig = 'updated by trigger'
6271
WHERE f_int1 = - old.f_int1;
6274
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6276
# check trigger-7 success: 1
6278
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6279
f_int2 = CAST(f_char1 AS SIGNED INT),
6280
f_charbig = 'just inserted'
6281
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6283
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6284
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6285
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6286
'just inserted' FROM t0_template
6287
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6288
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
6290
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6291
f_charbig = 'updated by trigger'
6292
WHERE f_int1 = - old.f_int1;
6295
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6297
# check trigger-8 success: 1
6299
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6300
f_int2 = CAST(f_char1 AS SIGNED INT),
6301
f_charbig = 'just inserted'
6302
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6304
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6306
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6307
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
6309
SET new.f_int1 = old.f_int1 + @max_row,
6310
new.f_int2 = old.f_int2 - @max_row,
6311
new.f_charbig = '####updated per update trigger####';
6314
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
6315
f_charbig = '####updated per update statement itself####';
6317
# check trigger-9 success: 1
6319
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6320
f_int2 = CAST(f_char1 AS SIGNED INT),
6321
f_charbig = CONCAT('===',f_char1,'===');
6322
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
6324
SET new.f_int1 = new.f_int1 + @max_row,
6325
new.f_int2 = new.f_int2 - @max_row,
6326
new.f_charbig = '####updated per update trigger####';
6329
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
6330
f_charbig = '####updated per update statement itself####';
6332
# check trigger-10 success: 1
6334
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6335
f_int2 = CAST(f_char1 AS SIGNED INT),
6336
f_charbig = CONCAT('===',f_char1,'===');
6337
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
6339
SET new.f_int1 = @my_max1 + @counter,
6340
new.f_int2 = @my_min2 - @counter,
6341
new.f_charbig = '####updated per insert trigger####';
6342
SET @counter = @counter + 1;
6345
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
6346
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6347
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
6348
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
6349
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
6353
# check trigger-11 success: 1
6355
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
6356
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
6357
AND f_charbig = '####updated per insert trigger####';
6358
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
6360
SET new.f_int1 = @my_max1 + @counter,
6361
new.f_int2 = @my_min2 - @counter,
6362
new.f_charbig = '####updated per insert trigger####';
6363
SET @counter = @counter + 1;
6366
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
6367
INSERT INTO t1 (f_char1, f_char2, f_charbig)
6368
SELECT CAST(f_int1 AS CHAR),
6369
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
6370
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
6374
# check trigger-12 success: 1
6376
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
6377
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
6378
AND f_charbig = '####updated per insert trigger####';
6380
Table Op Msg_type Msg_text
6381
test.t1 analyze note The storage engine for the table doesn't support analyze
6382
CHECK TABLE t1 EXTENDED;
6383
Table Op Msg_type Msg_text
6384
test.t1 check note The storage engine for the table doesn't support check
6385
CHECKSUM TABLE t1 EXTENDED;
6387
test.t1 <some_value>
6389
Table Op Msg_type Msg_text
6390
test.t1 optimize note The storage engine for the table doesn't support optimize
6391
# check layout success: 1
6392
REPAIR TABLE t1 EXTENDED;
6393
Table Op Msg_type Msg_text
6394
test.t1 repair note The storage engine for the table doesn't support repair
6395
# check layout success: 1
6398
# check TRUNCATE success: 1
6399
# check layout success: 1
6400
# End usability test (include/partition_check.inc)
6402
SET SESSION storage_engine='ndbcluster';
6403
DROP VIEW IF EXISTS v1;
6404
DROP TABLE IF EXISTS t1;
6405
DROP TABLE IF EXISTS t0_aux;
6406
DROP TABLE IF EXISTS t0_definition;
6407
DROP TABLE IF EXISTS t0_template;