1SET @max_row = 20;
2SET @@session.default_storage_engine = 'MyISAM';
3
4#------------------------------------------------------------------------
5#  0. Setting of auxiliary variables + Creation of an auxiliary tables
6#     needed in many testcases
7#------------------------------------------------------------------------
8SELECT @max_row DIV 2 INTO @max_row_div2;
9SELECT @max_row DIV 3 INTO @max_row_div3;
10SELECT @max_row DIV 4 INTO @max_row_div4;
11SET @max_int_4 = 2147483647;
12DROP TABLE IF EXISTS t0_template;
13CREATE TABLE t0_template (
14f_int1 INTEGER,
15f_int2 INTEGER,
16f_char1 CHAR(20),
17f_char2 CHAR(20),
18f_charbig VARCHAR(1000) ,
19PRIMARY KEY(f_int1))
20ENGINE = MEMORY;
21#     Logging of <max_row> INSERTs into t0_template suppressed
22DROP TABLE IF EXISTS t0_definition;
23CREATE TABLE t0_definition (
24state CHAR(3),
25create_command VARBINARY(5000),
26file_list      VARBINARY(10000),
27PRIMARY KEY (state)
28) ENGINE = MEMORY;
29DROP TABLE IF EXISTS t0_aux;
30CREATE TABLE t0_aux ( f_int1 INTEGER,
31f_int2 INTEGER,
32f_char1 CHAR(20),
33f_char2 CHAR(20),
34f_charbig VARCHAR(1000) )
35ENGINE = MEMORY;
36SET AUTOCOMMIT= 1;
37SET @@session.sql_mode= '';
38Warnings:
39Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
40# End of basic preparations needed for all tests
41#-----------------------------------------------
42
43#========================================================================
44#  2     Decrease the size of the column used in the partitioning
45#        function and/or PRIMARY KEY and/or UNIQUE INDEX
46#========================================================================
47#------------------------------------------------------------------------
48#  2.1   ALTER column f_int2 not used in partitioning function
49#------------------------------------------------------------------------
50#  2.1.1 no PRIMARY KEY or UNIQUE INDEX exists
51DROP TABLE IF EXISTS t1;
52CREATE TABLE t1 (
53f_int1 INTEGER,
54f_int2 INTEGER,
55f_char1 CHAR(20),
56f_char2 CHAR(20),
57f_charbig VARCHAR(1000)
58
59)
60PARTITION BY HASH(f_int1) PARTITIONS 2;
61Warnings:
62Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
63INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
64SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
65WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
66Warnings:
67Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
68ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
69Warnings:
70Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
71INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
72SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
73WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
74Warnings:
75Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
76# Start usability test (inc/partition_check.inc)
77create_command
78SHOW CREATE TABLE t1;
79Table	Create Table
80t1	CREATE TABLE `t1` (
81  `f_int1` int(11) DEFAULT NULL,
82  `f_int2` mediumint(9) DEFAULT NULL,
83  `f_char1` char(20) DEFAULT NULL,
84  `f_char2` char(20) DEFAULT NULL,
85  `f_charbig` varchar(1000) DEFAULT NULL
86) ENGINE=MyISAM DEFAULT CHARSET=latin1
87/*!50100 PARTITION BY HASH (f_int1)
88PARTITIONS 2 */
89
90unified filelist
91t1#P#p0.MYD
92t1#P#p0.MYI
93t1#P#p1.MYD
94t1#P#p1.MYI
95t1.frm
96t1.par
97
98# check prerequisites-1 success:    1
99# check COUNT(*) success:    1
100# check MIN/MAX(f_int1) success:    1
101# check MIN/MAX(f_int2) success:    1
102INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
103SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
104CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
105WHERE f_int1 IN (2,3);
106# check prerequisites-3 success:    1
107DELETE FROM t1 WHERE f_charbig = 'delete me';
108# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
109# check read via f_int1 success: 1
110# check read via f_int2 success: 1
111
112# check multiple-1 success: 	1
113DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
114
115# check multiple-2 success: 	1
116INSERT INTO t1 SELECT * FROM t0_template
117WHERE MOD(f_int1,3) = 0;
118
119# check multiple-3 success: 	1
120UPDATE t1 SET f_int1 = f_int1 + @max_row
121WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
122AND @max_row_div2 + @max_row_div4;
123
124# check multiple-4 success: 	1
125DELETE FROM t1
126WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
127AND @max_row_div2 + @max_row_div4 + @max_row;
128
129# check multiple-5 success: 	1
130SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
131INSERT INTO t1
132SET f_int1 = @cur_value , f_int2 = @cur_value,
133f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
134f_charbig = '#SINGLE#';
135
136# check single-1 success: 	1
137SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
138INSERT INTO t1
139SET f_int1 = @cur_value , f_int2 = @cur_value,
140f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
141f_charbig = '#SINGLE#';
142
143# check single-2 success: 	1
144SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
145SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
146UPDATE t1 SET f_int1 = @cur_value2
147WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
148
149# check single-3 success: 	1
150SET @cur_value1= -1;
151SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
152UPDATE t1 SET f_int1 = @cur_value1
153WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
154
155# check single-4 success: 	1
156SELECT MAX(f_int1) INTO @cur_value FROM t1;
157DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
158
159# check single-5 success: 	1
160DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
161
162# check single-6 success: 	1
163INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
164Warnings:
165Warning	1264	Out of range value for column 'f_int2' at row 1
166
167# check single-7 success: 	1
168DELETE FROM t1 WHERE f_charbig = '#2147483647##';
169DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
170INSERT t1 SET f_int1 = 0 , f_int2 = 0,
171f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
172f_charbig = '#NULL#';
173INSERT INTO t1
174SET f_int1 = NULL , f_int2 = -@max_row,
175f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
176f_charbig = '#NULL#';
177# check null success:    1
178
179# check null-1 success: 	1
180UPDATE t1 SET f_int1 = -@max_row
181WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
182AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
183
184# check null-2 success: 	1
185UPDATE t1 SET f_int1 = NULL
186WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
187AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
188
189# check null-3 success: 	1
190DELETE FROM t1
191WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
192AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
193
194# check null-4 success: 	1
195DELETE FROM t1
196WHERE f_int1 = 0 AND f_int2 = 0
197AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
198AND f_charbig = '#NULL#';
199SET AUTOCOMMIT= 0;
200INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
201SELECT f_int1, f_int1, '', '', 'was inserted'
202FROM t0_template source_tab
203WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
204
205# check transactions-1 success: 	1
206COMMIT WORK;
207
208# check transactions-2 success: 	1
209ROLLBACK WORK;
210
211# check transactions-3 success: 	1
212DELETE FROM t1 WHERE f_charbig = 'was inserted';
213COMMIT WORK;
214ROLLBACK WORK;
215
216# check transactions-4 success: 	1
217INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
218SELECT f_int1, f_int1, '', '', 'was inserted'
219FROM t0_template source_tab
220WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
221
222# check transactions-5 success: 	1
223ROLLBACK WORK;
224Warnings:
225Warning	1196	Some non-transactional changed tables couldn't be rolled back
226
227# check transactions-6 success: 	1
228# INFO: Storage engine used for t1 seems to be not transactional.
229COMMIT;
230
231# check transactions-7 success: 	1
232DELETE FROM t1 WHERE f_charbig = 'was inserted';
233COMMIT WORK;
234SET @@session.sql_mode = 'traditional';
235Warnings:
236Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
237SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
238INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
239SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
240'', '', 'was inserted' FROM t0_template
241WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
242ERROR 22012: Division by 0
243COMMIT;
244
245# check transactions-8 success: 	1
246# INFO: Storage engine used for t1 seems to be unable to revert
247#       changes made by the failing statement.
248SET @@session.sql_mode = '';
249Warnings:
250Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
251SET AUTOCOMMIT= 1;
252DELETE FROM t1 WHERE f_charbig = 'was inserted';
253COMMIT WORK;
254UPDATE t1 SET f_charbig = REPEAT('b', 1000);
255
256# check special-1 success: 	1
257UPDATE t1 SET f_charbig = '';
258
259# check special-2 success: 	1
260UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
261INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
262SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
263WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
264INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
265SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
266'just inserted' FROM t0_template
267WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
268CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
269BEGIN
270UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
271f_charbig = 'updated by trigger'
272      WHERE f_int1 = new.f_int1;
273END|
274INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
275SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
276WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
277
278# check trigger-1 success: 	1
279DROP TRIGGER trg_1;
280UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
281f_int2 = CAST(f_char1 AS SIGNED INT),
282f_charbig = 'just inserted'
283   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
284DELETE FROM t0_aux
285WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
286INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
287SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
288'just inserted' FROM t0_template
289WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
290CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
291BEGIN
292UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
293f_charbig = 'updated by trigger'
294      WHERE f_int1 = new.f_int1;
295END|
296INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
297SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
298WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
299
300# check trigger-2 success: 	1
301DROP TRIGGER trg_1;
302UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
303f_int2 = CAST(f_char1 AS SIGNED INT),
304f_charbig = 'just inserted'
305   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
306DELETE FROM t0_aux
307WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
308INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
309SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
310'just inserted' FROM t0_template
311WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
312CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
313BEGIN
314UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
315f_charbig = 'updated by trigger'
316      WHERE f_int1 = new.f_int1;
317END|
318UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
319WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
320
321# check trigger-3 success: 	1
322DROP TRIGGER trg_1;
323UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
324f_int2 = CAST(f_char1 AS SIGNED INT),
325f_charbig = 'just inserted'
326   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
327DELETE FROM t0_aux
328WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
329INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
330SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
331'just inserted' FROM t0_template
332WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
333CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
334BEGIN
335UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
336f_charbig = 'updated by trigger'
337      WHERE f_int1 = - old.f_int1;
338END|
339UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
340WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
341
342# check trigger-4 success: 	1
343DROP TRIGGER trg_1;
344UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
345f_int2 = CAST(f_char1 AS SIGNED INT),
346f_charbig = 'just inserted'
347   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
348DELETE FROM t0_aux
349WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
350INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
351SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
352'just inserted' FROM t0_template
353WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
354CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
355BEGIN
356UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
357f_charbig = 'updated by trigger'
358      WHERE f_int1 = new.f_int1;
359END|
360UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
361WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
362
363# check trigger-5 success: 	1
364DROP TRIGGER trg_1;
365UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
366f_int2 = CAST(f_char1 AS SIGNED INT),
367f_charbig = 'just inserted'
368   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
369DELETE FROM t0_aux
370WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
371INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
372SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
373'just inserted' FROM t0_template
374WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
375CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
376BEGIN
377UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
378f_charbig = 'updated by trigger'
379      WHERE f_int1 = - old.f_int1;
380END|
381UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
382WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
383
384# check trigger-6 success: 	1
385DROP TRIGGER trg_1;
386UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
387f_int2 = CAST(f_char1 AS SIGNED INT),
388f_charbig = 'just inserted'
389   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
390DELETE FROM t0_aux
391WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
392INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
393SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
394'just inserted' FROM t0_template
395WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
396CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
397BEGIN
398UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
399f_charbig = 'updated by trigger'
400      WHERE f_int1 = - old.f_int1;
401END|
402DELETE FROM t0_aux
403WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
404
405# check trigger-7 success: 	1
406DROP TRIGGER trg_1;
407UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
408f_int2 = CAST(f_char1 AS SIGNED INT),
409f_charbig = 'just inserted'
410   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
411DELETE FROM t0_aux
412WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
413INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
414SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
415'just inserted' FROM t0_template
416WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
417CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
418BEGIN
419UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
420f_charbig = 'updated by trigger'
421      WHERE f_int1 = - old.f_int1;
422END|
423DELETE FROM t0_aux
424WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
425
426# check trigger-8 success: 	1
427DROP TRIGGER trg_1;
428UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
429f_int2 = CAST(f_char1 AS SIGNED INT),
430f_charbig = 'just inserted'
431   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
432DELETE FROM t0_aux
433WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
434DELETE FROM t1
435WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
436CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
437BEGIN
438SET new.f_int1 = old.f_int1 + @max_row,
439new.f_int2 = old.f_int2 - @max_row,
440new.f_charbig = '####updated per update trigger####';
441END|
442UPDATE t1
443SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
444f_charbig = '####updated per update statement itself####';
445Warnings:
446Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
447
448# check trigger-9 success: 	1
449DROP TRIGGER trg_2;
450UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
451f_int2 = CAST(f_char1 AS SIGNED INT),
452f_charbig = CONCAT('===',f_char1,'===');
453Warnings:
454Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
455CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
456BEGIN
457SET new.f_int1 = new.f_int1 + @max_row,
458new.f_int2 = new.f_int2 - @max_row,
459new.f_charbig = '####updated per update trigger####';
460END|
461UPDATE t1
462SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
463f_charbig = '####updated per update statement itself####';
464Warnings:
465Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
466
467# check trigger-10 success: 	1
468DROP TRIGGER trg_2;
469UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
470f_int2 = CAST(f_char1 AS SIGNED INT),
471f_charbig = CONCAT('===',f_char1,'===');
472Warnings:
473Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
474CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
475BEGIN
476SET new.f_int1 = @my_max1 + @counter,
477new.f_int2 = @my_min2 - @counter,
478new.f_charbig = '####updated per insert trigger####';
479SET @counter = @counter + 1;
480END|
481SET @counter = 1;
482SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
483Warnings:
484Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
485INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
486SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
487CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
488WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
489ORDER BY f_int1;
490DROP TRIGGER trg_3;
491
492# check trigger-11 success: 	1
493Warnings:
494Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
495DELETE FROM t1
496WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
497AND f_int2 <> CAST(f_char1 AS SIGNED INT)
498AND f_charbig = '####updated per insert trigger####';
499CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
500BEGIN
501SET new.f_int1 = @my_max1 + @counter,
502new.f_int2 = @my_min2 - @counter,
503new.f_charbig = '####updated per insert trigger####';
504SET @counter = @counter + 1;
505END|
506SET @counter = 1;
507SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
508Warnings:
509Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
510INSERT INTO t1 (f_char1, f_char2, f_charbig)
511SELECT CAST(f_int1 AS CHAR),
512CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
513WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
514ORDER BY f_int1;
515DROP TRIGGER trg_3;
516
517# check trigger-12 success: 	1
518Warnings:
519Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
520DELETE FROM t1
521WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
522AND f_int2 <> CAST(f_char1 AS SIGNED INT)
523AND f_charbig = '####updated per insert trigger####';
524ANALYZE  TABLE t1;
525Table	Op	Msg_type	Msg_text
526test.t1	analyze	status	OK
527test.t1	analyze	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
528CHECK    TABLE t1 EXTENDED;
529Table	Op	Msg_type	Msg_text
530test.t1	check	status	OK
531test.t1	check	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
532CHECKSUM TABLE t1 EXTENDED;
533Table	Checksum
534test.t1	<some_value>
535OPTIMIZE TABLE t1;
536Table	Op	Msg_type	Msg_text
537test.t1	optimize	status	OK
538test.t1	optimize	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
539# check layout success:    1
540REPAIR   TABLE t1 EXTENDED;
541Table	Op	Msg_type	Msg_text
542test.t1	repair	status	OK
543test.t1	repair	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
544# check layout success:    1
545TRUNCATE t1;
546Warnings:
547Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
548
549# check TRUNCATE success: 	1
550# check layout success:    1
551# End usability test (inc/partition_check.inc)
552DROP TABLE t1;
553CREATE TABLE t1 (
554f_int1 INTEGER,
555f_int2 INTEGER,
556f_char1 CHAR(20),
557f_char2 CHAR(20),
558f_charbig VARCHAR(1000)
559
560)
561PARTITION BY KEY(f_int1) PARTITIONS 5;
562Warnings:
563Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
564INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
565SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
566WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
567Warnings:
568Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
569ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
570Warnings:
571Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
572INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
573SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
574WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
575Warnings:
576Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
577# Start usability test (inc/partition_check.inc)
578create_command
579SHOW CREATE TABLE t1;
580Table	Create Table
581t1	CREATE TABLE `t1` (
582  `f_int1` int(11) DEFAULT NULL,
583  `f_int2` mediumint(9) DEFAULT NULL,
584  `f_char1` char(20) DEFAULT NULL,
585  `f_char2` char(20) DEFAULT NULL,
586  `f_charbig` varchar(1000) DEFAULT NULL
587) ENGINE=MyISAM DEFAULT CHARSET=latin1
588/*!50100 PARTITION BY KEY (f_int1)
589PARTITIONS 5 */
590
591unified filelist
592t1#P#p0.MYD
593t1#P#p0.MYI
594t1#P#p1.MYD
595t1#P#p1.MYI
596t1#P#p2.MYD
597t1#P#p2.MYI
598t1#P#p3.MYD
599t1#P#p3.MYI
600t1#P#p4.MYD
601t1#P#p4.MYI
602t1.frm
603t1.par
604
605# check prerequisites-1 success:    1
606# check COUNT(*) success:    1
607# check MIN/MAX(f_int1) success:    1
608# check MIN/MAX(f_int2) success:    1
609INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
610SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
611CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
612WHERE f_int1 IN (2,3);
613# check prerequisites-3 success:    1
614DELETE FROM t1 WHERE f_charbig = 'delete me';
615# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
616# check read via f_int1 success: 1
617# check read via f_int2 success: 1
618
619# check multiple-1 success: 	1
620DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
621
622# check multiple-2 success: 	1
623INSERT INTO t1 SELECT * FROM t0_template
624WHERE MOD(f_int1,3) = 0;
625
626# check multiple-3 success: 	1
627UPDATE t1 SET f_int1 = f_int1 + @max_row
628WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
629AND @max_row_div2 + @max_row_div4;
630
631# check multiple-4 success: 	1
632DELETE FROM t1
633WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
634AND @max_row_div2 + @max_row_div4 + @max_row;
635
636# check multiple-5 success: 	1
637SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
638INSERT INTO t1
639SET f_int1 = @cur_value , f_int2 = @cur_value,
640f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
641f_charbig = '#SINGLE#';
642
643# check single-1 success: 	1
644SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
645INSERT INTO t1
646SET f_int1 = @cur_value , f_int2 = @cur_value,
647f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
648f_charbig = '#SINGLE#';
649
650# check single-2 success: 	1
651SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
652SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
653UPDATE t1 SET f_int1 = @cur_value2
654WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
655
656# check single-3 success: 	1
657SET @cur_value1= -1;
658SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
659UPDATE t1 SET f_int1 = @cur_value1
660WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
661
662# check single-4 success: 	1
663SELECT MAX(f_int1) INTO @cur_value FROM t1;
664DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
665
666# check single-5 success: 	1
667DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
668
669# check single-6 success: 	1
670INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
671Warnings:
672Warning	1264	Out of range value for column 'f_int2' at row 1
673
674# check single-7 success: 	1
675DELETE FROM t1 WHERE f_charbig = '#2147483647##';
676DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
677INSERT t1 SET f_int1 = 0 , f_int2 = 0,
678f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
679f_charbig = '#NULL#';
680INSERT INTO t1
681SET f_int1 = NULL , f_int2 = -@max_row,
682f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
683f_charbig = '#NULL#';
684# check null success:    1
685
686# check null-1 success: 	1
687UPDATE t1 SET f_int1 = -@max_row
688WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
689AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
690
691# check null-2 success: 	1
692UPDATE t1 SET f_int1 = NULL
693WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
694AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
695
696# check null-3 success: 	1
697DELETE FROM t1
698WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
699AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
700
701# check null-4 success: 	1
702DELETE FROM t1
703WHERE f_int1 = 0 AND f_int2 = 0
704AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
705AND f_charbig = '#NULL#';
706SET AUTOCOMMIT= 0;
707INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
708SELECT f_int1, f_int1, '', '', 'was inserted'
709FROM t0_template source_tab
710WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
711
712# check transactions-1 success: 	1
713COMMIT WORK;
714
715# check transactions-2 success: 	1
716ROLLBACK WORK;
717
718# check transactions-3 success: 	1
719DELETE FROM t1 WHERE f_charbig = 'was inserted';
720COMMIT WORK;
721ROLLBACK WORK;
722
723# check transactions-4 success: 	1
724INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
725SELECT f_int1, f_int1, '', '', 'was inserted'
726FROM t0_template source_tab
727WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
728
729# check transactions-5 success: 	1
730ROLLBACK WORK;
731Warnings:
732Warning	1196	Some non-transactional changed tables couldn't be rolled back
733
734# check transactions-6 success: 	1
735# INFO: Storage engine used for t1 seems to be not transactional.
736COMMIT;
737
738# check transactions-7 success: 	1
739DELETE FROM t1 WHERE f_charbig = 'was inserted';
740COMMIT WORK;
741SET @@session.sql_mode = 'traditional';
742Warnings:
743Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
744SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
745INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
746SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
747'', '', 'was inserted' FROM t0_template
748WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
749ERROR 22012: Division by 0
750COMMIT;
751
752# check transactions-8 success: 	1
753# INFO: Storage engine used for t1 seems to be unable to revert
754#       changes made by the failing statement.
755SET @@session.sql_mode = '';
756Warnings:
757Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
758SET AUTOCOMMIT= 1;
759DELETE FROM t1 WHERE f_charbig = 'was inserted';
760COMMIT WORK;
761UPDATE t1 SET f_charbig = REPEAT('b', 1000);
762
763# check special-1 success: 	1
764UPDATE t1 SET f_charbig = '';
765
766# check special-2 success: 	1
767UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
768INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
769SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
770WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
771INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
772SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
773'just inserted' FROM t0_template
774WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
775CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
776BEGIN
777UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
778f_charbig = 'updated by trigger'
779      WHERE f_int1 = new.f_int1;
780END|
781INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
782SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
783WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
784
785# check trigger-1 success: 	1
786DROP TRIGGER trg_1;
787UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
788f_int2 = CAST(f_char1 AS SIGNED INT),
789f_charbig = 'just inserted'
790   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
791DELETE FROM t0_aux
792WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
793INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
794SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
795'just inserted' FROM t0_template
796WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
797CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
798BEGIN
799UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
800f_charbig = 'updated by trigger'
801      WHERE f_int1 = new.f_int1;
802END|
803INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
804SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
805WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
806
807# check trigger-2 success: 	1
808DROP TRIGGER trg_1;
809UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
810f_int2 = CAST(f_char1 AS SIGNED INT),
811f_charbig = 'just inserted'
812   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
813DELETE FROM t0_aux
814WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
815INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
816SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
817'just inserted' FROM t0_template
818WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
819CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
820BEGIN
821UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
822f_charbig = 'updated by trigger'
823      WHERE f_int1 = new.f_int1;
824END|
825UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
826WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
827
828# check trigger-3 success: 	1
829DROP TRIGGER trg_1;
830UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
831f_int2 = CAST(f_char1 AS SIGNED INT),
832f_charbig = 'just inserted'
833   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
834DELETE FROM t0_aux
835WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
836INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
837SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
838'just inserted' FROM t0_template
839WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
840CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
841BEGIN
842UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
843f_charbig = 'updated by trigger'
844      WHERE f_int1 = - old.f_int1;
845END|
846UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
847WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
848
849# check trigger-4 success: 	1
850DROP TRIGGER trg_1;
851UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
852f_int2 = CAST(f_char1 AS SIGNED INT),
853f_charbig = 'just inserted'
854   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
855DELETE FROM t0_aux
856WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
857INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
858SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
859'just inserted' FROM t0_template
860WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
861CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
862BEGIN
863UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
864f_charbig = 'updated by trigger'
865      WHERE f_int1 = new.f_int1;
866END|
867UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
868WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
869
870# check trigger-5 success: 	1
871DROP TRIGGER trg_1;
872UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
873f_int2 = CAST(f_char1 AS SIGNED INT),
874f_charbig = 'just inserted'
875   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
876DELETE FROM t0_aux
877WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
878INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
879SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
880'just inserted' FROM t0_template
881WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
882CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
883BEGIN
884UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
885f_charbig = 'updated by trigger'
886      WHERE f_int1 = - old.f_int1;
887END|
888UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
889WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
890
891# check trigger-6 success: 	1
892DROP TRIGGER trg_1;
893UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
894f_int2 = CAST(f_char1 AS SIGNED INT),
895f_charbig = 'just inserted'
896   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
897DELETE FROM t0_aux
898WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
899INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
900SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
901'just inserted' FROM t0_template
902WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
903CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
904BEGIN
905UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
906f_charbig = 'updated by trigger'
907      WHERE f_int1 = - old.f_int1;
908END|
909DELETE FROM t0_aux
910WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
911
912# check trigger-7 success: 	1
913DROP TRIGGER trg_1;
914UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
915f_int2 = CAST(f_char1 AS SIGNED INT),
916f_charbig = 'just inserted'
917   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
918DELETE FROM t0_aux
919WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
920INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
921SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
922'just inserted' FROM t0_template
923WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
924CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
925BEGIN
926UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
927f_charbig = 'updated by trigger'
928      WHERE f_int1 = - old.f_int1;
929END|
930DELETE FROM t0_aux
931WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
932
933# check trigger-8 success: 	1
934DROP TRIGGER trg_1;
935UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
936f_int2 = CAST(f_char1 AS SIGNED INT),
937f_charbig = 'just inserted'
938   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
939DELETE FROM t0_aux
940WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
941DELETE FROM t1
942WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
943CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
944BEGIN
945SET new.f_int1 = old.f_int1 + @max_row,
946new.f_int2 = old.f_int2 - @max_row,
947new.f_charbig = '####updated per update trigger####';
948END|
949UPDATE t1
950SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
951f_charbig = '####updated per update statement itself####';
952Warnings:
953Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
954
955# check trigger-9 success: 	1
956DROP TRIGGER trg_2;
957UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
958f_int2 = CAST(f_char1 AS SIGNED INT),
959f_charbig = CONCAT('===',f_char1,'===');
960Warnings:
961Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
962CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
963BEGIN
964SET new.f_int1 = new.f_int1 + @max_row,
965new.f_int2 = new.f_int2 - @max_row,
966new.f_charbig = '####updated per update trigger####';
967END|
968UPDATE t1
969SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
970f_charbig = '####updated per update statement itself####';
971Warnings:
972Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
973
974# check trigger-10 success: 	1
975DROP TRIGGER trg_2;
976UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
977f_int2 = CAST(f_char1 AS SIGNED INT),
978f_charbig = CONCAT('===',f_char1,'===');
979Warnings:
980Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
981CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
982BEGIN
983SET new.f_int1 = @my_max1 + @counter,
984new.f_int2 = @my_min2 - @counter,
985new.f_charbig = '####updated per insert trigger####';
986SET @counter = @counter + 1;
987END|
988SET @counter = 1;
989SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
990Warnings:
991Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
992INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
993SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
994CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
995WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
996ORDER BY f_int1;
997DROP TRIGGER trg_3;
998
999# check trigger-11 success: 	1
1000Warnings:
1001Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
1002DELETE FROM t1
1003WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
1004AND f_int2 <> CAST(f_char1 AS SIGNED INT)
1005AND f_charbig = '####updated per insert trigger####';
1006CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
1007BEGIN
1008SET new.f_int1 = @my_max1 + @counter,
1009new.f_int2 = @my_min2 - @counter,
1010new.f_charbig = '####updated per insert trigger####';
1011SET @counter = @counter + 1;
1012END|
1013SET @counter = 1;
1014SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
1015Warnings:
1016Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
1017INSERT INTO t1 (f_char1, f_char2, f_charbig)
1018SELECT CAST(f_int1 AS CHAR),
1019CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
1020WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
1021ORDER BY f_int1;
1022DROP TRIGGER trg_3;
1023
1024# check trigger-12 success: 	1
1025Warnings:
1026Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
1027DELETE FROM t1
1028WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
1029AND f_int2 <> CAST(f_char1 AS SIGNED INT)
1030AND f_charbig = '####updated per insert trigger####';
1031ANALYZE  TABLE t1;
1032Table	Op	Msg_type	Msg_text
1033test.t1	analyze	status	OK
1034test.t1	analyze	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
1035CHECK    TABLE t1 EXTENDED;
1036Table	Op	Msg_type	Msg_text
1037test.t1	check	status	OK
1038test.t1	check	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
1039CHECKSUM TABLE t1 EXTENDED;
1040Table	Checksum
1041test.t1	<some_value>
1042OPTIMIZE TABLE t1;
1043Table	Op	Msg_type	Msg_text
1044test.t1	optimize	status	OK
1045test.t1	optimize	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
1046# check layout success:    1
1047REPAIR   TABLE t1 EXTENDED;
1048Table	Op	Msg_type	Msg_text
1049test.t1	repair	status	OK
1050test.t1	repair	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
1051# check layout success:    1
1052TRUNCATE t1;
1053Warnings:
1054Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
1055
1056# check TRUNCATE success: 	1
1057# check layout success:    1
1058# End usability test (inc/partition_check.inc)
1059DROP TABLE t1;
1060CREATE TABLE t1 (
1061f_int1 INTEGER,
1062f_int2 INTEGER,
1063f_char1 CHAR(20),
1064f_char2 CHAR(20),
1065f_charbig VARCHAR(1000)
1066
1067)
1068PARTITION BY LIST(MOD(f_int1,4))
1069(PARTITION part_3 VALUES IN (-3),
1070PARTITION part_2 VALUES IN (-2),
1071PARTITION part_1 VALUES IN (-1),
1072PARTITION part_N VALUES IN (NULL),
1073PARTITION part0 VALUES IN (0),
1074PARTITION part1 VALUES IN (1),
1075PARTITION part2 VALUES IN (2),
1076PARTITION part3 VALUES IN (3));
1077Warnings:
1078Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
1079INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
1080SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
1081WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
1082Warnings:
1083Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
1084ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
1085Warnings:
1086Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
1087INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
1088SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
1089WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
1090Warnings:
1091Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
1092# Start usability test (inc/partition_check.inc)
1093create_command
1094SHOW CREATE TABLE t1;
1095Table	Create Table
1096t1	CREATE TABLE `t1` (
1097  `f_int1` int(11) DEFAULT NULL,
1098  `f_int2` mediumint(9) DEFAULT NULL,
1099  `f_char1` char(20) DEFAULT NULL,
1100  `f_char2` char(20) DEFAULT NULL,
1101  `f_charbig` varchar(1000) DEFAULT NULL
1102) ENGINE=MyISAM DEFAULT CHARSET=latin1
1103/*!50100 PARTITION BY LIST (MOD(f_int1,4))
1104(PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM,
1105 PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM,
1106 PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM,
1107 PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM,
1108 PARTITION part0 VALUES IN (0) ENGINE = MyISAM,
1109 PARTITION part1 VALUES IN (1) ENGINE = MyISAM,
1110 PARTITION part2 VALUES IN (2) ENGINE = MyISAM,
1111 PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */
1112
1113unified filelist
1114t1#P#part0.MYD
1115t1#P#part0.MYI
1116t1#P#part1.MYD
1117t1#P#part1.MYI
1118t1#P#part2.MYD
1119t1#P#part2.MYI
1120t1#P#part3.MYD
1121t1#P#part3.MYI
1122t1#P#part_1.MYD
1123t1#P#part_1.MYI
1124t1#P#part_2.MYD
1125t1#P#part_2.MYI
1126t1#P#part_3.MYD
1127t1#P#part_3.MYI
1128t1#P#part_N.MYD
1129t1#P#part_N.MYI
1130t1.frm
1131t1.par
1132
1133# check prerequisites-1 success:    1
1134# check COUNT(*) success:    1
1135# check MIN/MAX(f_int1) success:    1
1136# check MIN/MAX(f_int2) success:    1
1137INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1138SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
1139CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
1140WHERE f_int1 IN (2,3);
1141# check prerequisites-3 success:    1
1142DELETE FROM t1 WHERE f_charbig = 'delete me';
1143# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
1144# check read via f_int1 success: 1
1145# check read via f_int2 success: 1
1146
1147# check multiple-1 success: 	1
1148DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
1149
1150# check multiple-2 success: 	1
1151INSERT INTO t1 SELECT * FROM t0_template
1152WHERE MOD(f_int1,3) = 0;
1153
1154# check multiple-3 success: 	1
1155UPDATE t1 SET f_int1 = f_int1 + @max_row
1156WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
1157AND @max_row_div2 + @max_row_div4;
1158
1159# check multiple-4 success: 	1
1160DELETE FROM t1
1161WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
1162AND @max_row_div2 + @max_row_div4 + @max_row;
1163
1164# check multiple-5 success: 	1
1165SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
1166INSERT INTO t1
1167SET f_int1 = @cur_value , f_int2 = @cur_value,
1168f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
1169f_charbig = '#SINGLE#';
1170
1171# check single-1 success: 	1
1172SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
1173INSERT INTO t1
1174SET f_int1 = @cur_value , f_int2 = @cur_value,
1175f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
1176f_charbig = '#SINGLE#';
1177
1178# check single-2 success: 	1
1179SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
1180SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
1181UPDATE t1 SET f_int1 = @cur_value2
1182WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
1183
1184# check single-3 success: 	1
1185SET @cur_value1= -1;
1186SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
1187UPDATE t1 SET f_int1 = @cur_value1
1188WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
1189
1190# check single-4 success: 	1
1191SELECT MAX(f_int1) INTO @cur_value FROM t1;
1192DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
1193
1194# check single-5 success: 	1
1195DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
1196
1197# check single-6 success: 	1
1198INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
1199Warnings:
1200Warning	1264	Out of range value for column 'f_int2' at row 1
1201
1202# check single-7 success: 	1
1203DELETE FROM t1 WHERE f_charbig = '#2147483647##';
1204DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
1205INSERT t1 SET f_int1 = 0 , f_int2 = 0,
1206f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
1207f_charbig = '#NULL#';
1208INSERT INTO t1
1209SET f_int1 = NULL , f_int2 = -@max_row,
1210f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
1211f_charbig = '#NULL#';
1212# check null success:    1
1213
1214# check null-1 success: 	1
1215UPDATE t1 SET f_int1 = -@max_row
1216WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
1217AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
1218
1219# check null-2 success: 	1
1220UPDATE t1 SET f_int1 = NULL
1221WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
1222AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
1223
1224# check null-3 success: 	1
1225DELETE FROM t1
1226WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
1227AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
1228
1229# check null-4 success: 	1
1230DELETE FROM t1
1231WHERE f_int1 = 0 AND f_int2 = 0
1232AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
1233AND f_charbig = '#NULL#';
1234SET AUTOCOMMIT= 0;
1235INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1236SELECT f_int1, f_int1, '', '', 'was inserted'
1237FROM t0_template source_tab
1238WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
1239
1240# check transactions-1 success: 	1
1241COMMIT WORK;
1242
1243# check transactions-2 success: 	1
1244ROLLBACK WORK;
1245
1246# check transactions-3 success: 	1
1247DELETE FROM t1 WHERE f_charbig = 'was inserted';
1248COMMIT WORK;
1249ROLLBACK WORK;
1250
1251# check transactions-4 success: 	1
1252INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1253SELECT f_int1, f_int1, '', '', 'was inserted'
1254FROM t0_template source_tab
1255WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
1256
1257# check transactions-5 success: 	1
1258ROLLBACK WORK;
1259Warnings:
1260Warning	1196	Some non-transactional changed tables couldn't be rolled back
1261
1262# check transactions-6 success: 	1
1263# INFO: Storage engine used for t1 seems to be not transactional.
1264COMMIT;
1265
1266# check transactions-7 success: 	1
1267DELETE FROM t1 WHERE f_charbig = 'was inserted';
1268COMMIT WORK;
1269SET @@session.sql_mode = 'traditional';
1270Warnings:
1271Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
1272SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
1273INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1274SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
1275'', '', 'was inserted' FROM t0_template
1276WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
1277ERROR 22012: Division by 0
1278COMMIT;
1279
1280# check transactions-8 success: 	1
1281# INFO: Storage engine used for t1 seems to be unable to revert
1282#       changes made by the failing statement.
1283SET @@session.sql_mode = '';
1284Warnings:
1285Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
1286SET AUTOCOMMIT= 1;
1287DELETE FROM t1 WHERE f_charbig = 'was inserted';
1288COMMIT WORK;
1289UPDATE t1 SET f_charbig = REPEAT('b', 1000);
1290
1291# check special-1 success: 	1
1292UPDATE t1 SET f_charbig = '';
1293
1294# check special-2 success: 	1
1295UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
1296INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
1297SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
1298WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1299INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1300SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1301'just inserted' FROM t0_template
1302WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1303CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
1304BEGIN
1305UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1306f_charbig = 'updated by trigger'
1307      WHERE f_int1 = new.f_int1;
1308END|
1309INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1310SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
1311WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1312
1313# check trigger-1 success: 	1
1314DROP TRIGGER trg_1;
1315UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1316f_int2 = CAST(f_char1 AS SIGNED INT),
1317f_charbig = 'just inserted'
1318   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1319DELETE FROM t0_aux
1320WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1321INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1322SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1323'just inserted' FROM t0_template
1324WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1325CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
1326BEGIN
1327UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1328f_charbig = 'updated by trigger'
1329      WHERE f_int1 = new.f_int1;
1330END|
1331INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1332SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
1333WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1334
1335# check trigger-2 success: 	1
1336DROP TRIGGER trg_1;
1337UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1338f_int2 = CAST(f_char1 AS SIGNED INT),
1339f_charbig = 'just inserted'
1340   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1341DELETE FROM t0_aux
1342WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1343INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1344SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1345'just inserted' FROM t0_template
1346WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1347CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
1348BEGIN
1349UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1350f_charbig = 'updated by trigger'
1351      WHERE f_int1 = new.f_int1;
1352END|
1353UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
1354WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1355
1356# check trigger-3 success: 	1
1357DROP TRIGGER trg_1;
1358UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1359f_int2 = CAST(f_char1 AS SIGNED INT),
1360f_charbig = 'just inserted'
1361   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1362DELETE FROM t0_aux
1363WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1364INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1365SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1366'just inserted' FROM t0_template
1367WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1368CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
1369BEGIN
1370UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1371f_charbig = 'updated by trigger'
1372      WHERE f_int1 = - old.f_int1;
1373END|
1374UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
1375WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1376
1377# check trigger-4 success: 	1
1378DROP TRIGGER trg_1;
1379UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1380f_int2 = CAST(f_char1 AS SIGNED INT),
1381f_charbig = 'just inserted'
1382   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1383DELETE FROM t0_aux
1384WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1385INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1386SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1387'just inserted' FROM t0_template
1388WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1389CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
1390BEGIN
1391UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1392f_charbig = 'updated by trigger'
1393      WHERE f_int1 = new.f_int1;
1394END|
1395UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
1396WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1397
1398# check trigger-5 success: 	1
1399DROP TRIGGER trg_1;
1400UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1401f_int2 = CAST(f_char1 AS SIGNED INT),
1402f_charbig = 'just inserted'
1403   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1404DELETE FROM t0_aux
1405WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1406INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1407SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1408'just inserted' FROM t0_template
1409WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1410CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
1411BEGIN
1412UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1413f_charbig = 'updated by trigger'
1414      WHERE f_int1 = - old.f_int1;
1415END|
1416UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
1417WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1418
1419# check trigger-6 success: 	1
1420DROP TRIGGER trg_1;
1421UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1422f_int2 = CAST(f_char1 AS SIGNED INT),
1423f_charbig = 'just inserted'
1424   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1425DELETE FROM t0_aux
1426WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1427INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1428SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1429'just inserted' FROM t0_template
1430WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1431CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
1432BEGIN
1433UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1434f_charbig = 'updated by trigger'
1435      WHERE f_int1 = - old.f_int1;
1436END|
1437DELETE FROM t0_aux
1438WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1439
1440# check trigger-7 success: 	1
1441DROP TRIGGER trg_1;
1442UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1443f_int2 = CAST(f_char1 AS SIGNED INT),
1444f_charbig = 'just inserted'
1445   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1446DELETE FROM t0_aux
1447WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1448INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1449SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1450'just inserted' FROM t0_template
1451WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1452CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
1453BEGIN
1454UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1455f_charbig = 'updated by trigger'
1456      WHERE f_int1 = - old.f_int1;
1457END|
1458DELETE FROM t0_aux
1459WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1460
1461# check trigger-8 success: 	1
1462DROP TRIGGER trg_1;
1463UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1464f_int2 = CAST(f_char1 AS SIGNED INT),
1465f_charbig = 'just inserted'
1466   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1467DELETE FROM t0_aux
1468WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1469DELETE FROM t1
1470WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1471CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
1472BEGIN
1473SET new.f_int1 = old.f_int1 + @max_row,
1474new.f_int2 = old.f_int2 - @max_row,
1475new.f_charbig = '####updated per update trigger####';
1476END|
1477UPDATE t1
1478SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
1479f_charbig = '####updated per update statement itself####';
1480Warnings:
1481Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
1482
1483# check trigger-9 success: 	1
1484DROP TRIGGER trg_2;
1485UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1486f_int2 = CAST(f_char1 AS SIGNED INT),
1487f_charbig = CONCAT('===',f_char1,'===');
1488Warnings:
1489Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
1490CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
1491BEGIN
1492SET new.f_int1 = new.f_int1 + @max_row,
1493new.f_int2 = new.f_int2 - @max_row,
1494new.f_charbig = '####updated per update trigger####';
1495END|
1496UPDATE t1
1497SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
1498f_charbig = '####updated per update statement itself####';
1499Warnings:
1500Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
1501
1502# check trigger-10 success: 	1
1503DROP TRIGGER trg_2;
1504UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1505f_int2 = CAST(f_char1 AS SIGNED INT),
1506f_charbig = CONCAT('===',f_char1,'===');
1507Warnings:
1508Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
1509CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
1510BEGIN
1511SET new.f_int1 = @my_max1 + @counter,
1512new.f_int2 = @my_min2 - @counter,
1513new.f_charbig = '####updated per insert trigger####';
1514SET @counter = @counter + 1;
1515END|
1516SET @counter = 1;
1517SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
1518Warnings:
1519Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
1520INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1521SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
1522CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
1523WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
1524ORDER BY f_int1;
1525DROP TRIGGER trg_3;
1526
1527# check trigger-11 success: 	1
1528Warnings:
1529Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
1530DELETE FROM t1
1531WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
1532AND f_int2 <> CAST(f_char1 AS SIGNED INT)
1533AND f_charbig = '####updated per insert trigger####';
1534CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
1535BEGIN
1536SET new.f_int1 = @my_max1 + @counter,
1537new.f_int2 = @my_min2 - @counter,
1538new.f_charbig = '####updated per insert trigger####';
1539SET @counter = @counter + 1;
1540END|
1541SET @counter = 1;
1542SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
1543Warnings:
1544Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
1545INSERT INTO t1 (f_char1, f_char2, f_charbig)
1546SELECT CAST(f_int1 AS CHAR),
1547CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
1548WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
1549ORDER BY f_int1;
1550DROP TRIGGER trg_3;
1551
1552# check trigger-12 success: 	1
1553Warnings:
1554Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
1555DELETE FROM t1
1556WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
1557AND f_int2 <> CAST(f_char1 AS SIGNED INT)
1558AND f_charbig = '####updated per insert trigger####';
1559ANALYZE  TABLE t1;
1560Table	Op	Msg_type	Msg_text
1561test.t1	analyze	status	OK
1562test.t1	analyze	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
1563CHECK    TABLE t1 EXTENDED;
1564Table	Op	Msg_type	Msg_text
1565test.t1	check	status	OK
1566test.t1	check	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
1567CHECKSUM TABLE t1 EXTENDED;
1568Table	Checksum
1569test.t1	<some_value>
1570OPTIMIZE TABLE t1;
1571Table	Op	Msg_type	Msg_text
1572test.t1	optimize	status	OK
1573test.t1	optimize	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
1574# check layout success:    1
1575REPAIR   TABLE t1 EXTENDED;
1576Table	Op	Msg_type	Msg_text
1577test.t1	repair	status	OK
1578test.t1	repair	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
1579# check layout success:    1
1580TRUNCATE t1;
1581Warnings:
1582Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
1583
1584# check TRUNCATE success: 	1
1585# check layout success:    1
1586# End usability test (inc/partition_check.inc)
1587DROP TABLE t1;
1588CREATE TABLE t1 (
1589f_int1 INTEGER,
1590f_int2 INTEGER,
1591f_char1 CHAR(20),
1592f_char2 CHAR(20),
1593f_charbig VARCHAR(1000)
1594
1595)
1596PARTITION BY RANGE(f_int1)
1597(PARTITION parta VALUES LESS THAN (0),
1598PARTITION partb VALUES LESS THAN (5),
1599PARTITION partc VALUES LESS THAN (10),
1600PARTITION partd VALUES LESS THAN (10 + 5),
1601PARTITION parte VALUES LESS THAN (20),
1602PARTITION partf VALUES LESS THAN (2147483646));
1603Warnings:
1604Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
1605INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
1606SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
1607WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
1608Warnings:
1609Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
1610ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
1611Warnings:
1612Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
1613INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
1614SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
1615WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
1616Warnings:
1617Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
1618# Start usability test (inc/partition_check.inc)
1619create_command
1620SHOW CREATE TABLE t1;
1621Table	Create Table
1622t1	CREATE TABLE `t1` (
1623  `f_int1` int(11) DEFAULT NULL,
1624  `f_int2` mediumint(9) DEFAULT NULL,
1625  `f_char1` char(20) DEFAULT NULL,
1626  `f_char2` char(20) DEFAULT NULL,
1627  `f_charbig` varchar(1000) DEFAULT NULL
1628) ENGINE=MyISAM DEFAULT CHARSET=latin1
1629/*!50100 PARTITION BY RANGE (f_int1)
1630(PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM,
1631 PARTITION partb VALUES LESS THAN (5) ENGINE = MyISAM,
1632 PARTITION partc VALUES LESS THAN (10) ENGINE = MyISAM,
1633 PARTITION partd VALUES LESS THAN (15) ENGINE = MyISAM,
1634 PARTITION parte VALUES LESS THAN (20) ENGINE = MyISAM,
1635 PARTITION partf VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
1636
1637unified filelist
1638t1#P#parta.MYD
1639t1#P#parta.MYI
1640t1#P#partb.MYD
1641t1#P#partb.MYI
1642t1#P#partc.MYD
1643t1#P#partc.MYI
1644t1#P#partd.MYD
1645t1#P#partd.MYI
1646t1#P#parte.MYD
1647t1#P#parte.MYI
1648t1#P#partf.MYD
1649t1#P#partf.MYI
1650t1.frm
1651t1.par
1652
1653# check prerequisites-1 success:    1
1654# check COUNT(*) success:    1
1655# check MIN/MAX(f_int1) success:    1
1656# check MIN/MAX(f_int2) success:    1
1657INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1658SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
1659CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
1660WHERE f_int1 IN (2,3);
1661# check prerequisites-3 success:    1
1662DELETE FROM t1 WHERE f_charbig = 'delete me';
1663# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
1664# check read via f_int1 success: 1
1665# check read via f_int2 success: 1
1666
1667# check multiple-1 success: 	1
1668DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
1669
1670# check multiple-2 success: 	1
1671INSERT INTO t1 SELECT * FROM t0_template
1672WHERE MOD(f_int1,3) = 0;
1673
1674# check multiple-3 success: 	1
1675UPDATE t1 SET f_int1 = f_int1 + @max_row
1676WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
1677AND @max_row_div2 + @max_row_div4;
1678
1679# check multiple-4 success: 	1
1680DELETE FROM t1
1681WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
1682AND @max_row_div2 + @max_row_div4 + @max_row;
1683
1684# check multiple-5 success: 	1
1685SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
1686INSERT INTO t1
1687SET f_int1 = @cur_value , f_int2 = @cur_value,
1688f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
1689f_charbig = '#SINGLE#';
1690
1691# check single-1 success: 	1
1692SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
1693INSERT INTO t1
1694SET f_int1 = @cur_value , f_int2 = @cur_value,
1695f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
1696f_charbig = '#SINGLE#';
1697
1698# check single-2 success: 	1
1699SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
1700SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
1701UPDATE t1 SET f_int1 = @cur_value2
1702WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
1703
1704# check single-3 success: 	1
1705SET @cur_value1= -1;
1706SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
1707UPDATE t1 SET f_int1 = @cur_value1
1708WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
1709
1710# check single-4 success: 	1
1711SELECT MAX(f_int1) INTO @cur_value FROM t1;
1712DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
1713
1714# check single-5 success: 	1
1715DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
1716
1717# check single-6 success: 	1
1718INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
1719ERROR HY000: Table has no partition for value 2147483647
1720DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
1721INSERT t1 SET f_int1 = 0 , f_int2 = 0,
1722f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
1723f_charbig = '#NULL#';
1724INSERT INTO t1
1725SET f_int1 = NULL , f_int2 = -@max_row,
1726f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
1727f_charbig = '#NULL#';
1728# check null success:    1
1729
1730# check null-1 success: 	1
1731UPDATE t1 SET f_int1 = -@max_row
1732WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
1733AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
1734
1735# check null-2 success: 	1
1736UPDATE t1 SET f_int1 = NULL
1737WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
1738AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
1739
1740# check null-3 success: 	1
1741DELETE FROM t1
1742WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
1743AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
1744
1745# check null-4 success: 	1
1746DELETE FROM t1
1747WHERE f_int1 = 0 AND f_int2 = 0
1748AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
1749AND f_charbig = '#NULL#';
1750SET AUTOCOMMIT= 0;
1751INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1752SELECT f_int1, f_int1, '', '', 'was inserted'
1753FROM t0_template source_tab
1754WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
1755
1756# check transactions-1 success: 	1
1757COMMIT WORK;
1758
1759# check transactions-2 success: 	1
1760ROLLBACK WORK;
1761
1762# check transactions-3 success: 	1
1763DELETE FROM t1 WHERE f_charbig = 'was inserted';
1764COMMIT WORK;
1765ROLLBACK WORK;
1766
1767# check transactions-4 success: 	1
1768INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1769SELECT f_int1, f_int1, '', '', 'was inserted'
1770FROM t0_template source_tab
1771WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
1772
1773# check transactions-5 success: 	1
1774ROLLBACK WORK;
1775Warnings:
1776Warning	1196	Some non-transactional changed tables couldn't be rolled back
1777
1778# check transactions-6 success: 	1
1779# INFO: Storage engine used for t1 seems to be not transactional.
1780COMMIT;
1781
1782# check transactions-7 success: 	1
1783DELETE FROM t1 WHERE f_charbig = 'was inserted';
1784COMMIT WORK;
1785SET @@session.sql_mode = 'traditional';
1786Warnings:
1787Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
1788SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
1789INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1790SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
1791'', '', 'was inserted' FROM t0_template
1792WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
1793ERROR 22012: Division by 0
1794COMMIT;
1795
1796# check transactions-8 success: 	1
1797# INFO: Storage engine used for t1 seems to be unable to revert
1798#       changes made by the failing statement.
1799SET @@session.sql_mode = '';
1800Warnings:
1801Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
1802SET AUTOCOMMIT= 1;
1803DELETE FROM t1 WHERE f_charbig = 'was inserted';
1804COMMIT WORK;
1805UPDATE t1 SET f_charbig = REPEAT('b', 1000);
1806
1807# check special-1 success: 	1
1808UPDATE t1 SET f_charbig = '';
1809
1810# check special-2 success: 	1
1811UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
1812INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
1813SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
1814WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1815INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1816SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1817'just inserted' FROM t0_template
1818WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1819CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
1820BEGIN
1821UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1822f_charbig = 'updated by trigger'
1823      WHERE f_int1 = new.f_int1;
1824END|
1825INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1826SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
1827WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1828
1829# check trigger-1 success: 	1
1830DROP TRIGGER trg_1;
1831UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1832f_int2 = CAST(f_char1 AS SIGNED INT),
1833f_charbig = 'just inserted'
1834   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1835DELETE FROM t0_aux
1836WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1837INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1838SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1839'just inserted' FROM t0_template
1840WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1841CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
1842BEGIN
1843UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1844f_charbig = 'updated by trigger'
1845      WHERE f_int1 = new.f_int1;
1846END|
1847INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1848SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
1849WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1850
1851# check trigger-2 success: 	1
1852DROP TRIGGER trg_1;
1853UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1854f_int2 = CAST(f_char1 AS SIGNED INT),
1855f_charbig = 'just inserted'
1856   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1857DELETE FROM t0_aux
1858WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1859INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1860SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1861'just inserted' FROM t0_template
1862WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1863CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
1864BEGIN
1865UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1866f_charbig = 'updated by trigger'
1867      WHERE f_int1 = new.f_int1;
1868END|
1869UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
1870WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1871
1872# check trigger-3 success: 	1
1873DROP TRIGGER trg_1;
1874UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1875f_int2 = CAST(f_char1 AS SIGNED INT),
1876f_charbig = 'just inserted'
1877   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1878DELETE FROM t0_aux
1879WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1880INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1881SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1882'just inserted' FROM t0_template
1883WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1884CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
1885BEGIN
1886UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1887f_charbig = 'updated by trigger'
1888      WHERE f_int1 = - old.f_int1;
1889END|
1890UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
1891WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1892
1893# check trigger-4 success: 	1
1894DROP TRIGGER trg_1;
1895UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1896f_int2 = CAST(f_char1 AS SIGNED INT),
1897f_charbig = 'just inserted'
1898   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1899DELETE FROM t0_aux
1900WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1901INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1902SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1903'just inserted' FROM t0_template
1904WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1905CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
1906BEGIN
1907UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1908f_charbig = 'updated by trigger'
1909      WHERE f_int1 = new.f_int1;
1910END|
1911UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
1912WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1913
1914# check trigger-5 success: 	1
1915DROP TRIGGER trg_1;
1916UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1917f_int2 = CAST(f_char1 AS SIGNED INT),
1918f_charbig = 'just inserted'
1919   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1920DELETE FROM t0_aux
1921WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1922INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1923SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1924'just inserted' FROM t0_template
1925WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1926CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
1927BEGIN
1928UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1929f_charbig = 'updated by trigger'
1930      WHERE f_int1 = - old.f_int1;
1931END|
1932UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
1933WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1934
1935# check trigger-6 success: 	1
1936DROP TRIGGER trg_1;
1937UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1938f_int2 = CAST(f_char1 AS SIGNED INT),
1939f_charbig = 'just inserted'
1940   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1941DELETE FROM t0_aux
1942WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1943INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1944SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1945'just inserted' FROM t0_template
1946WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1947CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
1948BEGIN
1949UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1950f_charbig = 'updated by trigger'
1951      WHERE f_int1 = - old.f_int1;
1952END|
1953DELETE FROM t0_aux
1954WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1955
1956# check trigger-7 success: 	1
1957DROP TRIGGER trg_1;
1958UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1959f_int2 = CAST(f_char1 AS SIGNED INT),
1960f_charbig = 'just inserted'
1961   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1962DELETE FROM t0_aux
1963WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1964INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1965SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1966'just inserted' FROM t0_template
1967WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1968CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
1969BEGIN
1970UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1971f_charbig = 'updated by trigger'
1972      WHERE f_int1 = - old.f_int1;
1973END|
1974DELETE FROM t0_aux
1975WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1976
1977# check trigger-8 success: 	1
1978DROP TRIGGER trg_1;
1979UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1980f_int2 = CAST(f_char1 AS SIGNED INT),
1981f_charbig = 'just inserted'
1982   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1983DELETE FROM t0_aux
1984WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1985DELETE FROM t1
1986WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1987CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
1988BEGIN
1989SET new.f_int1 = old.f_int1 + @max_row,
1990new.f_int2 = old.f_int2 - @max_row,
1991new.f_charbig = '####updated per update trigger####';
1992END|
1993UPDATE t1
1994SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
1995f_charbig = '####updated per update statement itself####';
1996Warnings:
1997Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
1998
1999# check trigger-9 success: 	1
2000DROP TRIGGER trg_2;
2001UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2002f_int2 = CAST(f_char1 AS SIGNED INT),
2003f_charbig = CONCAT('===',f_char1,'===');
2004Warnings:
2005Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
2006CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
2007BEGIN
2008SET new.f_int1 = new.f_int1 + @max_row,
2009new.f_int2 = new.f_int2 - @max_row,
2010new.f_charbig = '####updated per update trigger####';
2011END|
2012UPDATE t1
2013SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
2014f_charbig = '####updated per update statement itself####';
2015Warnings:
2016Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
2017
2018# check trigger-10 success: 	1
2019DROP TRIGGER trg_2;
2020UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2021f_int2 = CAST(f_char1 AS SIGNED INT),
2022f_charbig = CONCAT('===',f_char1,'===');
2023Warnings:
2024Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
2025CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
2026BEGIN
2027SET new.f_int1 = @my_max1 + @counter,
2028new.f_int2 = @my_min2 - @counter,
2029new.f_charbig = '####updated per insert trigger####';
2030SET @counter = @counter + 1;
2031END|
2032SET @counter = 1;
2033SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
2034Warnings:
2035Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
2036INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2037SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
2038CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
2039WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
2040ORDER BY f_int1;
2041DROP TRIGGER trg_3;
2042
2043# check trigger-11 success: 	1
2044Warnings:
2045Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
2046DELETE FROM t1
2047WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
2048AND f_int2 <> CAST(f_char1 AS SIGNED INT)
2049AND f_charbig = '####updated per insert trigger####';
2050CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
2051BEGIN
2052SET new.f_int1 = @my_max1 + @counter,
2053new.f_int2 = @my_min2 - @counter,
2054new.f_charbig = '####updated per insert trigger####';
2055SET @counter = @counter + 1;
2056END|
2057SET @counter = 1;
2058SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
2059Warnings:
2060Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
2061INSERT INTO t1 (f_char1, f_char2, f_charbig)
2062SELECT CAST(f_int1 AS CHAR),
2063CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
2064WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
2065ORDER BY f_int1;
2066DROP TRIGGER trg_3;
2067
2068# check trigger-12 success: 	1
2069Warnings:
2070Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
2071DELETE FROM t1
2072WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
2073AND f_int2 <> CAST(f_char1 AS SIGNED INT)
2074AND f_charbig = '####updated per insert trigger####';
2075ANALYZE  TABLE t1;
2076Table	Op	Msg_type	Msg_text
2077test.t1	analyze	status	OK
2078test.t1	analyze	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
2079CHECK    TABLE t1 EXTENDED;
2080Table	Op	Msg_type	Msg_text
2081test.t1	check	status	OK
2082test.t1	check	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
2083CHECKSUM TABLE t1 EXTENDED;
2084Table	Checksum
2085test.t1	<some_value>
2086OPTIMIZE TABLE t1;
2087Table	Op	Msg_type	Msg_text
2088test.t1	optimize	status	OK
2089test.t1	optimize	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
2090# check layout success:    1
2091REPAIR   TABLE t1 EXTENDED;
2092Table	Op	Msg_type	Msg_text
2093test.t1	repair	status	OK
2094test.t1	repair	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
2095# check layout success:    1
2096TRUNCATE t1;
2097Warnings:
2098Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
2099
2100# check TRUNCATE success: 	1
2101# check layout success:    1
2102# End usability test (inc/partition_check.inc)
2103DROP TABLE t1;
2104CREATE TABLE t1 (
2105f_int1 INTEGER,
2106f_int2 INTEGER,
2107f_char1 CHAR(20),
2108f_char2 CHAR(20),
2109f_charbig VARCHAR(1000)
2110
2111)
2112PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
2113(PARTITION parta VALUES LESS THAN (0),
2114PARTITION partb VALUES LESS THAN (5),
2115PARTITION partc VALUES LESS THAN (10),
2116PARTITION partd VALUES LESS THAN (2147483646));
2117Warnings:
2118Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
2119INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
2120SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
2121WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
2122Warnings:
2123Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
2124ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
2125Warnings:
2126Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
2127INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
2128SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
2129WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
2130Warnings:
2131Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
2132# Start usability test (inc/partition_check.inc)
2133create_command
2134SHOW CREATE TABLE t1;
2135Table	Create Table
2136t1	CREATE TABLE `t1` (
2137  `f_int1` int(11) DEFAULT NULL,
2138  `f_int2` mediumint(9) DEFAULT NULL,
2139  `f_char1` char(20) DEFAULT NULL,
2140  `f_char2` char(20) DEFAULT NULL,
2141  `f_charbig` varchar(1000) DEFAULT NULL
2142) ENGINE=MyISAM DEFAULT CHARSET=latin1
2143/*!50100 PARTITION BY RANGE (f_int1 DIV 2)
2144SUBPARTITION BY HASH (f_int1)
2145SUBPARTITIONS 2
2146(PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM,
2147 PARTITION partb VALUES LESS THAN (5) ENGINE = MyISAM,
2148 PARTITION partc VALUES LESS THAN (10) ENGINE = MyISAM,
2149 PARTITION partd VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
2150
2151unified filelist
2152t1#P#parta#SP#partasp0.MYD
2153t1#P#parta#SP#partasp0.MYI
2154t1#P#parta#SP#partasp1.MYD
2155t1#P#parta#SP#partasp1.MYI
2156t1#P#partb#SP#partbsp0.MYD
2157t1#P#partb#SP#partbsp0.MYI
2158t1#P#partb#SP#partbsp1.MYD
2159t1#P#partb#SP#partbsp1.MYI
2160t1#P#partc#SP#partcsp0.MYD
2161t1#P#partc#SP#partcsp0.MYI
2162t1#P#partc#SP#partcsp1.MYD
2163t1#P#partc#SP#partcsp1.MYI
2164t1#P#partd#SP#partdsp0.MYD
2165t1#P#partd#SP#partdsp0.MYI
2166t1#P#partd#SP#partdsp1.MYD
2167t1#P#partd#SP#partdsp1.MYI
2168t1.frm
2169t1.par
2170
2171# check prerequisites-1 success:    1
2172# check COUNT(*) success:    1
2173# check MIN/MAX(f_int1) success:    1
2174# check MIN/MAX(f_int2) success:    1
2175INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2176SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
2177CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
2178WHERE f_int1 IN (2,3);
2179# check prerequisites-3 success:    1
2180DELETE FROM t1 WHERE f_charbig = 'delete me';
2181# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
2182# check read via f_int1 success: 1
2183# check read via f_int2 success: 1
2184
2185# check multiple-1 success: 	1
2186DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
2187
2188# check multiple-2 success: 	1
2189INSERT INTO t1 SELECT * FROM t0_template
2190WHERE MOD(f_int1,3) = 0;
2191
2192# check multiple-3 success: 	1
2193UPDATE t1 SET f_int1 = f_int1 + @max_row
2194WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
2195AND @max_row_div2 + @max_row_div4;
2196
2197# check multiple-4 success: 	1
2198DELETE FROM t1
2199WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
2200AND @max_row_div2 + @max_row_div4 + @max_row;
2201
2202# check multiple-5 success: 	1
2203SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
2204INSERT INTO t1
2205SET f_int1 = @cur_value , f_int2 = @cur_value,
2206f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
2207f_charbig = '#SINGLE#';
2208
2209# check single-1 success: 	1
2210SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
2211INSERT INTO t1
2212SET f_int1 = @cur_value , f_int2 = @cur_value,
2213f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
2214f_charbig = '#SINGLE#';
2215
2216# check single-2 success: 	1
2217SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
2218SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
2219UPDATE t1 SET f_int1 = @cur_value2
2220WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
2221
2222# check single-3 success: 	1
2223SET @cur_value1= -1;
2224SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
2225UPDATE t1 SET f_int1 = @cur_value1
2226WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
2227
2228# check single-4 success: 	1
2229SELECT MAX(f_int1) INTO @cur_value FROM t1;
2230DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
2231
2232# check single-5 success: 	1
2233DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
2234
2235# check single-6 success: 	1
2236INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
2237Warnings:
2238Warning	1264	Out of range value for column 'f_int2' at row 1
2239
2240# check single-7 success: 	1
2241DELETE FROM t1 WHERE f_charbig = '#2147483647##';
2242DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
2243INSERT t1 SET f_int1 = 0 , f_int2 = 0,
2244f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
2245f_charbig = '#NULL#';
2246INSERT INTO t1
2247SET f_int1 = NULL , f_int2 = -@max_row,
2248f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
2249f_charbig = '#NULL#';
2250# check null success:    1
2251
2252# check null-1 success: 	1
2253UPDATE t1 SET f_int1 = -@max_row
2254WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
2255AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
2256
2257# check null-2 success: 	1
2258UPDATE t1 SET f_int1 = NULL
2259WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
2260AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
2261
2262# check null-3 success: 	1
2263DELETE FROM t1
2264WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
2265AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
2266
2267# check null-4 success: 	1
2268DELETE FROM t1
2269WHERE f_int1 = 0 AND f_int2 = 0
2270AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
2271AND f_charbig = '#NULL#';
2272SET AUTOCOMMIT= 0;
2273INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2274SELECT f_int1, f_int1, '', '', 'was inserted'
2275FROM t0_template source_tab
2276WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
2277
2278# check transactions-1 success: 	1
2279COMMIT WORK;
2280
2281# check transactions-2 success: 	1
2282ROLLBACK WORK;
2283
2284# check transactions-3 success: 	1
2285DELETE FROM t1 WHERE f_charbig = 'was inserted';
2286COMMIT WORK;
2287ROLLBACK WORK;
2288
2289# check transactions-4 success: 	1
2290INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2291SELECT f_int1, f_int1, '', '', 'was inserted'
2292FROM t0_template source_tab
2293WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
2294
2295# check transactions-5 success: 	1
2296ROLLBACK WORK;
2297Warnings:
2298Warning	1196	Some non-transactional changed tables couldn't be rolled back
2299
2300# check transactions-6 success: 	1
2301# INFO: Storage engine used for t1 seems to be not transactional.
2302COMMIT;
2303
2304# check transactions-7 success: 	1
2305DELETE FROM t1 WHERE f_charbig = 'was inserted';
2306COMMIT WORK;
2307SET @@session.sql_mode = 'traditional';
2308Warnings:
2309Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
2310SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
2311INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2312SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
2313'', '', 'was inserted' FROM t0_template
2314WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
2315ERROR 22012: Division by 0
2316COMMIT;
2317
2318# check transactions-8 success: 	1
2319# INFO: Storage engine used for t1 seems to be unable to revert
2320#       changes made by the failing statement.
2321SET @@session.sql_mode = '';
2322Warnings:
2323Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
2324SET AUTOCOMMIT= 1;
2325DELETE FROM t1 WHERE f_charbig = 'was inserted';
2326COMMIT WORK;
2327UPDATE t1 SET f_charbig = REPEAT('b', 1000);
2328
2329# check special-1 success: 	1
2330UPDATE t1 SET f_charbig = '';
2331
2332# check special-2 success: 	1
2333UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
2334INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
2335SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
2336WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2337INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2338SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2339'just inserted' FROM t0_template
2340WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2341CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
2342BEGIN
2343UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2344f_charbig = 'updated by trigger'
2345      WHERE f_int1 = new.f_int1;
2346END|
2347INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2348SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
2349WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2350
2351# check trigger-1 success: 	1
2352DROP TRIGGER trg_1;
2353UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2354f_int2 = CAST(f_char1 AS SIGNED INT),
2355f_charbig = 'just inserted'
2356   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2357DELETE FROM t0_aux
2358WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2359INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2360SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2361'just inserted' FROM t0_template
2362WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2363CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
2364BEGIN
2365UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2366f_charbig = 'updated by trigger'
2367      WHERE f_int1 = new.f_int1;
2368END|
2369INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2370SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
2371WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2372
2373# check trigger-2 success: 	1
2374DROP TRIGGER trg_1;
2375UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2376f_int2 = CAST(f_char1 AS SIGNED INT),
2377f_charbig = 'just inserted'
2378   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2379DELETE FROM t0_aux
2380WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2381INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2382SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2383'just inserted' FROM t0_template
2384WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2385CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
2386BEGIN
2387UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2388f_charbig = 'updated by trigger'
2389      WHERE f_int1 = new.f_int1;
2390END|
2391UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
2392WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2393
2394# check trigger-3 success: 	1
2395DROP TRIGGER trg_1;
2396UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2397f_int2 = CAST(f_char1 AS SIGNED INT),
2398f_charbig = 'just inserted'
2399   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2400DELETE FROM t0_aux
2401WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2402INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2403SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2404'just inserted' FROM t0_template
2405WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2406CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
2407BEGIN
2408UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2409f_charbig = 'updated by trigger'
2410      WHERE f_int1 = - old.f_int1;
2411END|
2412UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
2413WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2414
2415# check trigger-4 success: 	1
2416DROP TRIGGER trg_1;
2417UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2418f_int2 = CAST(f_char1 AS SIGNED INT),
2419f_charbig = 'just inserted'
2420   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2421DELETE FROM t0_aux
2422WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2423INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2424SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2425'just inserted' FROM t0_template
2426WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2427CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
2428BEGIN
2429UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2430f_charbig = 'updated by trigger'
2431      WHERE f_int1 = new.f_int1;
2432END|
2433UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
2434WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2435
2436# check trigger-5 success: 	1
2437DROP TRIGGER trg_1;
2438UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2439f_int2 = CAST(f_char1 AS SIGNED INT),
2440f_charbig = 'just inserted'
2441   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2442DELETE FROM t0_aux
2443WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2444INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2445SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2446'just inserted' FROM t0_template
2447WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2448CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
2449BEGIN
2450UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2451f_charbig = 'updated by trigger'
2452      WHERE f_int1 = - old.f_int1;
2453END|
2454UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
2455WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2456
2457# check trigger-6 success: 	1
2458DROP TRIGGER trg_1;
2459UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2460f_int2 = CAST(f_char1 AS SIGNED INT),
2461f_charbig = 'just inserted'
2462   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2463DELETE FROM t0_aux
2464WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2465INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2466SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2467'just inserted' FROM t0_template
2468WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2469CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
2470BEGIN
2471UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2472f_charbig = 'updated by trigger'
2473      WHERE f_int1 = - old.f_int1;
2474END|
2475DELETE FROM t0_aux
2476WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2477
2478# check trigger-7 success: 	1
2479DROP TRIGGER trg_1;
2480UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2481f_int2 = CAST(f_char1 AS SIGNED INT),
2482f_charbig = 'just inserted'
2483   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2484DELETE FROM t0_aux
2485WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2486INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2487SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2488'just inserted' FROM t0_template
2489WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2490CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
2491BEGIN
2492UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2493f_charbig = 'updated by trigger'
2494      WHERE f_int1 = - old.f_int1;
2495END|
2496DELETE FROM t0_aux
2497WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2498
2499# check trigger-8 success: 	1
2500DROP TRIGGER trg_1;
2501UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2502f_int2 = CAST(f_char1 AS SIGNED INT),
2503f_charbig = 'just inserted'
2504   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2505DELETE FROM t0_aux
2506WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2507DELETE FROM t1
2508WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2509CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
2510BEGIN
2511SET new.f_int1 = old.f_int1 + @max_row,
2512new.f_int2 = old.f_int2 - @max_row,
2513new.f_charbig = '####updated per update trigger####';
2514END|
2515UPDATE t1
2516SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
2517f_charbig = '####updated per update statement itself####';
2518Warnings:
2519Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
2520
2521# check trigger-9 success: 	1
2522DROP TRIGGER trg_2;
2523UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2524f_int2 = CAST(f_char1 AS SIGNED INT),
2525f_charbig = CONCAT('===',f_char1,'===');
2526Warnings:
2527Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
2528CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
2529BEGIN
2530SET new.f_int1 = new.f_int1 + @max_row,
2531new.f_int2 = new.f_int2 - @max_row,
2532new.f_charbig = '####updated per update trigger####';
2533END|
2534UPDATE t1
2535SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
2536f_charbig = '####updated per update statement itself####';
2537Warnings:
2538Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
2539
2540# check trigger-10 success: 	1
2541DROP TRIGGER trg_2;
2542UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2543f_int2 = CAST(f_char1 AS SIGNED INT),
2544f_charbig = CONCAT('===',f_char1,'===');
2545Warnings:
2546Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
2547CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
2548BEGIN
2549SET new.f_int1 = @my_max1 + @counter,
2550new.f_int2 = @my_min2 - @counter,
2551new.f_charbig = '####updated per insert trigger####';
2552SET @counter = @counter + 1;
2553END|
2554SET @counter = 1;
2555SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
2556Warnings:
2557Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
2558INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2559SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
2560CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
2561WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
2562ORDER BY f_int1;
2563DROP TRIGGER trg_3;
2564
2565# check trigger-11 success: 	1
2566Warnings:
2567Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
2568DELETE FROM t1
2569WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
2570AND f_int2 <> CAST(f_char1 AS SIGNED INT)
2571AND f_charbig = '####updated per insert trigger####';
2572CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
2573BEGIN
2574SET new.f_int1 = @my_max1 + @counter,
2575new.f_int2 = @my_min2 - @counter,
2576new.f_charbig = '####updated per insert trigger####';
2577SET @counter = @counter + 1;
2578END|
2579SET @counter = 1;
2580SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
2581Warnings:
2582Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
2583INSERT INTO t1 (f_char1, f_char2, f_charbig)
2584SELECT CAST(f_int1 AS CHAR),
2585CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
2586WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
2587ORDER BY f_int1;
2588DROP TRIGGER trg_3;
2589
2590# check trigger-12 success: 	1
2591Warnings:
2592Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
2593DELETE FROM t1
2594WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
2595AND f_int2 <> CAST(f_char1 AS SIGNED INT)
2596AND f_charbig = '####updated per insert trigger####';
2597ANALYZE  TABLE t1;
2598Table	Op	Msg_type	Msg_text
2599test.t1	analyze	status	OK
2600test.t1	analyze	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
2601CHECK    TABLE t1 EXTENDED;
2602Table	Op	Msg_type	Msg_text
2603test.t1	check	status	OK
2604test.t1	check	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
2605CHECKSUM TABLE t1 EXTENDED;
2606Table	Checksum
2607test.t1	<some_value>
2608OPTIMIZE TABLE t1;
2609Table	Op	Msg_type	Msg_text
2610test.t1	optimize	status	OK
2611test.t1	optimize	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
2612# check layout success:    1
2613REPAIR   TABLE t1 EXTENDED;
2614Table	Op	Msg_type	Msg_text
2615test.t1	repair	status	OK
2616test.t1	repair	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
2617# check layout success:    1
2618TRUNCATE t1;
2619Warnings:
2620Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
2621
2622# check TRUNCATE success: 	1
2623# check layout success:    1
2624# End usability test (inc/partition_check.inc)
2625DROP TABLE t1;
2626CREATE TABLE t1 (
2627f_int1 INTEGER,
2628f_int2 INTEGER,
2629f_char1 CHAR(20),
2630f_char2 CHAR(20),
2631f_charbig VARCHAR(1000)
2632
2633)
2634PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
2635(PARTITION part1 VALUES LESS THAN (0)
2636(SUBPARTITION subpart11, SUBPARTITION subpart12),
2637PARTITION part2 VALUES LESS THAN (5)
2638(SUBPARTITION subpart21, SUBPARTITION subpart22),
2639PARTITION part3 VALUES LESS THAN (10)
2640(SUBPARTITION subpart31, SUBPARTITION subpart32),
2641PARTITION part4 VALUES LESS THAN (2147483646)
2642(SUBPARTITION subpart41, SUBPARTITION subpart42));
2643Warnings:
2644Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
2645INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
2646SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
2647WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
2648Warnings:
2649Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
2650ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
2651Warnings:
2652Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
2653INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
2654SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
2655WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
2656Warnings:
2657Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
2658# Start usability test (inc/partition_check.inc)
2659create_command
2660SHOW CREATE TABLE t1;
2661Table	Create Table
2662t1	CREATE TABLE `t1` (
2663  `f_int1` int(11) DEFAULT NULL,
2664  `f_int2` mediumint(9) DEFAULT NULL,
2665  `f_char1` char(20) DEFAULT NULL,
2666  `f_char2` char(20) DEFAULT NULL,
2667  `f_charbig` varchar(1000) DEFAULT NULL
2668) ENGINE=MyISAM DEFAULT CHARSET=latin1
2669/*!50100 PARTITION BY RANGE (f_int1)
2670SUBPARTITION BY KEY (f_int1)
2671(PARTITION part1 VALUES LESS THAN (0)
2672 (SUBPARTITION subpart11 ENGINE = MyISAM,
2673  SUBPARTITION subpart12 ENGINE = MyISAM),
2674 PARTITION part2 VALUES LESS THAN (5)
2675 (SUBPARTITION subpart21 ENGINE = MyISAM,
2676  SUBPARTITION subpart22 ENGINE = MyISAM),
2677 PARTITION part3 VALUES LESS THAN (10)
2678 (SUBPARTITION subpart31 ENGINE = MyISAM,
2679  SUBPARTITION subpart32 ENGINE = MyISAM),
2680 PARTITION part4 VALUES LESS THAN (2147483646)
2681 (SUBPARTITION subpart41 ENGINE = MyISAM,
2682  SUBPARTITION subpart42 ENGINE = MyISAM)) */
2683
2684unified filelist
2685t1#P#part1#SP#subpart11.MYD
2686t1#P#part1#SP#subpart11.MYI
2687t1#P#part1#SP#subpart12.MYD
2688t1#P#part1#SP#subpart12.MYI
2689t1#P#part2#SP#subpart21.MYD
2690t1#P#part2#SP#subpart21.MYI
2691t1#P#part2#SP#subpart22.MYD
2692t1#P#part2#SP#subpart22.MYI
2693t1#P#part3#SP#subpart31.MYD
2694t1#P#part3#SP#subpart31.MYI
2695t1#P#part3#SP#subpart32.MYD
2696t1#P#part3#SP#subpart32.MYI
2697t1#P#part4#SP#subpart41.MYD
2698t1#P#part4#SP#subpart41.MYI
2699t1#P#part4#SP#subpart42.MYD
2700t1#P#part4#SP#subpart42.MYI
2701t1.frm
2702t1.par
2703
2704# check prerequisites-1 success:    1
2705# check COUNT(*) success:    1
2706# check MIN/MAX(f_int1) success:    1
2707# check MIN/MAX(f_int2) success:    1
2708INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2709SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
2710CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
2711WHERE f_int1 IN (2,3);
2712# check prerequisites-3 success:    1
2713DELETE FROM t1 WHERE f_charbig = 'delete me';
2714# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
2715# check read via f_int1 success: 1
2716# check read via f_int2 success: 1
2717
2718# check multiple-1 success: 	1
2719DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
2720
2721# check multiple-2 success: 	1
2722INSERT INTO t1 SELECT * FROM t0_template
2723WHERE MOD(f_int1,3) = 0;
2724
2725# check multiple-3 success: 	1
2726UPDATE t1 SET f_int1 = f_int1 + @max_row
2727WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
2728AND @max_row_div2 + @max_row_div4;
2729
2730# check multiple-4 success: 	1
2731DELETE FROM t1
2732WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
2733AND @max_row_div2 + @max_row_div4 + @max_row;
2734
2735# check multiple-5 success: 	1
2736SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
2737INSERT INTO t1
2738SET f_int1 = @cur_value , f_int2 = @cur_value,
2739f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
2740f_charbig = '#SINGLE#';
2741
2742# check single-1 success: 	1
2743SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
2744INSERT INTO t1
2745SET f_int1 = @cur_value , f_int2 = @cur_value,
2746f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
2747f_charbig = '#SINGLE#';
2748
2749# check single-2 success: 	1
2750SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
2751SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
2752UPDATE t1 SET f_int1 = @cur_value2
2753WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
2754
2755# check single-3 success: 	1
2756SET @cur_value1= -1;
2757SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
2758UPDATE t1 SET f_int1 = @cur_value1
2759WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
2760
2761# check single-4 success: 	1
2762SELECT MAX(f_int1) INTO @cur_value FROM t1;
2763DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
2764
2765# check single-5 success: 	1
2766DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
2767
2768# check single-6 success: 	1
2769INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
2770ERROR HY000: Table has no partition for value 2147483647
2771DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
2772INSERT t1 SET f_int1 = 0 , f_int2 = 0,
2773f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
2774f_charbig = '#NULL#';
2775INSERT INTO t1
2776SET f_int1 = NULL , f_int2 = -@max_row,
2777f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
2778f_charbig = '#NULL#';
2779# check null success:    1
2780
2781# check null-1 success: 	1
2782UPDATE t1 SET f_int1 = -@max_row
2783WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
2784AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
2785
2786# check null-2 success: 	1
2787UPDATE t1 SET f_int1 = NULL
2788WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
2789AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
2790
2791# check null-3 success: 	1
2792DELETE FROM t1
2793WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
2794AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
2795
2796# check null-4 success: 	1
2797DELETE FROM t1
2798WHERE f_int1 = 0 AND f_int2 = 0
2799AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
2800AND f_charbig = '#NULL#';
2801SET AUTOCOMMIT= 0;
2802INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2803SELECT f_int1, f_int1, '', '', 'was inserted'
2804FROM t0_template source_tab
2805WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
2806
2807# check transactions-1 success: 	1
2808COMMIT WORK;
2809
2810# check transactions-2 success: 	1
2811ROLLBACK WORK;
2812
2813# check transactions-3 success: 	1
2814DELETE FROM t1 WHERE f_charbig = 'was inserted';
2815COMMIT WORK;
2816ROLLBACK WORK;
2817
2818# check transactions-4 success: 	1
2819INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2820SELECT f_int1, f_int1, '', '', 'was inserted'
2821FROM t0_template source_tab
2822WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
2823
2824# check transactions-5 success: 	1
2825ROLLBACK WORK;
2826Warnings:
2827Warning	1196	Some non-transactional changed tables couldn't be rolled back
2828
2829# check transactions-6 success: 	1
2830# INFO: Storage engine used for t1 seems to be not transactional.
2831COMMIT;
2832
2833# check transactions-7 success: 	1
2834DELETE FROM t1 WHERE f_charbig = 'was inserted';
2835COMMIT WORK;
2836SET @@session.sql_mode = 'traditional';
2837Warnings:
2838Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
2839SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
2840INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2841SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
2842'', '', 'was inserted' FROM t0_template
2843WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
2844ERROR 22012: Division by 0
2845COMMIT;
2846
2847# check transactions-8 success: 	1
2848# INFO: Storage engine used for t1 seems to be unable to revert
2849#       changes made by the failing statement.
2850SET @@session.sql_mode = '';
2851Warnings:
2852Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
2853SET AUTOCOMMIT= 1;
2854DELETE FROM t1 WHERE f_charbig = 'was inserted';
2855COMMIT WORK;
2856UPDATE t1 SET f_charbig = REPEAT('b', 1000);
2857
2858# check special-1 success: 	1
2859UPDATE t1 SET f_charbig = '';
2860
2861# check special-2 success: 	1
2862UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
2863INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
2864SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
2865WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2866INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2867SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2868'just inserted' FROM t0_template
2869WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2870CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
2871BEGIN
2872UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2873f_charbig = 'updated by trigger'
2874      WHERE f_int1 = new.f_int1;
2875END|
2876INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2877SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
2878WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2879
2880# check trigger-1 success: 	1
2881DROP TRIGGER trg_1;
2882UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2883f_int2 = CAST(f_char1 AS SIGNED INT),
2884f_charbig = 'just inserted'
2885   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2886DELETE FROM t0_aux
2887WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2888INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2889SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2890'just inserted' FROM t0_template
2891WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2892CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
2893BEGIN
2894UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2895f_charbig = 'updated by trigger'
2896      WHERE f_int1 = new.f_int1;
2897END|
2898INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2899SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
2900WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2901
2902# check trigger-2 success: 	1
2903DROP TRIGGER trg_1;
2904UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2905f_int2 = CAST(f_char1 AS SIGNED INT),
2906f_charbig = 'just inserted'
2907   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2908DELETE FROM t0_aux
2909WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2910INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2911SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2912'just inserted' FROM t0_template
2913WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2914CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
2915BEGIN
2916UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2917f_charbig = 'updated by trigger'
2918      WHERE f_int1 = new.f_int1;
2919END|
2920UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
2921WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2922
2923# check trigger-3 success: 	1
2924DROP TRIGGER trg_1;
2925UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2926f_int2 = CAST(f_char1 AS SIGNED INT),
2927f_charbig = 'just inserted'
2928   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2929DELETE FROM t0_aux
2930WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2931INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2932SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2933'just inserted' FROM t0_template
2934WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2935CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
2936BEGIN
2937UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2938f_charbig = 'updated by trigger'
2939      WHERE f_int1 = - old.f_int1;
2940END|
2941UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
2942WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2943
2944# check trigger-4 success: 	1
2945DROP TRIGGER trg_1;
2946UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2947f_int2 = CAST(f_char1 AS SIGNED INT),
2948f_charbig = 'just inserted'
2949   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2950DELETE FROM t0_aux
2951WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2952INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2953SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2954'just inserted' FROM t0_template
2955WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2956CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
2957BEGIN
2958UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2959f_charbig = 'updated by trigger'
2960      WHERE f_int1 = new.f_int1;
2961END|
2962UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
2963WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2964
2965# check trigger-5 success: 	1
2966DROP TRIGGER trg_1;
2967UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2968f_int2 = CAST(f_char1 AS SIGNED INT),
2969f_charbig = 'just inserted'
2970   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2971DELETE FROM t0_aux
2972WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2973INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2974SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2975'just inserted' FROM t0_template
2976WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2977CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
2978BEGIN
2979UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2980f_charbig = 'updated by trigger'
2981      WHERE f_int1 = - old.f_int1;
2982END|
2983UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
2984WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2985
2986# check trigger-6 success: 	1
2987DROP TRIGGER trg_1;
2988UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2989f_int2 = CAST(f_char1 AS SIGNED INT),
2990f_charbig = 'just inserted'
2991   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2992DELETE FROM t0_aux
2993WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2994INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2995SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2996'just inserted' FROM t0_template
2997WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2998CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
2999BEGIN
3000UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3001f_charbig = 'updated by trigger'
3002      WHERE f_int1 = - old.f_int1;
3003END|
3004DELETE FROM t0_aux
3005WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3006
3007# check trigger-7 success: 	1
3008DROP TRIGGER trg_1;
3009UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3010f_int2 = CAST(f_char1 AS SIGNED INT),
3011f_charbig = 'just inserted'
3012   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3013DELETE FROM t0_aux
3014WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3015INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3016SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3017'just inserted' FROM t0_template
3018WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3019CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
3020BEGIN
3021UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3022f_charbig = 'updated by trigger'
3023      WHERE f_int1 = - old.f_int1;
3024END|
3025DELETE FROM t0_aux
3026WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3027
3028# check trigger-8 success: 	1
3029DROP TRIGGER trg_1;
3030UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3031f_int2 = CAST(f_char1 AS SIGNED INT),
3032f_charbig = 'just inserted'
3033   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3034DELETE FROM t0_aux
3035WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3036DELETE FROM t1
3037WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3038CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
3039BEGIN
3040SET new.f_int1 = old.f_int1 + @max_row,
3041new.f_int2 = old.f_int2 - @max_row,
3042new.f_charbig = '####updated per update trigger####';
3043END|
3044UPDATE t1
3045SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
3046f_charbig = '####updated per update statement itself####';
3047Warnings:
3048Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
3049
3050# check trigger-9 success: 	1
3051DROP TRIGGER trg_2;
3052UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3053f_int2 = CAST(f_char1 AS SIGNED INT),
3054f_charbig = CONCAT('===',f_char1,'===');
3055Warnings:
3056Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
3057CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
3058BEGIN
3059SET new.f_int1 = new.f_int1 + @max_row,
3060new.f_int2 = new.f_int2 - @max_row,
3061new.f_charbig = '####updated per update trigger####';
3062END|
3063UPDATE t1
3064SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
3065f_charbig = '####updated per update statement itself####';
3066Warnings:
3067Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
3068
3069# check trigger-10 success: 	1
3070DROP TRIGGER trg_2;
3071UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3072f_int2 = CAST(f_char1 AS SIGNED INT),
3073f_charbig = CONCAT('===',f_char1,'===');
3074Warnings:
3075Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
3076CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
3077BEGIN
3078SET new.f_int1 = @my_max1 + @counter,
3079new.f_int2 = @my_min2 - @counter,
3080new.f_charbig = '####updated per insert trigger####';
3081SET @counter = @counter + 1;
3082END|
3083SET @counter = 1;
3084SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
3085Warnings:
3086Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
3087INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3088SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
3089CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
3090WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
3091ORDER BY f_int1;
3092DROP TRIGGER trg_3;
3093
3094# check trigger-11 success: 	1
3095Warnings:
3096Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
3097DELETE FROM t1
3098WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
3099AND f_int2 <> CAST(f_char1 AS SIGNED INT)
3100AND f_charbig = '####updated per insert trigger####';
3101CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
3102BEGIN
3103SET new.f_int1 = @my_max1 + @counter,
3104new.f_int2 = @my_min2 - @counter,
3105new.f_charbig = '####updated per insert trigger####';
3106SET @counter = @counter + 1;
3107END|
3108SET @counter = 1;
3109SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
3110Warnings:
3111Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
3112INSERT INTO t1 (f_char1, f_char2, f_charbig)
3113SELECT CAST(f_int1 AS CHAR),
3114CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
3115WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
3116ORDER BY f_int1;
3117DROP TRIGGER trg_3;
3118
3119# check trigger-12 success: 	1
3120Warnings:
3121Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
3122DELETE FROM t1
3123WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
3124AND f_int2 <> CAST(f_char1 AS SIGNED INT)
3125AND f_charbig = '####updated per insert trigger####';
3126ANALYZE  TABLE t1;
3127Table	Op	Msg_type	Msg_text
3128test.t1	analyze	status	OK
3129test.t1	analyze	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
3130CHECK    TABLE t1 EXTENDED;
3131Table	Op	Msg_type	Msg_text
3132test.t1	check	status	OK
3133test.t1	check	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
3134CHECKSUM TABLE t1 EXTENDED;
3135Table	Checksum
3136test.t1	<some_value>
3137OPTIMIZE TABLE t1;
3138Table	Op	Msg_type	Msg_text
3139test.t1	optimize	status	OK
3140test.t1	optimize	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
3141# check layout success:    1
3142REPAIR   TABLE t1 EXTENDED;
3143Table	Op	Msg_type	Msg_text
3144test.t1	repair	status	OK
3145test.t1	repair	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
3146# check layout success:    1
3147TRUNCATE t1;
3148Warnings:
3149Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
3150
3151# check TRUNCATE success: 	1
3152# check layout success:    1
3153# End usability test (inc/partition_check.inc)
3154DROP TABLE t1;
3155CREATE TABLE t1 (
3156f_int1 INTEGER,
3157f_int2 INTEGER,
3158f_char1 CHAR(20),
3159f_char2 CHAR(20),
3160f_charbig VARCHAR(1000)
3161
3162)
3163PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
3164(PARTITION part1 VALUES IN (0)
3165(SUBPARTITION sp11, SUBPARTITION sp12),
3166PARTITION part2 VALUES IN (1)
3167(SUBPARTITION sp21, SUBPARTITION sp22),
3168PARTITION part3 VALUES IN (2)
3169(SUBPARTITION sp31, SUBPARTITION sp32),
3170PARTITION part4 VALUES IN (NULL)
3171(SUBPARTITION sp41, SUBPARTITION sp42));
3172Warnings:
3173Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
3174INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
3175SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
3176WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
3177Warnings:
3178Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
3179ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
3180Warnings:
3181Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
3182INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
3183SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
3184WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
3185Warnings:
3186Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
3187# Start usability test (inc/partition_check.inc)
3188create_command
3189SHOW CREATE TABLE t1;
3190Table	Create Table
3191t1	CREATE TABLE `t1` (
3192  `f_int1` int(11) DEFAULT NULL,
3193  `f_int2` mediumint(9) DEFAULT NULL,
3194  `f_char1` char(20) DEFAULT NULL,
3195  `f_char2` char(20) DEFAULT NULL,
3196  `f_charbig` varchar(1000) DEFAULT NULL
3197) ENGINE=MyISAM DEFAULT CHARSET=latin1
3198/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
3199SUBPARTITION BY HASH (f_int1 + 1)
3200(PARTITION part1 VALUES IN (0)
3201 (SUBPARTITION sp11 ENGINE = MyISAM,
3202  SUBPARTITION sp12 ENGINE = MyISAM),
3203 PARTITION part2 VALUES IN (1)
3204 (SUBPARTITION sp21 ENGINE = MyISAM,
3205  SUBPARTITION sp22 ENGINE = MyISAM),
3206 PARTITION part3 VALUES IN (2)
3207 (SUBPARTITION sp31 ENGINE = MyISAM,
3208  SUBPARTITION sp32 ENGINE = MyISAM),
3209 PARTITION part4 VALUES IN (NULL)
3210 (SUBPARTITION sp41 ENGINE = MyISAM,
3211  SUBPARTITION sp42 ENGINE = MyISAM)) */
3212
3213unified filelist
3214t1#P#part1#SP#sp11.MYD
3215t1#P#part1#SP#sp11.MYI
3216t1#P#part1#SP#sp12.MYD
3217t1#P#part1#SP#sp12.MYI
3218t1#P#part2#SP#sp21.MYD
3219t1#P#part2#SP#sp21.MYI
3220t1#P#part2#SP#sp22.MYD
3221t1#P#part2#SP#sp22.MYI
3222t1#P#part3#SP#sp31.MYD
3223t1#P#part3#SP#sp31.MYI
3224t1#P#part3#SP#sp32.MYD
3225t1#P#part3#SP#sp32.MYI
3226t1#P#part4#SP#sp41.MYD
3227t1#P#part4#SP#sp41.MYI
3228t1#P#part4#SP#sp42.MYD
3229t1#P#part4#SP#sp42.MYI
3230t1.frm
3231t1.par
3232
3233# check prerequisites-1 success:    1
3234# check COUNT(*) success:    1
3235# check MIN/MAX(f_int1) success:    1
3236# check MIN/MAX(f_int2) success:    1
3237INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3238SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
3239CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
3240WHERE f_int1 IN (2,3);
3241# check prerequisites-3 success:    1
3242DELETE FROM t1 WHERE f_charbig = 'delete me';
3243# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
3244# check read via f_int1 success: 1
3245# check read via f_int2 success: 1
3246
3247# check multiple-1 success: 	1
3248DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
3249
3250# check multiple-2 success: 	1
3251INSERT INTO t1 SELECT * FROM t0_template
3252WHERE MOD(f_int1,3) = 0;
3253
3254# check multiple-3 success: 	1
3255UPDATE t1 SET f_int1 = f_int1 + @max_row
3256WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
3257AND @max_row_div2 + @max_row_div4;
3258
3259# check multiple-4 success: 	1
3260DELETE FROM t1
3261WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
3262AND @max_row_div2 + @max_row_div4 + @max_row;
3263
3264# check multiple-5 success: 	1
3265SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
3266INSERT INTO t1
3267SET f_int1 = @cur_value , f_int2 = @cur_value,
3268f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
3269f_charbig = '#SINGLE#';
3270
3271# check single-1 success: 	1
3272SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
3273INSERT INTO t1
3274SET f_int1 = @cur_value , f_int2 = @cur_value,
3275f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
3276f_charbig = '#SINGLE#';
3277
3278# check single-2 success: 	1
3279SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
3280SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
3281UPDATE t1 SET f_int1 = @cur_value2
3282WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
3283
3284# check single-3 success: 	1
3285SET @cur_value1= -1;
3286SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
3287UPDATE t1 SET f_int1 = @cur_value1
3288WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
3289
3290# check single-4 success: 	1
3291SELECT MAX(f_int1) INTO @cur_value FROM t1;
3292DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
3293
3294# check single-5 success: 	1
3295DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
3296
3297# check single-6 success: 	1
3298INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
3299Warnings:
3300Warning	1264	Out of range value for column 'f_int2' at row 1
3301
3302# check single-7 success: 	1
3303DELETE FROM t1 WHERE f_charbig = '#2147483647##';
3304DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
3305INSERT t1 SET f_int1 = 0 , f_int2 = 0,
3306f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
3307f_charbig = '#NULL#';
3308INSERT INTO t1
3309SET f_int1 = NULL , f_int2 = -@max_row,
3310f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
3311f_charbig = '#NULL#';
3312# check null success:    1
3313
3314# check null-1 success: 	1
3315UPDATE t1 SET f_int1 = -@max_row
3316WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
3317AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
3318
3319# check null-2 success: 	1
3320UPDATE t1 SET f_int1 = NULL
3321WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
3322AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
3323
3324# check null-3 success: 	1
3325DELETE FROM t1
3326WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
3327AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
3328
3329# check null-4 success: 	1
3330DELETE FROM t1
3331WHERE f_int1 = 0 AND f_int2 = 0
3332AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
3333AND f_charbig = '#NULL#';
3334SET AUTOCOMMIT= 0;
3335INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3336SELECT f_int1, f_int1, '', '', 'was inserted'
3337FROM t0_template source_tab
3338WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
3339
3340# check transactions-1 success: 	1
3341COMMIT WORK;
3342
3343# check transactions-2 success: 	1
3344ROLLBACK WORK;
3345
3346# check transactions-3 success: 	1
3347DELETE FROM t1 WHERE f_charbig = 'was inserted';
3348COMMIT WORK;
3349ROLLBACK WORK;
3350
3351# check transactions-4 success: 	1
3352INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3353SELECT f_int1, f_int1, '', '', 'was inserted'
3354FROM t0_template source_tab
3355WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
3356
3357# check transactions-5 success: 	1
3358ROLLBACK WORK;
3359Warnings:
3360Warning	1196	Some non-transactional changed tables couldn't be rolled back
3361
3362# check transactions-6 success: 	1
3363# INFO: Storage engine used for t1 seems to be not transactional.
3364COMMIT;
3365
3366# check transactions-7 success: 	1
3367DELETE FROM t1 WHERE f_charbig = 'was inserted';
3368COMMIT WORK;
3369SET @@session.sql_mode = 'traditional';
3370Warnings:
3371Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
3372SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
3373INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3374SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
3375'', '', 'was inserted' FROM t0_template
3376WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
3377ERROR 22012: Division by 0
3378COMMIT;
3379
3380# check transactions-8 success: 	1
3381# INFO: Storage engine used for t1 seems to be unable to revert
3382#       changes made by the failing statement.
3383SET @@session.sql_mode = '';
3384Warnings:
3385Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
3386SET AUTOCOMMIT= 1;
3387DELETE FROM t1 WHERE f_charbig = 'was inserted';
3388COMMIT WORK;
3389UPDATE t1 SET f_charbig = REPEAT('b', 1000);
3390
3391# check special-1 success: 	1
3392UPDATE t1 SET f_charbig = '';
3393
3394# check special-2 success: 	1
3395UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
3396INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
3397SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
3398WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3399INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3400SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3401'just inserted' FROM t0_template
3402WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3403CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
3404BEGIN
3405UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3406f_charbig = 'updated by trigger'
3407      WHERE f_int1 = new.f_int1;
3408END|
3409INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3410SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
3411WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3412
3413# check trigger-1 success: 	1
3414DROP TRIGGER trg_1;
3415UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3416f_int2 = CAST(f_char1 AS SIGNED INT),
3417f_charbig = 'just inserted'
3418   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3419DELETE FROM t0_aux
3420WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3421INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3422SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3423'just inserted' FROM t0_template
3424WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3425CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
3426BEGIN
3427UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3428f_charbig = 'updated by trigger'
3429      WHERE f_int1 = new.f_int1;
3430END|
3431INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3432SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
3433WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3434
3435# check trigger-2 success: 	1
3436DROP TRIGGER trg_1;
3437UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3438f_int2 = CAST(f_char1 AS SIGNED INT),
3439f_charbig = 'just inserted'
3440   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3441DELETE FROM t0_aux
3442WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3443INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3444SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3445'just inserted' FROM t0_template
3446WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3447CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
3448BEGIN
3449UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3450f_charbig = 'updated by trigger'
3451      WHERE f_int1 = new.f_int1;
3452END|
3453UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
3454WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3455
3456# check trigger-3 success: 	1
3457DROP TRIGGER trg_1;
3458UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3459f_int2 = CAST(f_char1 AS SIGNED INT),
3460f_charbig = 'just inserted'
3461   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3462DELETE FROM t0_aux
3463WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3464INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3465SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3466'just inserted' FROM t0_template
3467WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3468CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
3469BEGIN
3470UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3471f_charbig = 'updated by trigger'
3472      WHERE f_int1 = - old.f_int1;
3473END|
3474UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
3475WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3476
3477# check trigger-4 success: 	1
3478DROP TRIGGER trg_1;
3479UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3480f_int2 = CAST(f_char1 AS SIGNED INT),
3481f_charbig = 'just inserted'
3482   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3483DELETE FROM t0_aux
3484WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3485INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3486SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3487'just inserted' FROM t0_template
3488WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3489CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
3490BEGIN
3491UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3492f_charbig = 'updated by trigger'
3493      WHERE f_int1 = new.f_int1;
3494END|
3495UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
3496WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3497
3498# check trigger-5 success: 	1
3499DROP TRIGGER trg_1;
3500UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3501f_int2 = CAST(f_char1 AS SIGNED INT),
3502f_charbig = 'just inserted'
3503   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3504DELETE FROM t0_aux
3505WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3506INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3507SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3508'just inserted' FROM t0_template
3509WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3510CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
3511BEGIN
3512UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3513f_charbig = 'updated by trigger'
3514      WHERE f_int1 = - old.f_int1;
3515END|
3516UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
3517WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3518
3519# check trigger-6 success: 	1
3520DROP TRIGGER trg_1;
3521UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3522f_int2 = CAST(f_char1 AS SIGNED INT),
3523f_charbig = 'just inserted'
3524   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3525DELETE FROM t0_aux
3526WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3527INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3528SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3529'just inserted' FROM t0_template
3530WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3531CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
3532BEGIN
3533UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3534f_charbig = 'updated by trigger'
3535      WHERE f_int1 = - old.f_int1;
3536END|
3537DELETE FROM t0_aux
3538WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3539
3540# check trigger-7 success: 	1
3541DROP TRIGGER trg_1;
3542UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3543f_int2 = CAST(f_char1 AS SIGNED INT),
3544f_charbig = 'just inserted'
3545   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3546DELETE FROM t0_aux
3547WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3548INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3549SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3550'just inserted' FROM t0_template
3551WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3552CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
3553BEGIN
3554UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3555f_charbig = 'updated by trigger'
3556      WHERE f_int1 = - old.f_int1;
3557END|
3558DELETE FROM t0_aux
3559WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3560
3561# check trigger-8 success: 	1
3562DROP TRIGGER trg_1;
3563UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3564f_int2 = CAST(f_char1 AS SIGNED INT),
3565f_charbig = 'just inserted'
3566   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3567DELETE FROM t0_aux
3568WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3569DELETE FROM t1
3570WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3571CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
3572BEGIN
3573SET new.f_int1 = old.f_int1 + @max_row,
3574new.f_int2 = old.f_int2 - @max_row,
3575new.f_charbig = '####updated per update trigger####';
3576END|
3577UPDATE t1
3578SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
3579f_charbig = '####updated per update statement itself####';
3580Warnings:
3581Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
3582
3583# check trigger-9 success: 	1
3584DROP TRIGGER trg_2;
3585UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3586f_int2 = CAST(f_char1 AS SIGNED INT),
3587f_charbig = CONCAT('===',f_char1,'===');
3588Warnings:
3589Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
3590CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
3591BEGIN
3592SET new.f_int1 = new.f_int1 + @max_row,
3593new.f_int2 = new.f_int2 - @max_row,
3594new.f_charbig = '####updated per update trigger####';
3595END|
3596UPDATE t1
3597SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
3598f_charbig = '####updated per update statement itself####';
3599Warnings:
3600Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
3601
3602# check trigger-10 success: 	1
3603DROP TRIGGER trg_2;
3604UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3605f_int2 = CAST(f_char1 AS SIGNED INT),
3606f_charbig = CONCAT('===',f_char1,'===');
3607Warnings:
3608Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
3609CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
3610BEGIN
3611SET new.f_int1 = @my_max1 + @counter,
3612new.f_int2 = @my_min2 - @counter,
3613new.f_charbig = '####updated per insert trigger####';
3614SET @counter = @counter + 1;
3615END|
3616SET @counter = 1;
3617SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
3618Warnings:
3619Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
3620INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3621SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
3622CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
3623WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
3624ORDER BY f_int1;
3625DROP TRIGGER trg_3;
3626
3627# check trigger-11 success: 	1
3628Warnings:
3629Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
3630DELETE FROM t1
3631WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
3632AND f_int2 <> CAST(f_char1 AS SIGNED INT)
3633AND f_charbig = '####updated per insert trigger####';
3634CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
3635BEGIN
3636SET new.f_int1 = @my_max1 + @counter,
3637new.f_int2 = @my_min2 - @counter,
3638new.f_charbig = '####updated per insert trigger####';
3639SET @counter = @counter + 1;
3640END|
3641SET @counter = 1;
3642SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
3643Warnings:
3644Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
3645INSERT INTO t1 (f_char1, f_char2, f_charbig)
3646SELECT CAST(f_int1 AS CHAR),
3647CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
3648WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
3649ORDER BY f_int1;
3650DROP TRIGGER trg_3;
3651
3652# check trigger-12 success: 	1
3653Warnings:
3654Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
3655DELETE FROM t1
3656WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
3657AND f_int2 <> CAST(f_char1 AS SIGNED INT)
3658AND f_charbig = '####updated per insert trigger####';
3659ANALYZE  TABLE t1;
3660Table	Op	Msg_type	Msg_text
3661test.t1	analyze	status	OK
3662test.t1	analyze	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
3663CHECK    TABLE t1 EXTENDED;
3664Table	Op	Msg_type	Msg_text
3665test.t1	check	status	OK
3666test.t1	check	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
3667CHECKSUM TABLE t1 EXTENDED;
3668Table	Checksum
3669test.t1	<some_value>
3670OPTIMIZE TABLE t1;
3671Table	Op	Msg_type	Msg_text
3672test.t1	optimize	status	OK
3673test.t1	optimize	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
3674# check layout success:    1
3675REPAIR   TABLE t1 EXTENDED;
3676Table	Op	Msg_type	Msg_text
3677test.t1	repair	status	OK
3678test.t1	repair	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
3679# check layout success:    1
3680TRUNCATE t1;
3681Warnings:
3682Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
3683
3684# check TRUNCATE success: 	1
3685# check layout success:    1
3686# End usability test (inc/partition_check.inc)
3687DROP TABLE t1;
3688CREATE TABLE t1 (
3689f_int1 INTEGER,
3690f_int2 INTEGER,
3691f_char1 CHAR(20),
3692f_char2 CHAR(20),
3693f_charbig VARCHAR(1000)
3694
3695)
3696PARTITION BY LIST(ABS(MOD(f_int1,2)))
3697SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
3698(PARTITION part1 VALUES IN (0),
3699PARTITION part2 VALUES IN (1),
3700PARTITION part3 VALUES IN (NULL));
3701Warnings:
3702Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
3703INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
3704SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
3705WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
3706Warnings:
3707Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
3708ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
3709Warnings:
3710Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
3711INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
3712SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
3713WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
3714Warnings:
3715Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
3716# Start usability test (inc/partition_check.inc)
3717create_command
3718SHOW CREATE TABLE t1;
3719Table	Create Table
3720t1	CREATE TABLE `t1` (
3721  `f_int1` int(11) DEFAULT NULL,
3722  `f_int2` mediumint(9) DEFAULT NULL,
3723  `f_char1` char(20) DEFAULT NULL,
3724  `f_char2` char(20) DEFAULT NULL,
3725  `f_charbig` varchar(1000) DEFAULT NULL
3726) ENGINE=MyISAM DEFAULT CHARSET=latin1
3727/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
3728SUBPARTITION BY KEY (f_int1)
3729SUBPARTITIONS 3
3730(PARTITION part1 VALUES IN (0) ENGINE = MyISAM,
3731 PARTITION part2 VALUES IN (1) ENGINE = MyISAM,
3732 PARTITION part3 VALUES IN (NULL) ENGINE = MyISAM) */
3733
3734unified filelist
3735t1#P#part1#SP#part1sp0.MYD
3736t1#P#part1#SP#part1sp0.MYI
3737t1#P#part1#SP#part1sp1.MYD
3738t1#P#part1#SP#part1sp1.MYI
3739t1#P#part1#SP#part1sp2.MYD
3740t1#P#part1#SP#part1sp2.MYI
3741t1#P#part2#SP#part2sp0.MYD
3742t1#P#part2#SP#part2sp0.MYI
3743t1#P#part2#SP#part2sp1.MYD
3744t1#P#part2#SP#part2sp1.MYI
3745t1#P#part2#SP#part2sp2.MYD
3746t1#P#part2#SP#part2sp2.MYI
3747t1#P#part3#SP#part3sp0.MYD
3748t1#P#part3#SP#part3sp0.MYI
3749t1#P#part3#SP#part3sp1.MYD
3750t1#P#part3#SP#part3sp1.MYI
3751t1#P#part3#SP#part3sp2.MYD
3752t1#P#part3#SP#part3sp2.MYI
3753t1.frm
3754t1.par
3755
3756# check prerequisites-1 success:    1
3757# check COUNT(*) success:    1
3758# check MIN/MAX(f_int1) success:    1
3759# check MIN/MAX(f_int2) success:    1
3760INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3761SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
3762CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
3763WHERE f_int1 IN (2,3);
3764# check prerequisites-3 success:    1
3765DELETE FROM t1 WHERE f_charbig = 'delete me';
3766# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
3767# check read via f_int1 success: 1
3768# check read via f_int2 success: 1
3769
3770# check multiple-1 success: 	1
3771DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
3772
3773# check multiple-2 success: 	1
3774INSERT INTO t1 SELECT * FROM t0_template
3775WHERE MOD(f_int1,3) = 0;
3776
3777# check multiple-3 success: 	1
3778UPDATE t1 SET f_int1 = f_int1 + @max_row
3779WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
3780AND @max_row_div2 + @max_row_div4;
3781
3782# check multiple-4 success: 	1
3783DELETE FROM t1
3784WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
3785AND @max_row_div2 + @max_row_div4 + @max_row;
3786
3787# check multiple-5 success: 	1
3788SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
3789INSERT INTO t1
3790SET f_int1 = @cur_value , f_int2 = @cur_value,
3791f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
3792f_charbig = '#SINGLE#';
3793
3794# check single-1 success: 	1
3795SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
3796INSERT INTO t1
3797SET f_int1 = @cur_value , f_int2 = @cur_value,
3798f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
3799f_charbig = '#SINGLE#';
3800
3801# check single-2 success: 	1
3802SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
3803SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
3804UPDATE t1 SET f_int1 = @cur_value2
3805WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
3806
3807# check single-3 success: 	1
3808SET @cur_value1= -1;
3809SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
3810UPDATE t1 SET f_int1 = @cur_value1
3811WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
3812
3813# check single-4 success: 	1
3814SELECT MAX(f_int1) INTO @cur_value FROM t1;
3815DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
3816
3817# check single-5 success: 	1
3818DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
3819
3820# check single-6 success: 	1
3821INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
3822Warnings:
3823Warning	1264	Out of range value for column 'f_int2' at row 1
3824
3825# check single-7 success: 	1
3826DELETE FROM t1 WHERE f_charbig = '#2147483647##';
3827DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
3828INSERT t1 SET f_int1 = 0 , f_int2 = 0,
3829f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
3830f_charbig = '#NULL#';
3831INSERT INTO t1
3832SET f_int1 = NULL , f_int2 = -@max_row,
3833f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
3834f_charbig = '#NULL#';
3835# check null success:    1
3836
3837# check null-1 success: 	1
3838UPDATE t1 SET f_int1 = -@max_row
3839WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
3840AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
3841
3842# check null-2 success: 	1
3843UPDATE t1 SET f_int1 = NULL
3844WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
3845AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
3846
3847# check null-3 success: 	1
3848DELETE FROM t1
3849WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
3850AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
3851
3852# check null-4 success: 	1
3853DELETE FROM t1
3854WHERE f_int1 = 0 AND f_int2 = 0
3855AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
3856AND f_charbig = '#NULL#';
3857SET AUTOCOMMIT= 0;
3858INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3859SELECT f_int1, f_int1, '', '', 'was inserted'
3860FROM t0_template source_tab
3861WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
3862
3863# check transactions-1 success: 	1
3864COMMIT WORK;
3865
3866# check transactions-2 success: 	1
3867ROLLBACK WORK;
3868
3869# check transactions-3 success: 	1
3870DELETE FROM t1 WHERE f_charbig = 'was inserted';
3871COMMIT WORK;
3872ROLLBACK WORK;
3873
3874# check transactions-4 success: 	1
3875INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3876SELECT f_int1, f_int1, '', '', 'was inserted'
3877FROM t0_template source_tab
3878WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
3879
3880# check transactions-5 success: 	1
3881ROLLBACK WORK;
3882Warnings:
3883Warning	1196	Some non-transactional changed tables couldn't be rolled back
3884
3885# check transactions-6 success: 	1
3886# INFO: Storage engine used for t1 seems to be not transactional.
3887COMMIT;
3888
3889# check transactions-7 success: 	1
3890DELETE FROM t1 WHERE f_charbig = 'was inserted';
3891COMMIT WORK;
3892SET @@session.sql_mode = 'traditional';
3893Warnings:
3894Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
3895SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
3896INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3897SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
3898'', '', 'was inserted' FROM t0_template
3899WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
3900ERROR 22012: Division by 0
3901COMMIT;
3902
3903# check transactions-8 success: 	1
3904# INFO: Storage engine used for t1 seems to be unable to revert
3905#       changes made by the failing statement.
3906SET @@session.sql_mode = '';
3907Warnings:
3908Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
3909SET AUTOCOMMIT= 1;
3910DELETE FROM t1 WHERE f_charbig = 'was inserted';
3911COMMIT WORK;
3912UPDATE t1 SET f_charbig = REPEAT('b', 1000);
3913
3914# check special-1 success: 	1
3915UPDATE t1 SET f_charbig = '';
3916
3917# check special-2 success: 	1
3918UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
3919INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
3920SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
3921WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3922INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3923SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3924'just inserted' FROM t0_template
3925WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3926CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
3927BEGIN
3928UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3929f_charbig = 'updated by trigger'
3930      WHERE f_int1 = new.f_int1;
3931END|
3932INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3933SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
3934WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3935
3936# check trigger-1 success: 	1
3937DROP TRIGGER trg_1;
3938UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3939f_int2 = CAST(f_char1 AS SIGNED INT),
3940f_charbig = 'just inserted'
3941   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3942DELETE FROM t0_aux
3943WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3944INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3945SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3946'just inserted' FROM t0_template
3947WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3948CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
3949BEGIN
3950UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3951f_charbig = 'updated by trigger'
3952      WHERE f_int1 = new.f_int1;
3953END|
3954INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3955SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
3956WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3957
3958# check trigger-2 success: 	1
3959DROP TRIGGER trg_1;
3960UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3961f_int2 = CAST(f_char1 AS SIGNED INT),
3962f_charbig = 'just inserted'
3963   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3964DELETE FROM t0_aux
3965WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3966INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3967SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3968'just inserted' FROM t0_template
3969WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3970CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
3971BEGIN
3972UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3973f_charbig = 'updated by trigger'
3974      WHERE f_int1 = new.f_int1;
3975END|
3976UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
3977WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3978
3979# check trigger-3 success: 	1
3980DROP TRIGGER trg_1;
3981UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3982f_int2 = CAST(f_char1 AS SIGNED INT),
3983f_charbig = 'just inserted'
3984   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3985DELETE FROM t0_aux
3986WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3987INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3988SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3989'just inserted' FROM t0_template
3990WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3991CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
3992BEGIN
3993UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3994f_charbig = 'updated by trigger'
3995      WHERE f_int1 = - old.f_int1;
3996END|
3997UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
3998WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3999
4000# check trigger-4 success: 	1
4001DROP TRIGGER trg_1;
4002UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4003f_int2 = CAST(f_char1 AS SIGNED INT),
4004f_charbig = 'just inserted'
4005   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4006DELETE FROM t0_aux
4007WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4008INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4009SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4010'just inserted' FROM t0_template
4011WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4012CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
4013BEGIN
4014UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4015f_charbig = 'updated by trigger'
4016      WHERE f_int1 = new.f_int1;
4017END|
4018UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
4019WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4020
4021# check trigger-5 success: 	1
4022DROP TRIGGER trg_1;
4023UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4024f_int2 = CAST(f_char1 AS SIGNED INT),
4025f_charbig = 'just inserted'
4026   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4027DELETE FROM t0_aux
4028WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4029INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4030SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4031'just inserted' FROM t0_template
4032WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4033CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
4034BEGIN
4035UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4036f_charbig = 'updated by trigger'
4037      WHERE f_int1 = - old.f_int1;
4038END|
4039UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
4040WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4041
4042# check trigger-6 success: 	1
4043DROP TRIGGER trg_1;
4044UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4045f_int2 = CAST(f_char1 AS SIGNED INT),
4046f_charbig = 'just inserted'
4047   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4048DELETE FROM t0_aux
4049WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4050INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4051SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4052'just inserted' FROM t0_template
4053WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4054CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
4055BEGIN
4056UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4057f_charbig = 'updated by trigger'
4058      WHERE f_int1 = - old.f_int1;
4059END|
4060DELETE FROM t0_aux
4061WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4062
4063# check trigger-7 success: 	1
4064DROP TRIGGER trg_1;
4065UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4066f_int2 = CAST(f_char1 AS SIGNED INT),
4067f_charbig = 'just inserted'
4068   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4069DELETE FROM t0_aux
4070WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4071INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4072SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4073'just inserted' FROM t0_template
4074WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4075CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
4076BEGIN
4077UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4078f_charbig = 'updated by trigger'
4079      WHERE f_int1 = - old.f_int1;
4080END|
4081DELETE FROM t0_aux
4082WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4083
4084# check trigger-8 success: 	1
4085DROP TRIGGER trg_1;
4086UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4087f_int2 = CAST(f_char1 AS SIGNED INT),
4088f_charbig = 'just inserted'
4089   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4090DELETE FROM t0_aux
4091WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4092DELETE FROM t1
4093WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4094CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
4095BEGIN
4096SET new.f_int1 = old.f_int1 + @max_row,
4097new.f_int2 = old.f_int2 - @max_row,
4098new.f_charbig = '####updated per update trigger####';
4099END|
4100UPDATE t1
4101SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
4102f_charbig = '####updated per update statement itself####';
4103Warnings:
4104Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
4105
4106# check trigger-9 success: 	1
4107DROP TRIGGER trg_2;
4108UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4109f_int2 = CAST(f_char1 AS SIGNED INT),
4110f_charbig = CONCAT('===',f_char1,'===');
4111Warnings:
4112Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
4113CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
4114BEGIN
4115SET new.f_int1 = new.f_int1 + @max_row,
4116new.f_int2 = new.f_int2 - @max_row,
4117new.f_charbig = '####updated per update trigger####';
4118END|
4119UPDATE t1
4120SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
4121f_charbig = '####updated per update statement itself####';
4122Warnings:
4123Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
4124
4125# check trigger-10 success: 	1
4126DROP TRIGGER trg_2;
4127UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4128f_int2 = CAST(f_char1 AS SIGNED INT),
4129f_charbig = CONCAT('===',f_char1,'===');
4130Warnings:
4131Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
4132CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
4133BEGIN
4134SET new.f_int1 = @my_max1 + @counter,
4135new.f_int2 = @my_min2 - @counter,
4136new.f_charbig = '####updated per insert trigger####';
4137SET @counter = @counter + 1;
4138END|
4139SET @counter = 1;
4140SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
4141Warnings:
4142Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
4143INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4144SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
4145CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
4146WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
4147ORDER BY f_int1;
4148DROP TRIGGER trg_3;
4149
4150# check trigger-11 success: 	1
4151Warnings:
4152Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
4153DELETE FROM t1
4154WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
4155AND f_int2 <> CAST(f_char1 AS SIGNED INT)
4156AND f_charbig = '####updated per insert trigger####';
4157CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
4158BEGIN
4159SET new.f_int1 = @my_max1 + @counter,
4160new.f_int2 = @my_min2 - @counter,
4161new.f_charbig = '####updated per insert trigger####';
4162SET @counter = @counter + 1;
4163END|
4164SET @counter = 1;
4165SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
4166Warnings:
4167Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
4168INSERT INTO t1 (f_char1, f_char2, f_charbig)
4169SELECT CAST(f_int1 AS CHAR),
4170CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
4171WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
4172ORDER BY f_int1;
4173DROP TRIGGER trg_3;
4174
4175# check trigger-12 success: 	1
4176Warnings:
4177Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
4178DELETE FROM t1
4179WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
4180AND f_int2 <> CAST(f_char1 AS SIGNED INT)
4181AND f_charbig = '####updated per insert trigger####';
4182ANALYZE  TABLE t1;
4183Table	Op	Msg_type	Msg_text
4184test.t1	analyze	status	OK
4185test.t1	analyze	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
4186CHECK    TABLE t1 EXTENDED;
4187Table	Op	Msg_type	Msg_text
4188test.t1	check	status	OK
4189test.t1	check	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
4190CHECKSUM TABLE t1 EXTENDED;
4191Table	Checksum
4192test.t1	<some_value>
4193OPTIMIZE TABLE t1;
4194Table	Op	Msg_type	Msg_text
4195test.t1	optimize	status	OK
4196test.t1	optimize	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
4197# check layout success:    1
4198REPAIR   TABLE t1 EXTENDED;
4199Table	Op	Msg_type	Msg_text
4200test.t1	repair	status	OK
4201test.t1	repair	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
4202# check layout success:    1
4203TRUNCATE t1;
4204Warnings:
4205Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
4206
4207# check TRUNCATE success: 	1
4208# check layout success:    1
4209# End usability test (inc/partition_check.inc)
4210DROP TABLE t1;
4211#  2.1.3 UNIQUE INDEX exists
4212DROP TABLE IF EXISTS t1;
4213CREATE TABLE t1 (
4214f_int1 INTEGER,
4215f_int2 INTEGER,
4216f_char1 CHAR(20),
4217f_char2 CHAR(20),
4218f_charbig VARCHAR(1000)
4219, UNIQUE INDEX uidx1 (f_int1,f_int2)
4220)
4221PARTITION BY HASH(f_int1) PARTITIONS 2;
4222Warnings:
4223Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
4224INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
4225SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
4226WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
4227Warnings:
4228Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
4229ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
4230Warnings:
4231Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
4232INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
4233SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
4234WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
4235Warnings:
4236Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
4237# Start usability test (inc/partition_check.inc)
4238create_command
4239SHOW CREATE TABLE t1;
4240Table	Create Table
4241t1	CREATE TABLE `t1` (
4242  `f_int1` int(11) DEFAULT NULL,
4243  `f_int2` mediumint(9) DEFAULT NULL,
4244  `f_char1` char(20) DEFAULT NULL,
4245  `f_char2` char(20) DEFAULT NULL,
4246  `f_charbig` varchar(1000) DEFAULT NULL,
4247  UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
4248) ENGINE=MyISAM DEFAULT CHARSET=latin1
4249/*!50100 PARTITION BY HASH (f_int1)
4250PARTITIONS 2 */
4251
4252unified filelist
4253t1#P#p0.MYD
4254t1#P#p0.MYI
4255t1#P#p1.MYD
4256t1#P#p1.MYI
4257t1.frm
4258t1.par
4259
4260# check prerequisites-1 success:    1
4261# check COUNT(*) success:    1
4262# check MIN/MAX(f_int1) success:    1
4263# check MIN/MAX(f_int2) success:    1
4264INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4265SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
4266CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
4267WHERE f_int1 IN (2,3);
4268ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
4269# check prerequisites-3 success:    1
4270# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
4271INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4272SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
4273CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
4274WHERE f_int1 IN (2,3);
4275DELETE FROM t1 WHERE f_charbig = 'delete me';
4276INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4277SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
4278CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
4279WHERE f_int1 IN (2,3);
4280DELETE FROM t1 WHERE f_charbig = 'delete me';
4281# check read via f_int1 success: 1
4282# check read via f_int2 success: 1
4283
4284# check multiple-1 success: 	1
4285DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
4286
4287# check multiple-2 success: 	1
4288INSERT INTO t1 SELECT * FROM t0_template
4289WHERE MOD(f_int1,3) = 0;
4290
4291# check multiple-3 success: 	1
4292UPDATE t1 SET f_int1 = f_int1 + @max_row
4293WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
4294AND @max_row_div2 + @max_row_div4;
4295
4296# check multiple-4 success: 	1
4297DELETE FROM t1
4298WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
4299AND @max_row_div2 + @max_row_div4 + @max_row;
4300
4301# check multiple-5 success: 	1
4302SELECT COUNT(*) INTO @try_count FROM t0_template
4303WHERE MOD(f_int1,3) = 0
4304AND f_int1 BETWEEN @max_row_div2 AND @max_row;
4305SELECT COUNT(*) INTO @clash_count
4306FROM t1 INNER JOIN t0_template USING(f_int1)
4307WHERE MOD(f_int1,3) = 0
4308AND f_int1 BETWEEN @max_row_div2 AND @max_row;
4309SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
4310INSERT INTO t1
4311SET f_int1 = @cur_value , f_int2 = @cur_value,
4312f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
4313f_charbig = '#SINGLE#';
4314
4315# check single-1 success: 	1
4316SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
4317INSERT INTO t1
4318SET f_int1 = @cur_value , f_int2 = @cur_value,
4319f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
4320f_charbig = '#SINGLE#';
4321
4322# check single-2 success: 	1
4323SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
4324SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
4325UPDATE t1 SET f_int1 = @cur_value2
4326WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
4327
4328# check single-3 success: 	1
4329SET @cur_value1= -1;
4330SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
4331UPDATE t1 SET f_int1 = @cur_value1
4332WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
4333
4334# check single-4 success: 	1
4335SELECT MAX(f_int1) INTO @cur_value FROM t1;
4336DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
4337
4338# check single-5 success: 	1
4339DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
4340
4341# check single-6 success: 	1
4342INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
4343Warnings:
4344Warning	1264	Out of range value for column 'f_int2' at row 1
4345
4346# check single-7 success: 	1
4347DELETE FROM t1 WHERE f_charbig = '#2147483647##';
4348DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
4349INSERT t1 SET f_int1 = 0 , f_int2 = 0,
4350f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
4351f_charbig = '#NULL#';
4352INSERT INTO t1
4353SET f_int1 = NULL , f_int2 = -@max_row,
4354f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
4355f_charbig = '#NULL#';
4356# check null success:    1
4357
4358# check null-1 success: 	1
4359UPDATE t1 SET f_int1 = -@max_row
4360WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
4361AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
4362
4363# check null-2 success: 	1
4364UPDATE t1 SET f_int1 = NULL
4365WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
4366AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
4367
4368# check null-3 success: 	1
4369DELETE FROM t1
4370WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
4371AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
4372
4373# check null-4 success: 	1
4374DELETE FROM t1
4375WHERE f_int1 = 0 AND f_int2 = 0
4376AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
4377AND f_charbig = '#NULL#';
4378INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4379SELECT f_int1, f_int1, '', '', 'was inserted'
4380   FROM t0_template source_tab
4381WHERE MOD(f_int1,3) = 0
4382AND f_int1 BETWEEN @max_row_div2 AND @max_row
4383ON DUPLICATE KEY
4384UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
4385f_int2 = 2 * @max_row + source_tab.f_int1,
4386f_charbig = 'was updated';
4387
4388# check unique-1-a success: 	1
4389
4390# check unique-1-b success: 	1
4391DELETE FROM t1 WHERE f_charbig = 'was inserted';
4392UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4393f_int2 = CAST(f_char1 AS SIGNED INT),
4394f_charbig = CONCAT('===',f_char1,'===')
4395WHERE f_charbig = 'was updated';
4396REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4397SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
4398   FROM t0_template source_tab
4399WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
4400
4401# check replace success: 	1
4402DELETE FROM t1
4403WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
4404DELETE FROM t1
4405WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
4406f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
4407UPDATE t1 SET f_int2 = f_int1,
4408f_char1 = CAST(f_int1 AS CHAR),
4409f_char2 = CAST(f_int1 AS CHAR),
4410f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
4411WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
4412SET AUTOCOMMIT= 0;
4413INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4414SELECT f_int1, f_int1, '', '', 'was inserted'
4415FROM t0_template source_tab
4416WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
4417
4418# check transactions-1 success: 	1
4419COMMIT WORK;
4420
4421# check transactions-2 success: 	1
4422ROLLBACK WORK;
4423
4424# check transactions-3 success: 	1
4425DELETE FROM t1 WHERE f_charbig = 'was inserted';
4426COMMIT WORK;
4427ROLLBACK WORK;
4428
4429# check transactions-4 success: 	1
4430INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4431SELECT f_int1, f_int1, '', '', 'was inserted'
4432FROM t0_template source_tab
4433WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
4434
4435# check transactions-5 success: 	1
4436ROLLBACK WORK;
4437Warnings:
4438Warning	1196	Some non-transactional changed tables couldn't be rolled back
4439
4440# check transactions-6 success: 	1
4441# INFO: Storage engine used for t1 seems to be not transactional.
4442COMMIT;
4443
4444# check transactions-7 success: 	1
4445DELETE FROM t1 WHERE f_charbig = 'was inserted';
4446COMMIT WORK;
4447SET @@session.sql_mode = 'traditional';
4448Warnings:
4449Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
4450SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
4451INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4452SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
4453'', '', 'was inserted' FROM t0_template
4454WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
4455ERROR 22012: Division by 0
4456COMMIT;
4457
4458# check transactions-8 success: 	1
4459# INFO: Storage engine used for t1 seems to be unable to revert
4460#       changes made by the failing statement.
4461SET @@session.sql_mode = '';
4462Warnings:
4463Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
4464SET AUTOCOMMIT= 1;
4465DELETE FROM t1 WHERE f_charbig = 'was inserted';
4466COMMIT WORK;
4467UPDATE t1 SET f_charbig = REPEAT('b', 1000);
4468
4469# check special-1 success: 	1
4470UPDATE t1 SET f_charbig = '';
4471
4472# check special-2 success: 	1
4473UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
4474INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
4475SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
4476WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4477INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4478SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4479'just inserted' FROM t0_template
4480WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4481CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
4482BEGIN
4483UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4484f_charbig = 'updated by trigger'
4485      WHERE f_int1 = new.f_int1;
4486END|
4487INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4488SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
4489WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4490
4491# check trigger-1 success: 	1
4492DROP TRIGGER trg_1;
4493UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4494f_int2 = CAST(f_char1 AS SIGNED INT),
4495f_charbig = 'just inserted'
4496   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4497DELETE FROM t0_aux
4498WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4499INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4500SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4501'just inserted' FROM t0_template
4502WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4503CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
4504BEGIN
4505UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4506f_charbig = 'updated by trigger'
4507      WHERE f_int1 = new.f_int1;
4508END|
4509INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4510SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
4511WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4512
4513# check trigger-2 success: 	1
4514DROP TRIGGER trg_1;
4515UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4516f_int2 = CAST(f_char1 AS SIGNED INT),
4517f_charbig = 'just inserted'
4518   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4519DELETE FROM t0_aux
4520WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4521INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4522SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4523'just inserted' FROM t0_template
4524WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4525CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
4526BEGIN
4527UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4528f_charbig = 'updated by trigger'
4529      WHERE f_int1 = new.f_int1;
4530END|
4531UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
4532WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4533
4534# check trigger-3 success: 	1
4535DROP TRIGGER trg_1;
4536UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4537f_int2 = CAST(f_char1 AS SIGNED INT),
4538f_charbig = 'just inserted'
4539   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4540DELETE FROM t0_aux
4541WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4542INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4543SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4544'just inserted' FROM t0_template
4545WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4546CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
4547BEGIN
4548UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4549f_charbig = 'updated by trigger'
4550      WHERE f_int1 = - old.f_int1;
4551END|
4552UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
4553WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4554
4555# check trigger-4 success: 	1
4556DROP TRIGGER trg_1;
4557UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4558f_int2 = CAST(f_char1 AS SIGNED INT),
4559f_charbig = 'just inserted'
4560   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4561DELETE FROM t0_aux
4562WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4563INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4564SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4565'just inserted' FROM t0_template
4566WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4567CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
4568BEGIN
4569UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4570f_charbig = 'updated by trigger'
4571      WHERE f_int1 = new.f_int1;
4572END|
4573UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
4574WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4575
4576# check trigger-5 success: 	1
4577DROP TRIGGER trg_1;
4578UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4579f_int2 = CAST(f_char1 AS SIGNED INT),
4580f_charbig = 'just inserted'
4581   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4582DELETE FROM t0_aux
4583WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4584INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4585SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4586'just inserted' FROM t0_template
4587WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4588CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
4589BEGIN
4590UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4591f_charbig = 'updated by trigger'
4592      WHERE f_int1 = - old.f_int1;
4593END|
4594UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
4595WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4596
4597# check trigger-6 success: 	1
4598DROP TRIGGER trg_1;
4599UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4600f_int2 = CAST(f_char1 AS SIGNED INT),
4601f_charbig = 'just inserted'
4602   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4603DELETE FROM t0_aux
4604WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4605INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4606SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4607'just inserted' FROM t0_template
4608WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4609CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
4610BEGIN
4611UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4612f_charbig = 'updated by trigger'
4613      WHERE f_int1 = - old.f_int1;
4614END|
4615DELETE FROM t0_aux
4616WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4617
4618# check trigger-7 success: 	1
4619DROP TRIGGER trg_1;
4620UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4621f_int2 = CAST(f_char1 AS SIGNED INT),
4622f_charbig = 'just inserted'
4623   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4624DELETE FROM t0_aux
4625WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4626INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4627SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4628'just inserted' FROM t0_template
4629WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4630CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
4631BEGIN
4632UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4633f_charbig = 'updated by trigger'
4634      WHERE f_int1 = - old.f_int1;
4635END|
4636DELETE FROM t0_aux
4637WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4638
4639# check trigger-8 success: 	1
4640DROP TRIGGER trg_1;
4641UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4642f_int2 = CAST(f_char1 AS SIGNED INT),
4643f_charbig = 'just inserted'
4644   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4645DELETE FROM t0_aux
4646WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4647DELETE FROM t1
4648WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4649CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
4650BEGIN
4651SET new.f_int1 = old.f_int1 + @max_row,
4652new.f_int2 = old.f_int2 - @max_row,
4653new.f_charbig = '####updated per update trigger####';
4654END|
4655UPDATE t1
4656SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
4657f_charbig = '####updated per update statement itself####';
4658Warnings:
4659Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
4660
4661# check trigger-9 success: 	1
4662DROP TRIGGER trg_2;
4663UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4664f_int2 = CAST(f_char1 AS SIGNED INT),
4665f_charbig = CONCAT('===',f_char1,'===');
4666Warnings:
4667Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
4668CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
4669BEGIN
4670SET new.f_int1 = new.f_int1 + @max_row,
4671new.f_int2 = new.f_int2 - @max_row,
4672new.f_charbig = '####updated per update trigger####';
4673END|
4674UPDATE t1
4675SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
4676f_charbig = '####updated per update statement itself####';
4677Warnings:
4678Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
4679
4680# check trigger-10 success: 	1
4681DROP TRIGGER trg_2;
4682UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4683f_int2 = CAST(f_char1 AS SIGNED INT),
4684f_charbig = CONCAT('===',f_char1,'===');
4685Warnings:
4686Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
4687CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
4688BEGIN
4689SET new.f_int1 = @my_max1 + @counter,
4690new.f_int2 = @my_min2 - @counter,
4691new.f_charbig = '####updated per insert trigger####';
4692SET @counter = @counter + 1;
4693END|
4694SET @counter = 1;
4695SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
4696Warnings:
4697Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
4698INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4699SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
4700CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
4701WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
4702ORDER BY f_int1;
4703DROP TRIGGER trg_3;
4704
4705# check trigger-11 success: 	1
4706Warnings:
4707Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
4708DELETE FROM t1
4709WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
4710AND f_int2 <> CAST(f_char1 AS SIGNED INT)
4711AND f_charbig = '####updated per insert trigger####';
4712CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
4713BEGIN
4714SET new.f_int1 = @my_max1 + @counter,
4715new.f_int2 = @my_min2 - @counter,
4716new.f_charbig = '####updated per insert trigger####';
4717SET @counter = @counter + 1;
4718END|
4719SET @counter = 1;
4720SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
4721Warnings:
4722Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
4723INSERT INTO t1 (f_char1, f_char2, f_charbig)
4724SELECT CAST(f_int1 AS CHAR),
4725CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
4726WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
4727ORDER BY f_int1;
4728DROP TRIGGER trg_3;
4729
4730# check trigger-12 success: 	1
4731Warnings:
4732Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
4733DELETE FROM t1
4734WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
4735AND f_int2 <> CAST(f_char1 AS SIGNED INT)
4736AND f_charbig = '####updated per insert trigger####';
4737ANALYZE  TABLE t1;
4738Table	Op	Msg_type	Msg_text
4739test.t1	analyze	status	OK
4740test.t1	analyze	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
4741CHECK    TABLE t1 EXTENDED;
4742Table	Op	Msg_type	Msg_text
4743test.t1	check	status	OK
4744test.t1	check	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
4745CHECKSUM TABLE t1 EXTENDED;
4746Table	Checksum
4747test.t1	<some_value>
4748OPTIMIZE TABLE t1;
4749Table	Op	Msg_type	Msg_text
4750test.t1	optimize	status	OK
4751test.t1	optimize	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
4752# check layout success:    1
4753REPAIR   TABLE t1 EXTENDED;
4754Table	Op	Msg_type	Msg_text
4755test.t1	repair	status	OK
4756test.t1	repair	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
4757# check layout success:    1
4758TRUNCATE t1;
4759Warnings:
4760Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
4761
4762# check TRUNCATE success: 	1
4763# check layout success:    1
4764# End usability test (inc/partition_check.inc)
4765DROP TABLE t1;
4766CREATE TABLE t1 (
4767f_int1 INTEGER,
4768f_int2 INTEGER,
4769f_char1 CHAR(20),
4770f_char2 CHAR(20),
4771f_charbig VARCHAR(1000)
4772, UNIQUE INDEX uidx1 (f_int1,f_int2)
4773)
4774PARTITION BY KEY(f_int1) PARTITIONS 5;
4775Warnings:
4776Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
4777INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
4778SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
4779WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
4780Warnings:
4781Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
4782ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
4783Warnings:
4784Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
4785INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
4786SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
4787WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
4788Warnings:
4789Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
4790# Start usability test (inc/partition_check.inc)
4791create_command
4792SHOW CREATE TABLE t1;
4793Table	Create Table
4794t1	CREATE TABLE `t1` (
4795  `f_int1` int(11) DEFAULT NULL,
4796  `f_int2` mediumint(9) DEFAULT NULL,
4797  `f_char1` char(20) DEFAULT NULL,
4798  `f_char2` char(20) DEFAULT NULL,
4799  `f_charbig` varchar(1000) DEFAULT NULL,
4800  UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
4801) ENGINE=MyISAM DEFAULT CHARSET=latin1
4802/*!50100 PARTITION BY KEY (f_int1)
4803PARTITIONS 5 */
4804
4805unified filelist
4806t1#P#p0.MYD
4807t1#P#p0.MYI
4808t1#P#p1.MYD
4809t1#P#p1.MYI
4810t1#P#p2.MYD
4811t1#P#p2.MYI
4812t1#P#p3.MYD
4813t1#P#p3.MYI
4814t1#P#p4.MYD
4815t1#P#p4.MYI
4816t1.frm
4817t1.par
4818
4819# check prerequisites-1 success:    1
4820# check COUNT(*) success:    1
4821# check MIN/MAX(f_int1) success:    1
4822# check MIN/MAX(f_int2) success:    1
4823INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4824SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
4825CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
4826WHERE f_int1 IN (2,3);
4827ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
4828# check prerequisites-3 success:    1
4829# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
4830INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4831SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
4832CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
4833WHERE f_int1 IN (2,3);
4834DELETE FROM t1 WHERE f_charbig = 'delete me';
4835INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4836SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
4837CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
4838WHERE f_int1 IN (2,3);
4839DELETE FROM t1 WHERE f_charbig = 'delete me';
4840# check read via f_int1 success: 1
4841# check read via f_int2 success: 1
4842
4843# check multiple-1 success: 	1
4844DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
4845
4846# check multiple-2 success: 	1
4847INSERT INTO t1 SELECT * FROM t0_template
4848WHERE MOD(f_int1,3) = 0;
4849
4850# check multiple-3 success: 	1
4851UPDATE t1 SET f_int1 = f_int1 + @max_row
4852WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
4853AND @max_row_div2 + @max_row_div4;
4854
4855# check multiple-4 success: 	1
4856DELETE FROM t1
4857WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
4858AND @max_row_div2 + @max_row_div4 + @max_row;
4859
4860# check multiple-5 success: 	1
4861SELECT COUNT(*) INTO @try_count FROM t0_template
4862WHERE MOD(f_int1,3) = 0
4863AND f_int1 BETWEEN @max_row_div2 AND @max_row;
4864SELECT COUNT(*) INTO @clash_count
4865FROM t1 INNER JOIN t0_template USING(f_int1)
4866WHERE MOD(f_int1,3) = 0
4867AND f_int1 BETWEEN @max_row_div2 AND @max_row;
4868SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
4869INSERT INTO t1
4870SET f_int1 = @cur_value , f_int2 = @cur_value,
4871f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
4872f_charbig = '#SINGLE#';
4873
4874# check single-1 success: 	1
4875SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
4876INSERT INTO t1
4877SET f_int1 = @cur_value , f_int2 = @cur_value,
4878f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
4879f_charbig = '#SINGLE#';
4880
4881# check single-2 success: 	1
4882SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
4883SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
4884UPDATE t1 SET f_int1 = @cur_value2
4885WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
4886
4887# check single-3 success: 	1
4888SET @cur_value1= -1;
4889SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
4890UPDATE t1 SET f_int1 = @cur_value1
4891WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
4892
4893# check single-4 success: 	1
4894SELECT MAX(f_int1) INTO @cur_value FROM t1;
4895DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
4896
4897# check single-5 success: 	1
4898DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
4899
4900# check single-6 success: 	1
4901INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
4902Warnings:
4903Warning	1264	Out of range value for column 'f_int2' at row 1
4904
4905# check single-7 success: 	1
4906DELETE FROM t1 WHERE f_charbig = '#2147483647##';
4907DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
4908INSERT t1 SET f_int1 = 0 , f_int2 = 0,
4909f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
4910f_charbig = '#NULL#';
4911INSERT INTO t1
4912SET f_int1 = NULL , f_int2 = -@max_row,
4913f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
4914f_charbig = '#NULL#';
4915# check null success:    1
4916
4917# check null-1 success: 	1
4918UPDATE t1 SET f_int1 = -@max_row
4919WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
4920AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
4921
4922# check null-2 success: 	1
4923UPDATE t1 SET f_int1 = NULL
4924WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
4925AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
4926
4927# check null-3 success: 	1
4928DELETE FROM t1
4929WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
4930AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
4931
4932# check null-4 success: 	1
4933DELETE FROM t1
4934WHERE f_int1 = 0 AND f_int2 = 0
4935AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
4936AND f_charbig = '#NULL#';
4937INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4938SELECT f_int1, f_int1, '', '', 'was inserted'
4939   FROM t0_template source_tab
4940WHERE MOD(f_int1,3) = 0
4941AND f_int1 BETWEEN @max_row_div2 AND @max_row
4942ON DUPLICATE KEY
4943UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
4944f_int2 = 2 * @max_row + source_tab.f_int1,
4945f_charbig = 'was updated';
4946
4947# check unique-1-a success: 	1
4948
4949# check unique-1-b success: 	1
4950DELETE FROM t1 WHERE f_charbig = 'was inserted';
4951UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4952f_int2 = CAST(f_char1 AS SIGNED INT),
4953f_charbig = CONCAT('===',f_char1,'===')
4954WHERE f_charbig = 'was updated';
4955REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4956SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
4957   FROM t0_template source_tab
4958WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
4959
4960# check replace success: 	1
4961DELETE FROM t1
4962WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
4963DELETE FROM t1
4964WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
4965f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
4966UPDATE t1 SET f_int2 = f_int1,
4967f_char1 = CAST(f_int1 AS CHAR),
4968f_char2 = CAST(f_int1 AS CHAR),
4969f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
4970WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
4971SET AUTOCOMMIT= 0;
4972INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4973SELECT f_int1, f_int1, '', '', 'was inserted'
4974FROM t0_template source_tab
4975WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
4976
4977# check transactions-1 success: 	1
4978COMMIT WORK;
4979
4980# check transactions-2 success: 	1
4981ROLLBACK WORK;
4982
4983# check transactions-3 success: 	1
4984DELETE FROM t1 WHERE f_charbig = 'was inserted';
4985COMMIT WORK;
4986ROLLBACK WORK;
4987
4988# check transactions-4 success: 	1
4989INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4990SELECT f_int1, f_int1, '', '', 'was inserted'
4991FROM t0_template source_tab
4992WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
4993
4994# check transactions-5 success: 	1
4995ROLLBACK WORK;
4996Warnings:
4997Warning	1196	Some non-transactional changed tables couldn't be rolled back
4998
4999# check transactions-6 success: 	1
5000# INFO: Storage engine used for t1 seems to be not transactional.
5001COMMIT;
5002
5003# check transactions-7 success: 	1
5004DELETE FROM t1 WHERE f_charbig = 'was inserted';
5005COMMIT WORK;
5006SET @@session.sql_mode = 'traditional';
5007Warnings:
5008Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
5009SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
5010INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5011SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
5012'', '', 'was inserted' FROM t0_template
5013WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
5014ERROR 22012: Division by 0
5015COMMIT;
5016
5017# check transactions-8 success: 	1
5018# INFO: Storage engine used for t1 seems to be unable to revert
5019#       changes made by the failing statement.
5020SET @@session.sql_mode = '';
5021Warnings:
5022Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
5023SET AUTOCOMMIT= 1;
5024DELETE FROM t1 WHERE f_charbig = 'was inserted';
5025COMMIT WORK;
5026UPDATE t1 SET f_charbig = REPEAT('b', 1000);
5027
5028# check special-1 success: 	1
5029UPDATE t1 SET f_charbig = '';
5030
5031# check special-2 success: 	1
5032UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
5033INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
5034SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
5035WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5036INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5037SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5038'just inserted' FROM t0_template
5039WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5040CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
5041BEGIN
5042UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5043f_charbig = 'updated by trigger'
5044      WHERE f_int1 = new.f_int1;
5045END|
5046INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5047SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
5048WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5049
5050# check trigger-1 success: 	1
5051DROP TRIGGER trg_1;
5052UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5053f_int2 = CAST(f_char1 AS SIGNED INT),
5054f_charbig = 'just inserted'
5055   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5056DELETE FROM t0_aux
5057WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5058INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5059SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5060'just inserted' FROM t0_template
5061WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5062CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
5063BEGIN
5064UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5065f_charbig = 'updated by trigger'
5066      WHERE f_int1 = new.f_int1;
5067END|
5068INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5069SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
5070WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5071
5072# check trigger-2 success: 	1
5073DROP TRIGGER trg_1;
5074UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5075f_int2 = CAST(f_char1 AS SIGNED INT),
5076f_charbig = 'just inserted'
5077   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5078DELETE FROM t0_aux
5079WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5080INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5081SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5082'just inserted' FROM t0_template
5083WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5084CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
5085BEGIN
5086UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5087f_charbig = 'updated by trigger'
5088      WHERE f_int1 = new.f_int1;
5089END|
5090UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
5091WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5092
5093# check trigger-3 success: 	1
5094DROP TRIGGER trg_1;
5095UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5096f_int2 = CAST(f_char1 AS SIGNED INT),
5097f_charbig = 'just inserted'
5098   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5099DELETE FROM t0_aux
5100WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5101INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5102SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5103'just inserted' FROM t0_template
5104WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5105CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
5106BEGIN
5107UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5108f_charbig = 'updated by trigger'
5109      WHERE f_int1 = - old.f_int1;
5110END|
5111UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
5112WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5113
5114# check trigger-4 success: 	1
5115DROP TRIGGER trg_1;
5116UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5117f_int2 = CAST(f_char1 AS SIGNED INT),
5118f_charbig = 'just inserted'
5119   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5120DELETE FROM t0_aux
5121WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5122INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5123SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5124'just inserted' FROM t0_template
5125WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5126CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
5127BEGIN
5128UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5129f_charbig = 'updated by trigger'
5130      WHERE f_int1 = new.f_int1;
5131END|
5132UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
5133WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5134
5135# check trigger-5 success: 	1
5136DROP TRIGGER trg_1;
5137UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5138f_int2 = CAST(f_char1 AS SIGNED INT),
5139f_charbig = 'just inserted'
5140   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5141DELETE FROM t0_aux
5142WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5143INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5144SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5145'just inserted' FROM t0_template
5146WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5147CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
5148BEGIN
5149UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5150f_charbig = 'updated by trigger'
5151      WHERE f_int1 = - old.f_int1;
5152END|
5153UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
5154WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5155
5156# check trigger-6 success: 	1
5157DROP TRIGGER trg_1;
5158UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5159f_int2 = CAST(f_char1 AS SIGNED INT),
5160f_charbig = 'just inserted'
5161   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5162DELETE FROM t0_aux
5163WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5164INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5165SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5166'just inserted' FROM t0_template
5167WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5168CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
5169BEGIN
5170UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5171f_charbig = 'updated by trigger'
5172      WHERE f_int1 = - old.f_int1;
5173END|
5174DELETE FROM t0_aux
5175WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5176
5177# check trigger-7 success: 	1
5178DROP TRIGGER trg_1;
5179UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5180f_int2 = CAST(f_char1 AS SIGNED INT),
5181f_charbig = 'just inserted'
5182   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5183DELETE FROM t0_aux
5184WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5185INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5186SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5187'just inserted' FROM t0_template
5188WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5189CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
5190BEGIN
5191UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5192f_charbig = 'updated by trigger'
5193      WHERE f_int1 = - old.f_int1;
5194END|
5195DELETE FROM t0_aux
5196WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5197
5198# check trigger-8 success: 	1
5199DROP TRIGGER trg_1;
5200UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5201f_int2 = CAST(f_char1 AS SIGNED INT),
5202f_charbig = 'just inserted'
5203   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5204DELETE FROM t0_aux
5205WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5206DELETE FROM t1
5207WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5208CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
5209BEGIN
5210SET new.f_int1 = old.f_int1 + @max_row,
5211new.f_int2 = old.f_int2 - @max_row,
5212new.f_charbig = '####updated per update trigger####';
5213END|
5214UPDATE t1
5215SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
5216f_charbig = '####updated per update statement itself####';
5217Warnings:
5218Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
5219
5220# check trigger-9 success: 	1
5221DROP TRIGGER trg_2;
5222UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5223f_int2 = CAST(f_char1 AS SIGNED INT),
5224f_charbig = CONCAT('===',f_char1,'===');
5225Warnings:
5226Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
5227CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
5228BEGIN
5229SET new.f_int1 = new.f_int1 + @max_row,
5230new.f_int2 = new.f_int2 - @max_row,
5231new.f_charbig = '####updated per update trigger####';
5232END|
5233UPDATE t1
5234SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
5235f_charbig = '####updated per update statement itself####';
5236Warnings:
5237Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
5238
5239# check trigger-10 success: 	1
5240DROP TRIGGER trg_2;
5241UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5242f_int2 = CAST(f_char1 AS SIGNED INT),
5243f_charbig = CONCAT('===',f_char1,'===');
5244Warnings:
5245Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
5246CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
5247BEGIN
5248SET new.f_int1 = @my_max1 + @counter,
5249new.f_int2 = @my_min2 - @counter,
5250new.f_charbig = '####updated per insert trigger####';
5251SET @counter = @counter + 1;
5252END|
5253SET @counter = 1;
5254SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
5255Warnings:
5256Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
5257INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5258SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
5259CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
5260WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
5261ORDER BY f_int1;
5262DROP TRIGGER trg_3;
5263
5264# check trigger-11 success: 	1
5265Warnings:
5266Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
5267DELETE FROM t1
5268WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
5269AND f_int2 <> CAST(f_char1 AS SIGNED INT)
5270AND f_charbig = '####updated per insert trigger####';
5271CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
5272BEGIN
5273SET new.f_int1 = @my_max1 + @counter,
5274new.f_int2 = @my_min2 - @counter,
5275new.f_charbig = '####updated per insert trigger####';
5276SET @counter = @counter + 1;
5277END|
5278SET @counter = 1;
5279SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
5280Warnings:
5281Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
5282INSERT INTO t1 (f_char1, f_char2, f_charbig)
5283SELECT CAST(f_int1 AS CHAR),
5284CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
5285WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
5286ORDER BY f_int1;
5287DROP TRIGGER trg_3;
5288
5289# check trigger-12 success: 	1
5290Warnings:
5291Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
5292DELETE FROM t1
5293WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
5294AND f_int2 <> CAST(f_char1 AS SIGNED INT)
5295AND f_charbig = '####updated per insert trigger####';
5296ANALYZE  TABLE t1;
5297Table	Op	Msg_type	Msg_text
5298test.t1	analyze	status	OK
5299test.t1	analyze	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
5300CHECK    TABLE t1 EXTENDED;
5301Table	Op	Msg_type	Msg_text
5302test.t1	check	status	OK
5303test.t1	check	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
5304CHECKSUM TABLE t1 EXTENDED;
5305Table	Checksum
5306test.t1	<some_value>
5307OPTIMIZE TABLE t1;
5308Table	Op	Msg_type	Msg_text
5309test.t1	optimize	status	OK
5310test.t1	optimize	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
5311# check layout success:    1
5312REPAIR   TABLE t1 EXTENDED;
5313Table	Op	Msg_type	Msg_text
5314test.t1	repair	status	OK
5315test.t1	repair	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
5316# check layout success:    1
5317TRUNCATE t1;
5318Warnings:
5319Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
5320
5321# check TRUNCATE success: 	1
5322# check layout success:    1
5323# End usability test (inc/partition_check.inc)
5324DROP TABLE t1;
5325CREATE TABLE t1 (
5326f_int1 INTEGER,
5327f_int2 INTEGER,
5328f_char1 CHAR(20),
5329f_char2 CHAR(20),
5330f_charbig VARCHAR(1000)
5331, UNIQUE INDEX uidx1 (f_int1,f_int2)
5332)
5333PARTITION BY LIST(MOD(f_int1,4))
5334(PARTITION part_3 VALUES IN (-3),
5335PARTITION part_2 VALUES IN (-2),
5336PARTITION part_1 VALUES IN (-1),
5337PARTITION part_N VALUES IN (NULL),
5338PARTITION part0 VALUES IN (0),
5339PARTITION part1 VALUES IN (1),
5340PARTITION part2 VALUES IN (2),
5341PARTITION part3 VALUES IN (3));
5342Warnings:
5343Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
5344INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
5345SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
5346WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
5347Warnings:
5348Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
5349ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
5350Warnings:
5351Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
5352INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
5353SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
5354WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
5355Warnings:
5356Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
5357# Start usability test (inc/partition_check.inc)
5358create_command
5359SHOW CREATE TABLE t1;
5360Table	Create Table
5361t1	CREATE TABLE `t1` (
5362  `f_int1` int(11) DEFAULT NULL,
5363  `f_int2` mediumint(9) DEFAULT NULL,
5364  `f_char1` char(20) DEFAULT NULL,
5365  `f_char2` char(20) DEFAULT NULL,
5366  `f_charbig` varchar(1000) DEFAULT NULL,
5367  UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
5368) ENGINE=MyISAM DEFAULT CHARSET=latin1
5369/*!50100 PARTITION BY LIST (MOD(f_int1,4))
5370(PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM,
5371 PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM,
5372 PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM,
5373 PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM,
5374 PARTITION part0 VALUES IN (0) ENGINE = MyISAM,
5375 PARTITION part1 VALUES IN (1) ENGINE = MyISAM,
5376 PARTITION part2 VALUES IN (2) ENGINE = MyISAM,
5377 PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */
5378
5379unified filelist
5380t1#P#part0.MYD
5381t1#P#part0.MYI
5382t1#P#part1.MYD
5383t1#P#part1.MYI
5384t1#P#part2.MYD
5385t1#P#part2.MYI
5386t1#P#part3.MYD
5387t1#P#part3.MYI
5388t1#P#part_1.MYD
5389t1#P#part_1.MYI
5390t1#P#part_2.MYD
5391t1#P#part_2.MYI
5392t1#P#part_3.MYD
5393t1#P#part_3.MYI
5394t1#P#part_N.MYD
5395t1#P#part_N.MYI
5396t1.frm
5397t1.par
5398
5399# check prerequisites-1 success:    1
5400# check COUNT(*) success:    1
5401# check MIN/MAX(f_int1) success:    1
5402# check MIN/MAX(f_int2) success:    1
5403INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5404SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
5405CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
5406WHERE f_int1 IN (2,3);
5407ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
5408# check prerequisites-3 success:    1
5409# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
5410INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5411SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
5412CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
5413WHERE f_int1 IN (2,3);
5414DELETE FROM t1 WHERE f_charbig = 'delete me';
5415INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5416SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
5417CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
5418WHERE f_int1 IN (2,3);
5419DELETE FROM t1 WHERE f_charbig = 'delete me';
5420# check read via f_int1 success: 1
5421# check read via f_int2 success: 1
5422
5423# check multiple-1 success: 	1
5424DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
5425
5426# check multiple-2 success: 	1
5427INSERT INTO t1 SELECT * FROM t0_template
5428WHERE MOD(f_int1,3) = 0;
5429
5430# check multiple-3 success: 	1
5431UPDATE t1 SET f_int1 = f_int1 + @max_row
5432WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
5433AND @max_row_div2 + @max_row_div4;
5434
5435# check multiple-4 success: 	1
5436DELETE FROM t1
5437WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
5438AND @max_row_div2 + @max_row_div4 + @max_row;
5439
5440# check multiple-5 success: 	1
5441SELECT COUNT(*) INTO @try_count FROM t0_template
5442WHERE MOD(f_int1,3) = 0
5443AND f_int1 BETWEEN @max_row_div2 AND @max_row;
5444SELECT COUNT(*) INTO @clash_count
5445FROM t1 INNER JOIN t0_template USING(f_int1)
5446WHERE MOD(f_int1,3) = 0
5447AND f_int1 BETWEEN @max_row_div2 AND @max_row;
5448SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
5449INSERT INTO t1
5450SET f_int1 = @cur_value , f_int2 = @cur_value,
5451f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
5452f_charbig = '#SINGLE#';
5453
5454# check single-1 success: 	1
5455SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
5456INSERT INTO t1
5457SET f_int1 = @cur_value , f_int2 = @cur_value,
5458f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
5459f_charbig = '#SINGLE#';
5460
5461# check single-2 success: 	1
5462SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
5463SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
5464UPDATE t1 SET f_int1 = @cur_value2
5465WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
5466
5467# check single-3 success: 	1
5468SET @cur_value1= -1;
5469SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
5470UPDATE t1 SET f_int1 = @cur_value1
5471WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
5472
5473# check single-4 success: 	1
5474SELECT MAX(f_int1) INTO @cur_value FROM t1;
5475DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
5476
5477# check single-5 success: 	1
5478DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
5479
5480# check single-6 success: 	1
5481INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
5482Warnings:
5483Warning	1264	Out of range value for column 'f_int2' at row 1
5484
5485# check single-7 success: 	1
5486DELETE FROM t1 WHERE f_charbig = '#2147483647##';
5487DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
5488INSERT t1 SET f_int1 = 0 , f_int2 = 0,
5489f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
5490f_charbig = '#NULL#';
5491INSERT INTO t1
5492SET f_int1 = NULL , f_int2 = -@max_row,
5493f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
5494f_charbig = '#NULL#';
5495# check null success:    1
5496
5497# check null-1 success: 	1
5498UPDATE t1 SET f_int1 = -@max_row
5499WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
5500AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
5501
5502# check null-2 success: 	1
5503UPDATE t1 SET f_int1 = NULL
5504WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
5505AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
5506
5507# check null-3 success: 	1
5508DELETE FROM t1
5509WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
5510AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
5511
5512# check null-4 success: 	1
5513DELETE FROM t1
5514WHERE f_int1 = 0 AND f_int2 = 0
5515AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
5516AND f_charbig = '#NULL#';
5517INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5518SELECT f_int1, f_int1, '', '', 'was inserted'
5519   FROM t0_template source_tab
5520WHERE MOD(f_int1,3) = 0
5521AND f_int1 BETWEEN @max_row_div2 AND @max_row
5522ON DUPLICATE KEY
5523UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
5524f_int2 = 2 * @max_row + source_tab.f_int1,
5525f_charbig = 'was updated';
5526
5527# check unique-1-a success: 	1
5528
5529# check unique-1-b success: 	1
5530DELETE FROM t1 WHERE f_charbig = 'was inserted';
5531UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5532f_int2 = CAST(f_char1 AS SIGNED INT),
5533f_charbig = CONCAT('===',f_char1,'===')
5534WHERE f_charbig = 'was updated';
5535REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5536SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
5537   FROM t0_template source_tab
5538WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
5539
5540# check replace success: 	1
5541DELETE FROM t1
5542WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
5543DELETE FROM t1
5544WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
5545f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
5546UPDATE t1 SET f_int2 = f_int1,
5547f_char1 = CAST(f_int1 AS CHAR),
5548f_char2 = CAST(f_int1 AS CHAR),
5549f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
5550WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
5551SET AUTOCOMMIT= 0;
5552INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5553SELECT f_int1, f_int1, '', '', 'was inserted'
5554FROM t0_template source_tab
5555WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
5556
5557# check transactions-1 success: 	1
5558COMMIT WORK;
5559
5560# check transactions-2 success: 	1
5561ROLLBACK WORK;
5562
5563# check transactions-3 success: 	1
5564DELETE FROM t1 WHERE f_charbig = 'was inserted';
5565COMMIT WORK;
5566ROLLBACK WORK;
5567
5568# check transactions-4 success: 	1
5569INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5570SELECT f_int1, f_int1, '', '', 'was inserted'
5571FROM t0_template source_tab
5572WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
5573
5574# check transactions-5 success: 	1
5575ROLLBACK WORK;
5576Warnings:
5577Warning	1196	Some non-transactional changed tables couldn't be rolled back
5578
5579# check transactions-6 success: 	1
5580# INFO: Storage engine used for t1 seems to be not transactional.
5581COMMIT;
5582
5583# check transactions-7 success: 	1
5584DELETE FROM t1 WHERE f_charbig = 'was inserted';
5585COMMIT WORK;
5586SET @@session.sql_mode = 'traditional';
5587Warnings:
5588Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
5589SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
5590INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5591SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
5592'', '', 'was inserted' FROM t0_template
5593WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
5594ERROR 22012: Division by 0
5595COMMIT;
5596
5597# check transactions-8 success: 	1
5598# INFO: Storage engine used for t1 seems to be unable to revert
5599#       changes made by the failing statement.
5600SET @@session.sql_mode = '';
5601Warnings:
5602Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
5603SET AUTOCOMMIT= 1;
5604DELETE FROM t1 WHERE f_charbig = 'was inserted';
5605COMMIT WORK;
5606UPDATE t1 SET f_charbig = REPEAT('b', 1000);
5607
5608# check special-1 success: 	1
5609UPDATE t1 SET f_charbig = '';
5610
5611# check special-2 success: 	1
5612UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
5613INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
5614SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
5615WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5616INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5617SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5618'just inserted' FROM t0_template
5619WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5620CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
5621BEGIN
5622UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5623f_charbig = 'updated by trigger'
5624      WHERE f_int1 = new.f_int1;
5625END|
5626INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5627SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
5628WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5629
5630# check trigger-1 success: 	1
5631DROP TRIGGER trg_1;
5632UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5633f_int2 = CAST(f_char1 AS SIGNED INT),
5634f_charbig = 'just inserted'
5635   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5636DELETE FROM t0_aux
5637WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5638INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5639SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5640'just inserted' FROM t0_template
5641WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5642CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
5643BEGIN
5644UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5645f_charbig = 'updated by trigger'
5646      WHERE f_int1 = new.f_int1;
5647END|
5648INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5649SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
5650WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5651
5652# check trigger-2 success: 	1
5653DROP TRIGGER trg_1;
5654UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5655f_int2 = CAST(f_char1 AS SIGNED INT),
5656f_charbig = 'just inserted'
5657   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5658DELETE FROM t0_aux
5659WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5660INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5661SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5662'just inserted' FROM t0_template
5663WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5664CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
5665BEGIN
5666UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5667f_charbig = 'updated by trigger'
5668      WHERE f_int1 = new.f_int1;
5669END|
5670UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
5671WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5672
5673# check trigger-3 success: 	1
5674DROP TRIGGER trg_1;
5675UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5676f_int2 = CAST(f_char1 AS SIGNED INT),
5677f_charbig = 'just inserted'
5678   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5679DELETE FROM t0_aux
5680WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5681INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5682SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5683'just inserted' FROM t0_template
5684WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5685CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
5686BEGIN
5687UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5688f_charbig = 'updated by trigger'
5689      WHERE f_int1 = - old.f_int1;
5690END|
5691UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
5692WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5693
5694# check trigger-4 success: 	1
5695DROP TRIGGER trg_1;
5696UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5697f_int2 = CAST(f_char1 AS SIGNED INT),
5698f_charbig = 'just inserted'
5699   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5700DELETE FROM t0_aux
5701WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5702INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5703SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5704'just inserted' FROM t0_template
5705WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5706CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
5707BEGIN
5708UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5709f_charbig = 'updated by trigger'
5710      WHERE f_int1 = new.f_int1;
5711END|
5712UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
5713WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5714
5715# check trigger-5 success: 	1
5716DROP TRIGGER trg_1;
5717UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5718f_int2 = CAST(f_char1 AS SIGNED INT),
5719f_charbig = 'just inserted'
5720   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5721DELETE FROM t0_aux
5722WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5723INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5724SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5725'just inserted' FROM t0_template
5726WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5727CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
5728BEGIN
5729UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5730f_charbig = 'updated by trigger'
5731      WHERE f_int1 = - old.f_int1;
5732END|
5733UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
5734WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5735
5736# check trigger-6 success: 	1
5737DROP TRIGGER trg_1;
5738UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5739f_int2 = CAST(f_char1 AS SIGNED INT),
5740f_charbig = 'just inserted'
5741   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5742DELETE FROM t0_aux
5743WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5744INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5745SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5746'just inserted' FROM t0_template
5747WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5748CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
5749BEGIN
5750UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5751f_charbig = 'updated by trigger'
5752      WHERE f_int1 = - old.f_int1;
5753END|
5754DELETE FROM t0_aux
5755WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5756
5757# check trigger-7 success: 	1
5758DROP TRIGGER trg_1;
5759UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5760f_int2 = CAST(f_char1 AS SIGNED INT),
5761f_charbig = 'just inserted'
5762   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5763DELETE FROM t0_aux
5764WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5765INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5766SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5767'just inserted' FROM t0_template
5768WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5769CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
5770BEGIN
5771UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5772f_charbig = 'updated by trigger'
5773      WHERE f_int1 = - old.f_int1;
5774END|
5775DELETE FROM t0_aux
5776WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5777
5778# check trigger-8 success: 	1
5779DROP TRIGGER trg_1;
5780UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5781f_int2 = CAST(f_char1 AS SIGNED INT),
5782f_charbig = 'just inserted'
5783   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5784DELETE FROM t0_aux
5785WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5786DELETE FROM t1
5787WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5788CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
5789BEGIN
5790SET new.f_int1 = old.f_int1 + @max_row,
5791new.f_int2 = old.f_int2 - @max_row,
5792new.f_charbig = '####updated per update trigger####';
5793END|
5794UPDATE t1
5795SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
5796f_charbig = '####updated per update statement itself####';
5797Warnings:
5798Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
5799
5800# check trigger-9 success: 	1
5801DROP TRIGGER trg_2;
5802UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5803f_int2 = CAST(f_char1 AS SIGNED INT),
5804f_charbig = CONCAT('===',f_char1,'===');
5805Warnings:
5806Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
5807CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
5808BEGIN
5809SET new.f_int1 = new.f_int1 + @max_row,
5810new.f_int2 = new.f_int2 - @max_row,
5811new.f_charbig = '####updated per update trigger####';
5812END|
5813UPDATE t1
5814SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
5815f_charbig = '####updated per update statement itself####';
5816Warnings:
5817Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
5818
5819# check trigger-10 success: 	1
5820DROP TRIGGER trg_2;
5821UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5822f_int2 = CAST(f_char1 AS SIGNED INT),
5823f_charbig = CONCAT('===',f_char1,'===');
5824Warnings:
5825Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
5826CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
5827BEGIN
5828SET new.f_int1 = @my_max1 + @counter,
5829new.f_int2 = @my_min2 - @counter,
5830new.f_charbig = '####updated per insert trigger####';
5831SET @counter = @counter + 1;
5832END|
5833SET @counter = 1;
5834SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
5835Warnings:
5836Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
5837INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5838SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
5839CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
5840WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
5841ORDER BY f_int1;
5842DROP TRIGGER trg_3;
5843
5844# check trigger-11 success: 	1
5845Warnings:
5846Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
5847DELETE FROM t1
5848WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
5849AND f_int2 <> CAST(f_char1 AS SIGNED INT)
5850AND f_charbig = '####updated per insert trigger####';
5851CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
5852BEGIN
5853SET new.f_int1 = @my_max1 + @counter,
5854new.f_int2 = @my_min2 - @counter,
5855new.f_charbig = '####updated per insert trigger####';
5856SET @counter = @counter + 1;
5857END|
5858SET @counter = 1;
5859SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
5860Warnings:
5861Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
5862INSERT INTO t1 (f_char1, f_char2, f_charbig)
5863SELECT CAST(f_int1 AS CHAR),
5864CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
5865WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
5866ORDER BY f_int1;
5867DROP TRIGGER trg_3;
5868
5869# check trigger-12 success: 	1
5870Warnings:
5871Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
5872DELETE FROM t1
5873WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
5874AND f_int2 <> CAST(f_char1 AS SIGNED INT)
5875AND f_charbig = '####updated per insert trigger####';
5876ANALYZE  TABLE t1;
5877Table	Op	Msg_type	Msg_text
5878test.t1	analyze	status	OK
5879test.t1	analyze	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
5880CHECK    TABLE t1 EXTENDED;
5881Table	Op	Msg_type	Msg_text
5882test.t1	check	status	OK
5883test.t1	check	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
5884CHECKSUM TABLE t1 EXTENDED;
5885Table	Checksum
5886test.t1	<some_value>
5887OPTIMIZE TABLE t1;
5888Table	Op	Msg_type	Msg_text
5889test.t1	optimize	status	OK
5890test.t1	optimize	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
5891# check layout success:    1
5892REPAIR   TABLE t1 EXTENDED;
5893Table	Op	Msg_type	Msg_text
5894test.t1	repair	status	OK
5895test.t1	repair	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
5896# check layout success:    1
5897TRUNCATE t1;
5898Warnings:
5899Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
5900
5901# check TRUNCATE success: 	1
5902# check layout success:    1
5903# End usability test (inc/partition_check.inc)
5904DROP TABLE t1;
5905CREATE TABLE t1 (
5906f_int1 INTEGER,
5907f_int2 INTEGER,
5908f_char1 CHAR(20),
5909f_char2 CHAR(20),
5910f_charbig VARCHAR(1000)
5911, UNIQUE INDEX uidx1 (f_int1,f_int2)
5912)
5913PARTITION BY RANGE(f_int1)
5914(PARTITION parta VALUES LESS THAN (0),
5915PARTITION partb VALUES LESS THAN (5),
5916PARTITION partc VALUES LESS THAN (10),
5917PARTITION partd VALUES LESS THAN (10 + 5),
5918PARTITION parte VALUES LESS THAN (20),
5919PARTITION partf VALUES LESS THAN (2147483646));
5920Warnings:
5921Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
5922INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
5923SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
5924WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
5925Warnings:
5926Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
5927ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
5928Warnings:
5929Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
5930INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
5931SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
5932WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
5933Warnings:
5934Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
5935# Start usability test (inc/partition_check.inc)
5936create_command
5937SHOW CREATE TABLE t1;
5938Table	Create Table
5939t1	CREATE TABLE `t1` (
5940  `f_int1` int(11) DEFAULT NULL,
5941  `f_int2` mediumint(9) DEFAULT NULL,
5942  `f_char1` char(20) DEFAULT NULL,
5943  `f_char2` char(20) DEFAULT NULL,
5944  `f_charbig` varchar(1000) DEFAULT NULL,
5945  UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
5946) ENGINE=MyISAM DEFAULT CHARSET=latin1
5947/*!50100 PARTITION BY RANGE (f_int1)
5948(PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM,
5949 PARTITION partb VALUES LESS THAN (5) ENGINE = MyISAM,
5950 PARTITION partc VALUES LESS THAN (10) ENGINE = MyISAM,
5951 PARTITION partd VALUES LESS THAN (15) ENGINE = MyISAM,
5952 PARTITION parte VALUES LESS THAN (20) ENGINE = MyISAM,
5953 PARTITION partf VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
5954
5955unified filelist
5956t1#P#parta.MYD
5957t1#P#parta.MYI
5958t1#P#partb.MYD
5959t1#P#partb.MYI
5960t1#P#partc.MYD
5961t1#P#partc.MYI
5962t1#P#partd.MYD
5963t1#P#partd.MYI
5964t1#P#parte.MYD
5965t1#P#parte.MYI
5966t1#P#partf.MYD
5967t1#P#partf.MYI
5968t1.frm
5969t1.par
5970
5971# check prerequisites-1 success:    1
5972# check COUNT(*) success:    1
5973# check MIN/MAX(f_int1) success:    1
5974# check MIN/MAX(f_int2) success:    1
5975INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5976SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
5977CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
5978WHERE f_int1 IN (2,3);
5979ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
5980# check prerequisites-3 success:    1
5981# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
5982INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5983SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
5984CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
5985WHERE f_int1 IN (2,3);
5986DELETE FROM t1 WHERE f_charbig = 'delete me';
5987INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5988SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
5989CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
5990WHERE f_int1 IN (2,3);
5991DELETE FROM t1 WHERE f_charbig = 'delete me';
5992# check read via f_int1 success: 1
5993# check read via f_int2 success: 1
5994
5995# check multiple-1 success: 	1
5996DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
5997
5998# check multiple-2 success: 	1
5999INSERT INTO t1 SELECT * FROM t0_template
6000WHERE MOD(f_int1,3) = 0;
6001
6002# check multiple-3 success: 	1
6003UPDATE t1 SET f_int1 = f_int1 + @max_row
6004WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
6005AND @max_row_div2 + @max_row_div4;
6006
6007# check multiple-4 success: 	1
6008DELETE FROM t1
6009WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
6010AND @max_row_div2 + @max_row_div4 + @max_row;
6011
6012# check multiple-5 success: 	1
6013SELECT COUNT(*) INTO @try_count FROM t0_template
6014WHERE MOD(f_int1,3) = 0
6015AND f_int1 BETWEEN @max_row_div2 AND @max_row;
6016SELECT COUNT(*) INTO @clash_count
6017FROM t1 INNER JOIN t0_template USING(f_int1)
6018WHERE MOD(f_int1,3) = 0
6019AND f_int1 BETWEEN @max_row_div2 AND @max_row;
6020SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
6021INSERT INTO t1
6022SET f_int1 = @cur_value , f_int2 = @cur_value,
6023f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
6024f_charbig = '#SINGLE#';
6025
6026# check single-1 success: 	1
6027SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
6028INSERT INTO t1
6029SET f_int1 = @cur_value , f_int2 = @cur_value,
6030f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
6031f_charbig = '#SINGLE#';
6032
6033# check single-2 success: 	1
6034SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
6035SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
6036UPDATE t1 SET f_int1 = @cur_value2
6037WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
6038
6039# check single-3 success: 	1
6040SET @cur_value1= -1;
6041SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
6042UPDATE t1 SET f_int1 = @cur_value1
6043WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
6044
6045# check single-4 success: 	1
6046SELECT MAX(f_int1) INTO @cur_value FROM t1;
6047DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
6048
6049# check single-5 success: 	1
6050DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
6051
6052# check single-6 success: 	1
6053INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
6054ERROR HY000: Table has no partition for value 2147483647
6055DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
6056INSERT t1 SET f_int1 = 0 , f_int2 = 0,
6057f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
6058f_charbig = '#NULL#';
6059INSERT INTO t1
6060SET f_int1 = NULL , f_int2 = -@max_row,
6061f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
6062f_charbig = '#NULL#';
6063# check null success:    1
6064
6065# check null-1 success: 	1
6066UPDATE t1 SET f_int1 = -@max_row
6067WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
6068AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
6069
6070# check null-2 success: 	1
6071UPDATE t1 SET f_int1 = NULL
6072WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
6073AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
6074
6075# check null-3 success: 	1
6076DELETE FROM t1
6077WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
6078AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
6079
6080# check null-4 success: 	1
6081DELETE FROM t1
6082WHERE f_int1 = 0 AND f_int2 = 0
6083AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
6084AND f_charbig = '#NULL#';
6085INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6086SELECT f_int1, f_int1, '', '', 'was inserted'
6087   FROM t0_template source_tab
6088WHERE MOD(f_int1,3) = 0
6089AND f_int1 BETWEEN @max_row_div2 AND @max_row
6090ON DUPLICATE KEY
6091UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
6092f_int2 = 2 * @max_row + source_tab.f_int1,
6093f_charbig = 'was updated';
6094
6095# check unique-1-a success: 	1
6096
6097# check unique-1-b success: 	1
6098DELETE FROM t1 WHERE f_charbig = 'was inserted';
6099UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6100f_int2 = CAST(f_char1 AS SIGNED INT),
6101f_charbig = CONCAT('===',f_char1,'===')
6102WHERE f_charbig = 'was updated';
6103REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6104SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
6105   FROM t0_template source_tab
6106WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
6107
6108# check replace success: 	1
6109DELETE FROM t1
6110WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
6111DELETE FROM t1
6112WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
6113f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
6114UPDATE t1 SET f_int2 = f_int1,
6115f_char1 = CAST(f_int1 AS CHAR),
6116f_char2 = CAST(f_int1 AS CHAR),
6117f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
6118WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
6119SET AUTOCOMMIT= 0;
6120INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6121SELECT f_int1, f_int1, '', '', 'was inserted'
6122FROM t0_template source_tab
6123WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
6124
6125# check transactions-1 success: 	1
6126COMMIT WORK;
6127
6128# check transactions-2 success: 	1
6129ROLLBACK WORK;
6130
6131# check transactions-3 success: 	1
6132DELETE FROM t1 WHERE f_charbig = 'was inserted';
6133COMMIT WORK;
6134ROLLBACK WORK;
6135
6136# check transactions-4 success: 	1
6137INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6138SELECT f_int1, f_int1, '', '', 'was inserted'
6139FROM t0_template source_tab
6140WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
6141
6142# check transactions-5 success: 	1
6143ROLLBACK WORK;
6144Warnings:
6145Warning	1196	Some non-transactional changed tables couldn't be rolled back
6146
6147# check transactions-6 success: 	1
6148# INFO: Storage engine used for t1 seems to be not transactional.
6149COMMIT;
6150
6151# check transactions-7 success: 	1
6152DELETE FROM t1 WHERE f_charbig = 'was inserted';
6153COMMIT WORK;
6154SET @@session.sql_mode = 'traditional';
6155Warnings:
6156Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
6157SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
6158INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6159SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
6160'', '', 'was inserted' FROM t0_template
6161WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
6162ERROR 22012: Division by 0
6163COMMIT;
6164
6165# check transactions-8 success: 	1
6166# INFO: Storage engine used for t1 seems to be unable to revert
6167#       changes made by the failing statement.
6168SET @@session.sql_mode = '';
6169Warnings:
6170Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
6171SET AUTOCOMMIT= 1;
6172DELETE FROM t1 WHERE f_charbig = 'was inserted';
6173COMMIT WORK;
6174UPDATE t1 SET f_charbig = REPEAT('b', 1000);
6175
6176# check special-1 success: 	1
6177UPDATE t1 SET f_charbig = '';
6178
6179# check special-2 success: 	1
6180UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
6181INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
6182SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
6183WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6184INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6185SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6186'just inserted' FROM t0_template
6187WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6188CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
6189BEGIN
6190UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6191f_charbig = 'updated by trigger'
6192      WHERE f_int1 = new.f_int1;
6193END|
6194INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6195SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
6196WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6197
6198# check trigger-1 success: 	1
6199DROP TRIGGER trg_1;
6200UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6201f_int2 = CAST(f_char1 AS SIGNED INT),
6202f_charbig = 'just inserted'
6203   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6204DELETE FROM t0_aux
6205WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6206INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6207SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6208'just inserted' FROM t0_template
6209WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6210CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
6211BEGIN
6212UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6213f_charbig = 'updated by trigger'
6214      WHERE f_int1 = new.f_int1;
6215END|
6216INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6217SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
6218WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6219
6220# check trigger-2 success: 	1
6221DROP TRIGGER trg_1;
6222UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6223f_int2 = CAST(f_char1 AS SIGNED INT),
6224f_charbig = 'just inserted'
6225   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6226DELETE FROM t0_aux
6227WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6228INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6229SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6230'just inserted' FROM t0_template
6231WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6232CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
6233BEGIN
6234UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6235f_charbig = 'updated by trigger'
6236      WHERE f_int1 = new.f_int1;
6237END|
6238UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
6239WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6240
6241# check trigger-3 success: 	1
6242DROP TRIGGER trg_1;
6243UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6244f_int2 = CAST(f_char1 AS SIGNED INT),
6245f_charbig = 'just inserted'
6246   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6247DELETE FROM t0_aux
6248WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6249INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6250SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6251'just inserted' FROM t0_template
6252WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6253CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
6254BEGIN
6255UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6256f_charbig = 'updated by trigger'
6257      WHERE f_int1 = - old.f_int1;
6258END|
6259UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
6260WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6261
6262# check trigger-4 success: 	1
6263DROP TRIGGER trg_1;
6264UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6265f_int2 = CAST(f_char1 AS SIGNED INT),
6266f_charbig = 'just inserted'
6267   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6268DELETE FROM t0_aux
6269WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6270INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6271SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6272'just inserted' FROM t0_template
6273WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6274CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
6275BEGIN
6276UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6277f_charbig = 'updated by trigger'
6278      WHERE f_int1 = new.f_int1;
6279END|
6280UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
6281WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6282
6283# check trigger-5 success: 	1
6284DROP TRIGGER trg_1;
6285UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6286f_int2 = CAST(f_char1 AS SIGNED INT),
6287f_charbig = 'just inserted'
6288   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6289DELETE FROM t0_aux
6290WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6291INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6292SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6293'just inserted' FROM t0_template
6294WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6295CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
6296BEGIN
6297UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6298f_charbig = 'updated by trigger'
6299      WHERE f_int1 = - old.f_int1;
6300END|
6301UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
6302WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6303
6304# check trigger-6 success: 	1
6305DROP TRIGGER trg_1;
6306UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6307f_int2 = CAST(f_char1 AS SIGNED INT),
6308f_charbig = 'just inserted'
6309   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6310DELETE FROM t0_aux
6311WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6312INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6313SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6314'just inserted' FROM t0_template
6315WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6316CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
6317BEGIN
6318UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6319f_charbig = 'updated by trigger'
6320      WHERE f_int1 = - old.f_int1;
6321END|
6322DELETE FROM t0_aux
6323WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6324
6325# check trigger-7 success: 	1
6326DROP TRIGGER trg_1;
6327UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6328f_int2 = CAST(f_char1 AS SIGNED INT),
6329f_charbig = 'just inserted'
6330   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6331DELETE FROM t0_aux
6332WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6333INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6334SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6335'just inserted' FROM t0_template
6336WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6337CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
6338BEGIN
6339UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6340f_charbig = 'updated by trigger'
6341      WHERE f_int1 = - old.f_int1;
6342END|
6343DELETE FROM t0_aux
6344WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6345
6346# check trigger-8 success: 	1
6347DROP TRIGGER trg_1;
6348UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6349f_int2 = CAST(f_char1 AS SIGNED INT),
6350f_charbig = 'just inserted'
6351   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6352DELETE FROM t0_aux
6353WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6354DELETE FROM t1
6355WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6356CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
6357BEGIN
6358SET new.f_int1 = old.f_int1 + @max_row,
6359new.f_int2 = old.f_int2 - @max_row,
6360new.f_charbig = '####updated per update trigger####';
6361END|
6362UPDATE t1
6363SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
6364f_charbig = '####updated per update statement itself####';
6365Warnings:
6366Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
6367
6368# check trigger-9 success: 	1
6369DROP TRIGGER trg_2;
6370UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6371f_int2 = CAST(f_char1 AS SIGNED INT),
6372f_charbig = CONCAT('===',f_char1,'===');
6373Warnings:
6374Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
6375CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
6376BEGIN
6377SET new.f_int1 = new.f_int1 + @max_row,
6378new.f_int2 = new.f_int2 - @max_row,
6379new.f_charbig = '####updated per update trigger####';
6380END|
6381UPDATE t1
6382SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
6383f_charbig = '####updated per update statement itself####';
6384Warnings:
6385Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
6386
6387# check trigger-10 success: 	1
6388DROP TRIGGER trg_2;
6389UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6390f_int2 = CAST(f_char1 AS SIGNED INT),
6391f_charbig = CONCAT('===',f_char1,'===');
6392Warnings:
6393Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
6394CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
6395BEGIN
6396SET new.f_int1 = @my_max1 + @counter,
6397new.f_int2 = @my_min2 - @counter,
6398new.f_charbig = '####updated per insert trigger####';
6399SET @counter = @counter + 1;
6400END|
6401SET @counter = 1;
6402SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
6403Warnings:
6404Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
6405INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6406SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
6407CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
6408WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
6409ORDER BY f_int1;
6410DROP TRIGGER trg_3;
6411
6412# check trigger-11 success: 	1
6413Warnings:
6414Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
6415DELETE FROM t1
6416WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
6417AND f_int2 <> CAST(f_char1 AS SIGNED INT)
6418AND f_charbig = '####updated per insert trigger####';
6419CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
6420BEGIN
6421SET new.f_int1 = @my_max1 + @counter,
6422new.f_int2 = @my_min2 - @counter,
6423new.f_charbig = '####updated per insert trigger####';
6424SET @counter = @counter + 1;
6425END|
6426SET @counter = 1;
6427SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
6428Warnings:
6429Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
6430INSERT INTO t1 (f_char1, f_char2, f_charbig)
6431SELECT CAST(f_int1 AS CHAR),
6432CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
6433WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
6434ORDER BY f_int1;
6435DROP TRIGGER trg_3;
6436
6437# check trigger-12 success: 	1
6438Warnings:
6439Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
6440DELETE FROM t1
6441WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
6442AND f_int2 <> CAST(f_char1 AS SIGNED INT)
6443AND f_charbig = '####updated per insert trigger####';
6444ANALYZE  TABLE t1;
6445Table	Op	Msg_type	Msg_text
6446test.t1	analyze	status	OK
6447test.t1	analyze	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
6448CHECK    TABLE t1 EXTENDED;
6449Table	Op	Msg_type	Msg_text
6450test.t1	check	status	OK
6451test.t1	check	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
6452CHECKSUM TABLE t1 EXTENDED;
6453Table	Checksum
6454test.t1	<some_value>
6455OPTIMIZE TABLE t1;
6456Table	Op	Msg_type	Msg_text
6457test.t1	optimize	status	OK
6458test.t1	optimize	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
6459# check layout success:    1
6460REPAIR   TABLE t1 EXTENDED;
6461Table	Op	Msg_type	Msg_text
6462test.t1	repair	status	OK
6463test.t1	repair	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
6464# check layout success:    1
6465TRUNCATE t1;
6466Warnings:
6467Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
6468
6469# check TRUNCATE success: 	1
6470# check layout success:    1
6471# End usability test (inc/partition_check.inc)
6472DROP TABLE t1;
6473CREATE TABLE t1 (
6474f_int1 INTEGER,
6475f_int2 INTEGER,
6476f_char1 CHAR(20),
6477f_char2 CHAR(20),
6478f_charbig VARCHAR(1000)
6479, UNIQUE INDEX uidx1 (f_int1,f_int2)
6480)
6481PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
6482(PARTITION parta VALUES LESS THAN (0),
6483PARTITION partb VALUES LESS THAN (5),
6484PARTITION partc VALUES LESS THAN (10),
6485PARTITION partd VALUES LESS THAN (2147483646));
6486Warnings:
6487Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
6488INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
6489SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
6490WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
6491Warnings:
6492Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
6493ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
6494Warnings:
6495Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
6496INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
6497SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
6498WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
6499Warnings:
6500Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
6501# Start usability test (inc/partition_check.inc)
6502create_command
6503SHOW CREATE TABLE t1;
6504Table	Create Table
6505t1	CREATE TABLE `t1` (
6506  `f_int1` int(11) DEFAULT NULL,
6507  `f_int2` mediumint(9) DEFAULT NULL,
6508  `f_char1` char(20) DEFAULT NULL,
6509  `f_char2` char(20) DEFAULT NULL,
6510  `f_charbig` varchar(1000) DEFAULT NULL,
6511  UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
6512) ENGINE=MyISAM DEFAULT CHARSET=latin1
6513/*!50100 PARTITION BY RANGE (f_int1 DIV 2)
6514SUBPARTITION BY HASH (f_int1)
6515SUBPARTITIONS 2
6516(PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM,
6517 PARTITION partb VALUES LESS THAN (5) ENGINE = MyISAM,
6518 PARTITION partc VALUES LESS THAN (10) ENGINE = MyISAM,
6519 PARTITION partd VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
6520
6521unified filelist
6522t1#P#parta#SP#partasp0.MYD
6523t1#P#parta#SP#partasp0.MYI
6524t1#P#parta#SP#partasp1.MYD
6525t1#P#parta#SP#partasp1.MYI
6526t1#P#partb#SP#partbsp0.MYD
6527t1#P#partb#SP#partbsp0.MYI
6528t1#P#partb#SP#partbsp1.MYD
6529t1#P#partb#SP#partbsp1.MYI
6530t1#P#partc#SP#partcsp0.MYD
6531t1#P#partc#SP#partcsp0.MYI
6532t1#P#partc#SP#partcsp1.MYD
6533t1#P#partc#SP#partcsp1.MYI
6534t1#P#partd#SP#partdsp0.MYD
6535t1#P#partd#SP#partdsp0.MYI
6536t1#P#partd#SP#partdsp1.MYD
6537t1#P#partd#SP#partdsp1.MYI
6538t1.frm
6539t1.par
6540
6541# check prerequisites-1 success:    1
6542# check COUNT(*) success:    1
6543# check MIN/MAX(f_int1) success:    1
6544# check MIN/MAX(f_int2) success:    1
6545INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6546SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
6547CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
6548WHERE f_int1 IN (2,3);
6549ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
6550# check prerequisites-3 success:    1
6551# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
6552INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6553SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
6554CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
6555WHERE f_int1 IN (2,3);
6556DELETE FROM t1 WHERE f_charbig = 'delete me';
6557INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6558SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
6559CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
6560WHERE f_int1 IN (2,3);
6561DELETE FROM t1 WHERE f_charbig = 'delete me';
6562# check read via f_int1 success: 1
6563# check read via f_int2 success: 1
6564
6565# check multiple-1 success: 	1
6566DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
6567
6568# check multiple-2 success: 	1
6569INSERT INTO t1 SELECT * FROM t0_template
6570WHERE MOD(f_int1,3) = 0;
6571
6572# check multiple-3 success: 	1
6573UPDATE t1 SET f_int1 = f_int1 + @max_row
6574WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
6575AND @max_row_div2 + @max_row_div4;
6576
6577# check multiple-4 success: 	1
6578DELETE FROM t1
6579WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
6580AND @max_row_div2 + @max_row_div4 + @max_row;
6581
6582# check multiple-5 success: 	1
6583SELECT COUNT(*) INTO @try_count FROM t0_template
6584WHERE MOD(f_int1,3) = 0
6585AND f_int1 BETWEEN @max_row_div2 AND @max_row;
6586SELECT COUNT(*) INTO @clash_count
6587FROM t1 INNER JOIN t0_template USING(f_int1)
6588WHERE MOD(f_int1,3) = 0
6589AND f_int1 BETWEEN @max_row_div2 AND @max_row;
6590SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
6591INSERT INTO t1
6592SET f_int1 = @cur_value , f_int2 = @cur_value,
6593f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
6594f_charbig = '#SINGLE#';
6595
6596# check single-1 success: 	1
6597SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
6598INSERT INTO t1
6599SET f_int1 = @cur_value , f_int2 = @cur_value,
6600f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
6601f_charbig = '#SINGLE#';
6602
6603# check single-2 success: 	1
6604SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
6605SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
6606UPDATE t1 SET f_int1 = @cur_value2
6607WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
6608
6609# check single-3 success: 	1
6610SET @cur_value1= -1;
6611SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
6612UPDATE t1 SET f_int1 = @cur_value1
6613WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
6614
6615# check single-4 success: 	1
6616SELECT MAX(f_int1) INTO @cur_value FROM t1;
6617DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
6618
6619# check single-5 success: 	1
6620DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
6621
6622# check single-6 success: 	1
6623INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
6624Warnings:
6625Warning	1264	Out of range value for column 'f_int2' at row 1
6626
6627# check single-7 success: 	1
6628DELETE FROM t1 WHERE f_charbig = '#2147483647##';
6629DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
6630INSERT t1 SET f_int1 = 0 , f_int2 = 0,
6631f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
6632f_charbig = '#NULL#';
6633INSERT INTO t1
6634SET f_int1 = NULL , f_int2 = -@max_row,
6635f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
6636f_charbig = '#NULL#';
6637# check null success:    1
6638
6639# check null-1 success: 	1
6640UPDATE t1 SET f_int1 = -@max_row
6641WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
6642AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
6643
6644# check null-2 success: 	1
6645UPDATE t1 SET f_int1 = NULL
6646WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
6647AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
6648
6649# check null-3 success: 	1
6650DELETE FROM t1
6651WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
6652AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
6653
6654# check null-4 success: 	1
6655DELETE FROM t1
6656WHERE f_int1 = 0 AND f_int2 = 0
6657AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
6658AND f_charbig = '#NULL#';
6659INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6660SELECT f_int1, f_int1, '', '', 'was inserted'
6661   FROM t0_template source_tab
6662WHERE MOD(f_int1,3) = 0
6663AND f_int1 BETWEEN @max_row_div2 AND @max_row
6664ON DUPLICATE KEY
6665UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
6666f_int2 = 2 * @max_row + source_tab.f_int1,
6667f_charbig = 'was updated';
6668
6669# check unique-1-a success: 	1
6670
6671# check unique-1-b success: 	1
6672DELETE FROM t1 WHERE f_charbig = 'was inserted';
6673UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6674f_int2 = CAST(f_char1 AS SIGNED INT),
6675f_charbig = CONCAT('===',f_char1,'===')
6676WHERE f_charbig = 'was updated';
6677REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6678SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
6679   FROM t0_template source_tab
6680WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
6681
6682# check replace success: 	1
6683DELETE FROM t1
6684WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
6685DELETE FROM t1
6686WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
6687f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
6688UPDATE t1 SET f_int2 = f_int1,
6689f_char1 = CAST(f_int1 AS CHAR),
6690f_char2 = CAST(f_int1 AS CHAR),
6691f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
6692WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
6693SET AUTOCOMMIT= 0;
6694INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6695SELECT f_int1, f_int1, '', '', 'was inserted'
6696FROM t0_template source_tab
6697WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
6698
6699# check transactions-1 success: 	1
6700COMMIT WORK;
6701
6702# check transactions-2 success: 	1
6703ROLLBACK WORK;
6704
6705# check transactions-3 success: 	1
6706DELETE FROM t1 WHERE f_charbig = 'was inserted';
6707COMMIT WORK;
6708ROLLBACK WORK;
6709
6710# check transactions-4 success: 	1
6711INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6712SELECT f_int1, f_int1, '', '', 'was inserted'
6713FROM t0_template source_tab
6714WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
6715
6716# check transactions-5 success: 	1
6717ROLLBACK WORK;
6718Warnings:
6719Warning	1196	Some non-transactional changed tables couldn't be rolled back
6720
6721# check transactions-6 success: 	1
6722# INFO: Storage engine used for t1 seems to be not transactional.
6723COMMIT;
6724
6725# check transactions-7 success: 	1
6726DELETE FROM t1 WHERE f_charbig = 'was inserted';
6727COMMIT WORK;
6728SET @@session.sql_mode = 'traditional';
6729Warnings:
6730Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
6731SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
6732INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6733SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
6734'', '', 'was inserted' FROM t0_template
6735WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
6736ERROR 22012: Division by 0
6737COMMIT;
6738
6739# check transactions-8 success: 	1
6740# INFO: Storage engine used for t1 seems to be unable to revert
6741#       changes made by the failing statement.
6742SET @@session.sql_mode = '';
6743Warnings:
6744Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
6745SET AUTOCOMMIT= 1;
6746DELETE FROM t1 WHERE f_charbig = 'was inserted';
6747COMMIT WORK;
6748UPDATE t1 SET f_charbig = REPEAT('b', 1000);
6749
6750# check special-1 success: 	1
6751UPDATE t1 SET f_charbig = '';
6752
6753# check special-2 success: 	1
6754UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
6755INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
6756SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
6757WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6758INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6759SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6760'just inserted' FROM t0_template
6761WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6762CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
6763BEGIN
6764UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6765f_charbig = 'updated by trigger'
6766      WHERE f_int1 = new.f_int1;
6767END|
6768INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6769SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
6770WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6771
6772# check trigger-1 success: 	1
6773DROP TRIGGER trg_1;
6774UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6775f_int2 = CAST(f_char1 AS SIGNED INT),
6776f_charbig = 'just inserted'
6777   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6778DELETE FROM t0_aux
6779WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6780INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6781SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6782'just inserted' FROM t0_template
6783WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6784CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
6785BEGIN
6786UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6787f_charbig = 'updated by trigger'
6788      WHERE f_int1 = new.f_int1;
6789END|
6790INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6791SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
6792WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6793
6794# check trigger-2 success: 	1
6795DROP TRIGGER trg_1;
6796UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6797f_int2 = CAST(f_char1 AS SIGNED INT),
6798f_charbig = 'just inserted'
6799   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6800DELETE FROM t0_aux
6801WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6802INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6803SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6804'just inserted' FROM t0_template
6805WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6806CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
6807BEGIN
6808UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6809f_charbig = 'updated by trigger'
6810      WHERE f_int1 = new.f_int1;
6811END|
6812UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
6813WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6814
6815# check trigger-3 success: 	1
6816DROP TRIGGER trg_1;
6817UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6818f_int2 = CAST(f_char1 AS SIGNED INT),
6819f_charbig = 'just inserted'
6820   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6821DELETE FROM t0_aux
6822WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6823INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6824SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6825'just inserted' FROM t0_template
6826WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6827CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
6828BEGIN
6829UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6830f_charbig = 'updated by trigger'
6831      WHERE f_int1 = - old.f_int1;
6832END|
6833UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
6834WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6835
6836# check trigger-4 success: 	1
6837DROP TRIGGER trg_1;
6838UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6839f_int2 = CAST(f_char1 AS SIGNED INT),
6840f_charbig = 'just inserted'
6841   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6842DELETE FROM t0_aux
6843WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6844INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6845SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6846'just inserted' FROM t0_template
6847WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6848CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
6849BEGIN
6850UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6851f_charbig = 'updated by trigger'
6852      WHERE f_int1 = new.f_int1;
6853END|
6854UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
6855WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6856
6857# check trigger-5 success: 	1
6858DROP TRIGGER trg_1;
6859UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6860f_int2 = CAST(f_char1 AS SIGNED INT),
6861f_charbig = 'just inserted'
6862   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6863DELETE FROM t0_aux
6864WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6865INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6866SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6867'just inserted' FROM t0_template
6868WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6869CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
6870BEGIN
6871UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6872f_charbig = 'updated by trigger'
6873      WHERE f_int1 = - old.f_int1;
6874END|
6875UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
6876WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6877
6878# check trigger-6 success: 	1
6879DROP TRIGGER trg_1;
6880UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6881f_int2 = CAST(f_char1 AS SIGNED INT),
6882f_charbig = 'just inserted'
6883   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6884DELETE FROM t0_aux
6885WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6886INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6887SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6888'just inserted' FROM t0_template
6889WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6890CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
6891BEGIN
6892UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6893f_charbig = 'updated by trigger'
6894      WHERE f_int1 = - old.f_int1;
6895END|
6896DELETE FROM t0_aux
6897WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6898
6899# check trigger-7 success: 	1
6900DROP TRIGGER trg_1;
6901UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6902f_int2 = CAST(f_char1 AS SIGNED INT),
6903f_charbig = 'just inserted'
6904   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6905DELETE FROM t0_aux
6906WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6907INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6908SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6909'just inserted' FROM t0_template
6910WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6911CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
6912BEGIN
6913UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6914f_charbig = 'updated by trigger'
6915      WHERE f_int1 = - old.f_int1;
6916END|
6917DELETE FROM t0_aux
6918WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6919
6920# check trigger-8 success: 	1
6921DROP TRIGGER trg_1;
6922UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6923f_int2 = CAST(f_char1 AS SIGNED INT),
6924f_charbig = 'just inserted'
6925   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6926DELETE FROM t0_aux
6927WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6928DELETE FROM t1
6929WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6930CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
6931BEGIN
6932SET new.f_int1 = old.f_int1 + @max_row,
6933new.f_int2 = old.f_int2 - @max_row,
6934new.f_charbig = '####updated per update trigger####';
6935END|
6936UPDATE t1
6937SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
6938f_charbig = '####updated per update statement itself####';
6939Warnings:
6940Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
6941
6942# check trigger-9 success: 	1
6943DROP TRIGGER trg_2;
6944UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6945f_int2 = CAST(f_char1 AS SIGNED INT),
6946f_charbig = CONCAT('===',f_char1,'===');
6947Warnings:
6948Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
6949CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
6950BEGIN
6951SET new.f_int1 = new.f_int1 + @max_row,
6952new.f_int2 = new.f_int2 - @max_row,
6953new.f_charbig = '####updated per update trigger####';
6954END|
6955UPDATE t1
6956SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
6957f_charbig = '####updated per update statement itself####';
6958Warnings:
6959Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
6960
6961# check trigger-10 success: 	1
6962DROP TRIGGER trg_2;
6963UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6964f_int2 = CAST(f_char1 AS SIGNED INT),
6965f_charbig = CONCAT('===',f_char1,'===');
6966Warnings:
6967Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
6968CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
6969BEGIN
6970SET new.f_int1 = @my_max1 + @counter,
6971new.f_int2 = @my_min2 - @counter,
6972new.f_charbig = '####updated per insert trigger####';
6973SET @counter = @counter + 1;
6974END|
6975SET @counter = 1;
6976SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
6977Warnings:
6978Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
6979INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6980SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
6981CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
6982WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
6983ORDER BY f_int1;
6984DROP TRIGGER trg_3;
6985
6986# check trigger-11 success: 	1
6987Warnings:
6988Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
6989DELETE FROM t1
6990WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
6991AND f_int2 <> CAST(f_char1 AS SIGNED INT)
6992AND f_charbig = '####updated per insert trigger####';
6993CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
6994BEGIN
6995SET new.f_int1 = @my_max1 + @counter,
6996new.f_int2 = @my_min2 - @counter,
6997new.f_charbig = '####updated per insert trigger####';
6998SET @counter = @counter + 1;
6999END|
7000SET @counter = 1;
7001SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
7002Warnings:
7003Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
7004INSERT INTO t1 (f_char1, f_char2, f_charbig)
7005SELECT CAST(f_int1 AS CHAR),
7006CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
7007WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
7008ORDER BY f_int1;
7009DROP TRIGGER trg_3;
7010
7011# check trigger-12 success: 	1
7012Warnings:
7013Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
7014DELETE FROM t1
7015WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
7016AND f_int2 <> CAST(f_char1 AS SIGNED INT)
7017AND f_charbig = '####updated per insert trigger####';
7018ANALYZE  TABLE t1;
7019Table	Op	Msg_type	Msg_text
7020test.t1	analyze	status	OK
7021test.t1	analyze	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
7022CHECK    TABLE t1 EXTENDED;
7023Table	Op	Msg_type	Msg_text
7024test.t1	check	status	OK
7025test.t1	check	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
7026CHECKSUM TABLE t1 EXTENDED;
7027Table	Checksum
7028test.t1	<some_value>
7029OPTIMIZE TABLE t1;
7030Table	Op	Msg_type	Msg_text
7031test.t1	optimize	status	OK
7032test.t1	optimize	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
7033# check layout success:    1
7034REPAIR   TABLE t1 EXTENDED;
7035Table	Op	Msg_type	Msg_text
7036test.t1	repair	status	OK
7037test.t1	repair	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
7038# check layout success:    1
7039TRUNCATE t1;
7040Warnings:
7041Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
7042
7043# check TRUNCATE success: 	1
7044# check layout success:    1
7045# End usability test (inc/partition_check.inc)
7046DROP TABLE t1;
7047CREATE TABLE t1 (
7048f_int1 INTEGER,
7049f_int2 INTEGER,
7050f_char1 CHAR(20),
7051f_char2 CHAR(20),
7052f_charbig VARCHAR(1000)
7053, UNIQUE INDEX uidx1 (f_int1,f_int2)
7054)
7055PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
7056(PARTITION part1 VALUES LESS THAN (0)
7057(SUBPARTITION subpart11, SUBPARTITION subpart12),
7058PARTITION part2 VALUES LESS THAN (5)
7059(SUBPARTITION subpart21, SUBPARTITION subpart22),
7060PARTITION part3 VALUES LESS THAN (10)
7061(SUBPARTITION subpart31, SUBPARTITION subpart32),
7062PARTITION part4 VALUES LESS THAN (2147483646)
7063(SUBPARTITION subpart41, SUBPARTITION subpart42));
7064Warnings:
7065Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
7066INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
7067SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
7068WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
7069Warnings:
7070Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
7071ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
7072Warnings:
7073Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
7074INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
7075SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
7076WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
7077Warnings:
7078Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
7079# Start usability test (inc/partition_check.inc)
7080create_command
7081SHOW CREATE TABLE t1;
7082Table	Create Table
7083t1	CREATE TABLE `t1` (
7084  `f_int1` int(11) DEFAULT NULL,
7085  `f_int2` mediumint(9) DEFAULT NULL,
7086  `f_char1` char(20) DEFAULT NULL,
7087  `f_char2` char(20) DEFAULT NULL,
7088  `f_charbig` varchar(1000) DEFAULT NULL,
7089  UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
7090) ENGINE=MyISAM DEFAULT CHARSET=latin1
7091/*!50100 PARTITION BY RANGE (f_int1)
7092SUBPARTITION BY KEY (f_int1)
7093(PARTITION part1 VALUES LESS THAN (0)
7094 (SUBPARTITION subpart11 ENGINE = MyISAM,
7095  SUBPARTITION subpart12 ENGINE = MyISAM),
7096 PARTITION part2 VALUES LESS THAN (5)
7097 (SUBPARTITION subpart21 ENGINE = MyISAM,
7098  SUBPARTITION subpart22 ENGINE = MyISAM),
7099 PARTITION part3 VALUES LESS THAN (10)
7100 (SUBPARTITION subpart31 ENGINE = MyISAM,
7101  SUBPARTITION subpart32 ENGINE = MyISAM),
7102 PARTITION part4 VALUES LESS THAN (2147483646)
7103 (SUBPARTITION subpart41 ENGINE = MyISAM,
7104  SUBPARTITION subpart42 ENGINE = MyISAM)) */
7105
7106unified filelist
7107t1#P#part1#SP#subpart11.MYD
7108t1#P#part1#SP#subpart11.MYI
7109t1#P#part1#SP#subpart12.MYD
7110t1#P#part1#SP#subpart12.MYI
7111t1#P#part2#SP#subpart21.MYD
7112t1#P#part2#SP#subpart21.MYI
7113t1#P#part2#SP#subpart22.MYD
7114t1#P#part2#SP#subpart22.MYI
7115t1#P#part3#SP#subpart31.MYD
7116t1#P#part3#SP#subpart31.MYI
7117t1#P#part3#SP#subpart32.MYD
7118t1#P#part3#SP#subpart32.MYI
7119t1#P#part4#SP#subpart41.MYD
7120t1#P#part4#SP#subpart41.MYI
7121t1#P#part4#SP#subpart42.MYD
7122t1#P#part4#SP#subpart42.MYI
7123t1.frm
7124t1.par
7125
7126# check prerequisites-1 success:    1
7127# check COUNT(*) success:    1
7128# check MIN/MAX(f_int1) success:    1
7129# check MIN/MAX(f_int2) success:    1
7130INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7131SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
7132CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
7133WHERE f_int1 IN (2,3);
7134ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
7135# check prerequisites-3 success:    1
7136# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
7137INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7138SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
7139CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
7140WHERE f_int1 IN (2,3);
7141DELETE FROM t1 WHERE f_charbig = 'delete me';
7142INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7143SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
7144CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
7145WHERE f_int1 IN (2,3);
7146DELETE FROM t1 WHERE f_charbig = 'delete me';
7147# check read via f_int1 success: 1
7148# check read via f_int2 success: 1
7149
7150# check multiple-1 success: 	1
7151DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
7152
7153# check multiple-2 success: 	1
7154INSERT INTO t1 SELECT * FROM t0_template
7155WHERE MOD(f_int1,3) = 0;
7156
7157# check multiple-3 success: 	1
7158UPDATE t1 SET f_int1 = f_int1 + @max_row
7159WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
7160AND @max_row_div2 + @max_row_div4;
7161
7162# check multiple-4 success: 	1
7163DELETE FROM t1
7164WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
7165AND @max_row_div2 + @max_row_div4 + @max_row;
7166
7167# check multiple-5 success: 	1
7168SELECT COUNT(*) INTO @try_count FROM t0_template
7169WHERE MOD(f_int1,3) = 0
7170AND f_int1 BETWEEN @max_row_div2 AND @max_row;
7171SELECT COUNT(*) INTO @clash_count
7172FROM t1 INNER JOIN t0_template USING(f_int1)
7173WHERE MOD(f_int1,3) = 0
7174AND f_int1 BETWEEN @max_row_div2 AND @max_row;
7175SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
7176INSERT INTO t1
7177SET f_int1 = @cur_value , f_int2 = @cur_value,
7178f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
7179f_charbig = '#SINGLE#';
7180
7181# check single-1 success: 	1
7182SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
7183INSERT INTO t1
7184SET f_int1 = @cur_value , f_int2 = @cur_value,
7185f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
7186f_charbig = '#SINGLE#';
7187
7188# check single-2 success: 	1
7189SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
7190SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
7191UPDATE t1 SET f_int1 = @cur_value2
7192WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
7193
7194# check single-3 success: 	1
7195SET @cur_value1= -1;
7196SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
7197UPDATE t1 SET f_int1 = @cur_value1
7198WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
7199
7200# check single-4 success: 	1
7201SELECT MAX(f_int1) INTO @cur_value FROM t1;
7202DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
7203
7204# check single-5 success: 	1
7205DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
7206
7207# check single-6 success: 	1
7208INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
7209ERROR HY000: Table has no partition for value 2147483647
7210DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
7211INSERT t1 SET f_int1 = 0 , f_int2 = 0,
7212f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
7213f_charbig = '#NULL#';
7214INSERT INTO t1
7215SET f_int1 = NULL , f_int2 = -@max_row,
7216f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
7217f_charbig = '#NULL#';
7218# check null success:    1
7219
7220# check null-1 success: 	1
7221UPDATE t1 SET f_int1 = -@max_row
7222WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
7223AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
7224
7225# check null-2 success: 	1
7226UPDATE t1 SET f_int1 = NULL
7227WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
7228AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
7229
7230# check null-3 success: 	1
7231DELETE FROM t1
7232WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
7233AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
7234
7235# check null-4 success: 	1
7236DELETE FROM t1
7237WHERE f_int1 = 0 AND f_int2 = 0
7238AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
7239AND f_charbig = '#NULL#';
7240INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7241SELECT f_int1, f_int1, '', '', 'was inserted'
7242   FROM t0_template source_tab
7243WHERE MOD(f_int1,3) = 0
7244AND f_int1 BETWEEN @max_row_div2 AND @max_row
7245ON DUPLICATE KEY
7246UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
7247f_int2 = 2 * @max_row + source_tab.f_int1,
7248f_charbig = 'was updated';
7249
7250# check unique-1-a success: 	1
7251
7252# check unique-1-b success: 	1
7253DELETE FROM t1 WHERE f_charbig = 'was inserted';
7254UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7255f_int2 = CAST(f_char1 AS SIGNED INT),
7256f_charbig = CONCAT('===',f_char1,'===')
7257WHERE f_charbig = 'was updated';
7258REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7259SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
7260   FROM t0_template source_tab
7261WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
7262
7263# check replace success: 	1
7264DELETE FROM t1
7265WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
7266DELETE FROM t1
7267WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
7268f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
7269UPDATE t1 SET f_int2 = f_int1,
7270f_char1 = CAST(f_int1 AS CHAR),
7271f_char2 = CAST(f_int1 AS CHAR),
7272f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
7273WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
7274SET AUTOCOMMIT= 0;
7275INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7276SELECT f_int1, f_int1, '', '', 'was inserted'
7277FROM t0_template source_tab
7278WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
7279
7280# check transactions-1 success: 	1
7281COMMIT WORK;
7282
7283# check transactions-2 success: 	1
7284ROLLBACK WORK;
7285
7286# check transactions-3 success: 	1
7287DELETE FROM t1 WHERE f_charbig = 'was inserted';
7288COMMIT WORK;
7289ROLLBACK WORK;
7290
7291# check transactions-4 success: 	1
7292INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7293SELECT f_int1, f_int1, '', '', 'was inserted'
7294FROM t0_template source_tab
7295WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
7296
7297# check transactions-5 success: 	1
7298ROLLBACK WORK;
7299Warnings:
7300Warning	1196	Some non-transactional changed tables couldn't be rolled back
7301
7302# check transactions-6 success: 	1
7303# INFO: Storage engine used for t1 seems to be not transactional.
7304COMMIT;
7305
7306# check transactions-7 success: 	1
7307DELETE FROM t1 WHERE f_charbig = 'was inserted';
7308COMMIT WORK;
7309SET @@session.sql_mode = 'traditional';
7310Warnings:
7311Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
7312SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
7313INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7314SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
7315'', '', 'was inserted' FROM t0_template
7316WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
7317ERROR 22012: Division by 0
7318COMMIT;
7319
7320# check transactions-8 success: 	1
7321# INFO: Storage engine used for t1 seems to be unable to revert
7322#       changes made by the failing statement.
7323SET @@session.sql_mode = '';
7324Warnings:
7325Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
7326SET AUTOCOMMIT= 1;
7327DELETE FROM t1 WHERE f_charbig = 'was inserted';
7328COMMIT WORK;
7329UPDATE t1 SET f_charbig = REPEAT('b', 1000);
7330
7331# check special-1 success: 	1
7332UPDATE t1 SET f_charbig = '';
7333
7334# check special-2 success: 	1
7335UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
7336INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
7337SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
7338WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7339INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7340SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7341'just inserted' FROM t0_template
7342WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7343CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
7344BEGIN
7345UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7346f_charbig = 'updated by trigger'
7347      WHERE f_int1 = new.f_int1;
7348END|
7349INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7350SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
7351WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7352
7353# check trigger-1 success: 	1
7354DROP TRIGGER trg_1;
7355UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7356f_int2 = CAST(f_char1 AS SIGNED INT),
7357f_charbig = 'just inserted'
7358   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7359DELETE FROM t0_aux
7360WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7361INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7362SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7363'just inserted' FROM t0_template
7364WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7365CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
7366BEGIN
7367UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7368f_charbig = 'updated by trigger'
7369      WHERE f_int1 = new.f_int1;
7370END|
7371INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7372SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
7373WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7374
7375# check trigger-2 success: 	1
7376DROP TRIGGER trg_1;
7377UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7378f_int2 = CAST(f_char1 AS SIGNED INT),
7379f_charbig = 'just inserted'
7380   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7381DELETE FROM t0_aux
7382WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7383INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7384SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7385'just inserted' FROM t0_template
7386WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7387CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
7388BEGIN
7389UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7390f_charbig = 'updated by trigger'
7391      WHERE f_int1 = new.f_int1;
7392END|
7393UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
7394WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7395
7396# check trigger-3 success: 	1
7397DROP TRIGGER trg_1;
7398UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7399f_int2 = CAST(f_char1 AS SIGNED INT),
7400f_charbig = 'just inserted'
7401   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7402DELETE FROM t0_aux
7403WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7404INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7405SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7406'just inserted' FROM t0_template
7407WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7408CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
7409BEGIN
7410UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7411f_charbig = 'updated by trigger'
7412      WHERE f_int1 = - old.f_int1;
7413END|
7414UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
7415WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7416
7417# check trigger-4 success: 	1
7418DROP TRIGGER trg_1;
7419UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7420f_int2 = CAST(f_char1 AS SIGNED INT),
7421f_charbig = 'just inserted'
7422   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7423DELETE FROM t0_aux
7424WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7425INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7426SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7427'just inserted' FROM t0_template
7428WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7429CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
7430BEGIN
7431UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7432f_charbig = 'updated by trigger'
7433      WHERE f_int1 = new.f_int1;
7434END|
7435UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
7436WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7437
7438# check trigger-5 success: 	1
7439DROP TRIGGER trg_1;
7440UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7441f_int2 = CAST(f_char1 AS SIGNED INT),
7442f_charbig = 'just inserted'
7443   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7444DELETE FROM t0_aux
7445WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7446INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7447SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7448'just inserted' FROM t0_template
7449WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7450CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
7451BEGIN
7452UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7453f_charbig = 'updated by trigger'
7454      WHERE f_int1 = - old.f_int1;
7455END|
7456UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
7457WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7458
7459# check trigger-6 success: 	1
7460DROP TRIGGER trg_1;
7461UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7462f_int2 = CAST(f_char1 AS SIGNED INT),
7463f_charbig = 'just inserted'
7464   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7465DELETE FROM t0_aux
7466WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7467INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7468SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7469'just inserted' FROM t0_template
7470WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7471CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
7472BEGIN
7473UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7474f_charbig = 'updated by trigger'
7475      WHERE f_int1 = - old.f_int1;
7476END|
7477DELETE FROM t0_aux
7478WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7479
7480# check trigger-7 success: 	1
7481DROP TRIGGER trg_1;
7482UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7483f_int2 = CAST(f_char1 AS SIGNED INT),
7484f_charbig = 'just inserted'
7485   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7486DELETE FROM t0_aux
7487WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7488INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7489SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7490'just inserted' FROM t0_template
7491WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7492CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
7493BEGIN
7494UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7495f_charbig = 'updated by trigger'
7496      WHERE f_int1 = - old.f_int1;
7497END|
7498DELETE FROM t0_aux
7499WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7500
7501# check trigger-8 success: 	1
7502DROP TRIGGER trg_1;
7503UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7504f_int2 = CAST(f_char1 AS SIGNED INT),
7505f_charbig = 'just inserted'
7506   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7507DELETE FROM t0_aux
7508WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7509DELETE FROM t1
7510WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7511CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
7512BEGIN
7513SET new.f_int1 = old.f_int1 + @max_row,
7514new.f_int2 = old.f_int2 - @max_row,
7515new.f_charbig = '####updated per update trigger####';
7516END|
7517UPDATE t1
7518SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
7519f_charbig = '####updated per update statement itself####';
7520Warnings:
7521Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
7522
7523# check trigger-9 success: 	1
7524DROP TRIGGER trg_2;
7525UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7526f_int2 = CAST(f_char1 AS SIGNED INT),
7527f_charbig = CONCAT('===',f_char1,'===');
7528Warnings:
7529Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
7530CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
7531BEGIN
7532SET new.f_int1 = new.f_int1 + @max_row,
7533new.f_int2 = new.f_int2 - @max_row,
7534new.f_charbig = '####updated per update trigger####';
7535END|
7536UPDATE t1
7537SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
7538f_charbig = '####updated per update statement itself####';
7539Warnings:
7540Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
7541
7542# check trigger-10 success: 	1
7543DROP TRIGGER trg_2;
7544UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7545f_int2 = CAST(f_char1 AS SIGNED INT),
7546f_charbig = CONCAT('===',f_char1,'===');
7547Warnings:
7548Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
7549CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
7550BEGIN
7551SET new.f_int1 = @my_max1 + @counter,
7552new.f_int2 = @my_min2 - @counter,
7553new.f_charbig = '####updated per insert trigger####';
7554SET @counter = @counter + 1;
7555END|
7556SET @counter = 1;
7557SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
7558Warnings:
7559Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
7560INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7561SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
7562CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
7563WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
7564ORDER BY f_int1;
7565DROP TRIGGER trg_3;
7566
7567# check trigger-11 success: 	1
7568Warnings:
7569Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
7570DELETE FROM t1
7571WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
7572AND f_int2 <> CAST(f_char1 AS SIGNED INT)
7573AND f_charbig = '####updated per insert trigger####';
7574CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
7575BEGIN
7576SET new.f_int1 = @my_max1 + @counter,
7577new.f_int2 = @my_min2 - @counter,
7578new.f_charbig = '####updated per insert trigger####';
7579SET @counter = @counter + 1;
7580END|
7581SET @counter = 1;
7582SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
7583Warnings:
7584Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
7585INSERT INTO t1 (f_char1, f_char2, f_charbig)
7586SELECT CAST(f_int1 AS CHAR),
7587CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
7588WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
7589ORDER BY f_int1;
7590DROP TRIGGER trg_3;
7591
7592# check trigger-12 success: 	1
7593Warnings:
7594Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
7595DELETE FROM t1
7596WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
7597AND f_int2 <> CAST(f_char1 AS SIGNED INT)
7598AND f_charbig = '####updated per insert trigger####';
7599ANALYZE  TABLE t1;
7600Table	Op	Msg_type	Msg_text
7601test.t1	analyze	status	OK
7602test.t1	analyze	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
7603CHECK    TABLE t1 EXTENDED;
7604Table	Op	Msg_type	Msg_text
7605test.t1	check	status	OK
7606test.t1	check	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
7607CHECKSUM TABLE t1 EXTENDED;
7608Table	Checksum
7609test.t1	<some_value>
7610OPTIMIZE TABLE t1;
7611Table	Op	Msg_type	Msg_text
7612test.t1	optimize	status	OK
7613test.t1	optimize	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
7614# check layout success:    1
7615REPAIR   TABLE t1 EXTENDED;
7616Table	Op	Msg_type	Msg_text
7617test.t1	repair	status	OK
7618test.t1	repair	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
7619# check layout success:    1
7620TRUNCATE t1;
7621Warnings:
7622Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
7623
7624# check TRUNCATE success: 	1
7625# check layout success:    1
7626# End usability test (inc/partition_check.inc)
7627DROP TABLE t1;
7628CREATE TABLE t1 (
7629f_int1 INTEGER,
7630f_int2 INTEGER,
7631f_char1 CHAR(20),
7632f_char2 CHAR(20),
7633f_charbig VARCHAR(1000)
7634, UNIQUE INDEX uidx1 (f_int1,f_int2)
7635)
7636PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
7637(PARTITION part1 VALUES IN (0)
7638(SUBPARTITION sp11, SUBPARTITION sp12),
7639PARTITION part2 VALUES IN (1)
7640(SUBPARTITION sp21, SUBPARTITION sp22),
7641PARTITION part3 VALUES IN (2)
7642(SUBPARTITION sp31, SUBPARTITION sp32),
7643PARTITION part4 VALUES IN (NULL)
7644(SUBPARTITION sp41, SUBPARTITION sp42));
7645Warnings:
7646Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
7647INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
7648SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
7649WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
7650Warnings:
7651Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
7652ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
7653Warnings:
7654Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
7655INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
7656SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
7657WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
7658Warnings:
7659Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
7660# Start usability test (inc/partition_check.inc)
7661create_command
7662SHOW CREATE TABLE t1;
7663Table	Create Table
7664t1	CREATE TABLE `t1` (
7665  `f_int1` int(11) DEFAULT NULL,
7666  `f_int2` mediumint(9) DEFAULT NULL,
7667  `f_char1` char(20) DEFAULT NULL,
7668  `f_char2` char(20) DEFAULT NULL,
7669  `f_charbig` varchar(1000) DEFAULT NULL,
7670  UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
7671) ENGINE=MyISAM DEFAULT CHARSET=latin1
7672/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
7673SUBPARTITION BY HASH (f_int1 + 1)
7674(PARTITION part1 VALUES IN (0)
7675 (SUBPARTITION sp11 ENGINE = MyISAM,
7676  SUBPARTITION sp12 ENGINE = MyISAM),
7677 PARTITION part2 VALUES IN (1)
7678 (SUBPARTITION sp21 ENGINE = MyISAM,
7679  SUBPARTITION sp22 ENGINE = MyISAM),
7680 PARTITION part3 VALUES IN (2)
7681 (SUBPARTITION sp31 ENGINE = MyISAM,
7682  SUBPARTITION sp32 ENGINE = MyISAM),
7683 PARTITION part4 VALUES IN (NULL)
7684 (SUBPARTITION sp41 ENGINE = MyISAM,
7685  SUBPARTITION sp42 ENGINE = MyISAM)) */
7686
7687unified filelist
7688t1#P#part1#SP#sp11.MYD
7689t1#P#part1#SP#sp11.MYI
7690t1#P#part1#SP#sp12.MYD
7691t1#P#part1#SP#sp12.MYI
7692t1#P#part2#SP#sp21.MYD
7693t1#P#part2#SP#sp21.MYI
7694t1#P#part2#SP#sp22.MYD
7695t1#P#part2#SP#sp22.MYI
7696t1#P#part3#SP#sp31.MYD
7697t1#P#part3#SP#sp31.MYI
7698t1#P#part3#SP#sp32.MYD
7699t1#P#part3#SP#sp32.MYI
7700t1#P#part4#SP#sp41.MYD
7701t1#P#part4#SP#sp41.MYI
7702t1#P#part4#SP#sp42.MYD
7703t1#P#part4#SP#sp42.MYI
7704t1.frm
7705t1.par
7706
7707# check prerequisites-1 success:    1
7708# check COUNT(*) success:    1
7709# check MIN/MAX(f_int1) success:    1
7710# check MIN/MAX(f_int2) success:    1
7711INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7712SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
7713CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
7714WHERE f_int1 IN (2,3);
7715ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
7716# check prerequisites-3 success:    1
7717# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
7718INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7719SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
7720CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
7721WHERE f_int1 IN (2,3);
7722DELETE FROM t1 WHERE f_charbig = 'delete me';
7723INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7724SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
7725CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
7726WHERE f_int1 IN (2,3);
7727DELETE FROM t1 WHERE f_charbig = 'delete me';
7728# check read via f_int1 success: 1
7729# check read via f_int2 success: 1
7730
7731# check multiple-1 success: 	1
7732DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
7733
7734# check multiple-2 success: 	1
7735INSERT INTO t1 SELECT * FROM t0_template
7736WHERE MOD(f_int1,3) = 0;
7737
7738# check multiple-3 success: 	1
7739UPDATE t1 SET f_int1 = f_int1 + @max_row
7740WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
7741AND @max_row_div2 + @max_row_div4;
7742
7743# check multiple-4 success: 	1
7744DELETE FROM t1
7745WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
7746AND @max_row_div2 + @max_row_div4 + @max_row;
7747
7748# check multiple-5 success: 	1
7749SELECT COUNT(*) INTO @try_count FROM t0_template
7750WHERE MOD(f_int1,3) = 0
7751AND f_int1 BETWEEN @max_row_div2 AND @max_row;
7752SELECT COUNT(*) INTO @clash_count
7753FROM t1 INNER JOIN t0_template USING(f_int1)
7754WHERE MOD(f_int1,3) = 0
7755AND f_int1 BETWEEN @max_row_div2 AND @max_row;
7756SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
7757INSERT INTO t1
7758SET f_int1 = @cur_value , f_int2 = @cur_value,
7759f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
7760f_charbig = '#SINGLE#';
7761
7762# check single-1 success: 	1
7763SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
7764INSERT INTO t1
7765SET f_int1 = @cur_value , f_int2 = @cur_value,
7766f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
7767f_charbig = '#SINGLE#';
7768
7769# check single-2 success: 	1
7770SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
7771SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
7772UPDATE t1 SET f_int1 = @cur_value2
7773WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
7774
7775# check single-3 success: 	1
7776SET @cur_value1= -1;
7777SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
7778UPDATE t1 SET f_int1 = @cur_value1
7779WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
7780
7781# check single-4 success: 	1
7782SELECT MAX(f_int1) INTO @cur_value FROM t1;
7783DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
7784
7785# check single-5 success: 	1
7786DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
7787
7788# check single-6 success: 	1
7789INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
7790Warnings:
7791Warning	1264	Out of range value for column 'f_int2' at row 1
7792
7793# check single-7 success: 	1
7794DELETE FROM t1 WHERE f_charbig = '#2147483647##';
7795DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
7796INSERT t1 SET f_int1 = 0 , f_int2 = 0,
7797f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
7798f_charbig = '#NULL#';
7799INSERT INTO t1
7800SET f_int1 = NULL , f_int2 = -@max_row,
7801f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
7802f_charbig = '#NULL#';
7803# check null success:    1
7804
7805# check null-1 success: 	1
7806UPDATE t1 SET f_int1 = -@max_row
7807WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
7808AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
7809
7810# check null-2 success: 	1
7811UPDATE t1 SET f_int1 = NULL
7812WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
7813AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
7814
7815# check null-3 success: 	1
7816DELETE FROM t1
7817WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
7818AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
7819
7820# check null-4 success: 	1
7821DELETE FROM t1
7822WHERE f_int1 = 0 AND f_int2 = 0
7823AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
7824AND f_charbig = '#NULL#';
7825INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7826SELECT f_int1, f_int1, '', '', 'was inserted'
7827   FROM t0_template source_tab
7828WHERE MOD(f_int1,3) = 0
7829AND f_int1 BETWEEN @max_row_div2 AND @max_row
7830ON DUPLICATE KEY
7831UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
7832f_int2 = 2 * @max_row + source_tab.f_int1,
7833f_charbig = 'was updated';
7834
7835# check unique-1-a success: 	1
7836
7837# check unique-1-b success: 	1
7838DELETE FROM t1 WHERE f_charbig = 'was inserted';
7839UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7840f_int2 = CAST(f_char1 AS SIGNED INT),
7841f_charbig = CONCAT('===',f_char1,'===')
7842WHERE f_charbig = 'was updated';
7843REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7844SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
7845   FROM t0_template source_tab
7846WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
7847
7848# check replace success: 	1
7849DELETE FROM t1
7850WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
7851DELETE FROM t1
7852WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
7853f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
7854UPDATE t1 SET f_int2 = f_int1,
7855f_char1 = CAST(f_int1 AS CHAR),
7856f_char2 = CAST(f_int1 AS CHAR),
7857f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
7858WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
7859SET AUTOCOMMIT= 0;
7860INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7861SELECT f_int1, f_int1, '', '', 'was inserted'
7862FROM t0_template source_tab
7863WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
7864
7865# check transactions-1 success: 	1
7866COMMIT WORK;
7867
7868# check transactions-2 success: 	1
7869ROLLBACK WORK;
7870
7871# check transactions-3 success: 	1
7872DELETE FROM t1 WHERE f_charbig = 'was inserted';
7873COMMIT WORK;
7874ROLLBACK WORK;
7875
7876# check transactions-4 success: 	1
7877INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7878SELECT f_int1, f_int1, '', '', 'was inserted'
7879FROM t0_template source_tab
7880WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
7881
7882# check transactions-5 success: 	1
7883ROLLBACK WORK;
7884Warnings:
7885Warning	1196	Some non-transactional changed tables couldn't be rolled back
7886
7887# check transactions-6 success: 	1
7888# INFO: Storage engine used for t1 seems to be not transactional.
7889COMMIT;
7890
7891# check transactions-7 success: 	1
7892DELETE FROM t1 WHERE f_charbig = 'was inserted';
7893COMMIT WORK;
7894SET @@session.sql_mode = 'traditional';
7895Warnings:
7896Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
7897SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
7898INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7899SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
7900'', '', 'was inserted' FROM t0_template
7901WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
7902ERROR 22012: Division by 0
7903COMMIT;
7904
7905# check transactions-8 success: 	1
7906# INFO: Storage engine used for t1 seems to be unable to revert
7907#       changes made by the failing statement.
7908SET @@session.sql_mode = '';
7909Warnings:
7910Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
7911SET AUTOCOMMIT= 1;
7912DELETE FROM t1 WHERE f_charbig = 'was inserted';
7913COMMIT WORK;
7914UPDATE t1 SET f_charbig = REPEAT('b', 1000);
7915
7916# check special-1 success: 	1
7917UPDATE t1 SET f_charbig = '';
7918
7919# check special-2 success: 	1
7920UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
7921INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
7922SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
7923WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7924INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7925SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7926'just inserted' FROM t0_template
7927WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7928CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
7929BEGIN
7930UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7931f_charbig = 'updated by trigger'
7932      WHERE f_int1 = new.f_int1;
7933END|
7934INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7935SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
7936WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7937
7938# check trigger-1 success: 	1
7939DROP TRIGGER trg_1;
7940UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7941f_int2 = CAST(f_char1 AS SIGNED INT),
7942f_charbig = 'just inserted'
7943   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7944DELETE FROM t0_aux
7945WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7946INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7947SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7948'just inserted' FROM t0_template
7949WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7950CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
7951BEGIN
7952UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7953f_charbig = 'updated by trigger'
7954      WHERE f_int1 = new.f_int1;
7955END|
7956INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7957SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
7958WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7959
7960# check trigger-2 success: 	1
7961DROP TRIGGER trg_1;
7962UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7963f_int2 = CAST(f_char1 AS SIGNED INT),
7964f_charbig = 'just inserted'
7965   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7966DELETE FROM t0_aux
7967WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7968INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7969SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7970'just inserted' FROM t0_template
7971WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7972CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
7973BEGIN
7974UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7975f_charbig = 'updated by trigger'
7976      WHERE f_int1 = new.f_int1;
7977END|
7978UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
7979WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7980
7981# check trigger-3 success: 	1
7982DROP TRIGGER trg_1;
7983UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7984f_int2 = CAST(f_char1 AS SIGNED INT),
7985f_charbig = 'just inserted'
7986   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7987DELETE FROM t0_aux
7988WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7989INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7990SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7991'just inserted' FROM t0_template
7992WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7993CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
7994BEGIN
7995UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7996f_charbig = 'updated by trigger'
7997      WHERE f_int1 = - old.f_int1;
7998END|
7999UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
8000WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8001
8002# check trigger-4 success: 	1
8003DROP TRIGGER trg_1;
8004UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8005f_int2 = CAST(f_char1 AS SIGNED INT),
8006f_charbig = 'just inserted'
8007   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8008DELETE FROM t0_aux
8009WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8010INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8011SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8012'just inserted' FROM t0_template
8013WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8014CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
8015BEGIN
8016UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8017f_charbig = 'updated by trigger'
8018      WHERE f_int1 = new.f_int1;
8019END|
8020UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
8021WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8022
8023# check trigger-5 success: 	1
8024DROP TRIGGER trg_1;
8025UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8026f_int2 = CAST(f_char1 AS SIGNED INT),
8027f_charbig = 'just inserted'
8028   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8029DELETE FROM t0_aux
8030WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8031INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8032SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8033'just inserted' FROM t0_template
8034WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8035CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
8036BEGIN
8037UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8038f_charbig = 'updated by trigger'
8039      WHERE f_int1 = - old.f_int1;
8040END|
8041UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
8042WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8043
8044# check trigger-6 success: 	1
8045DROP TRIGGER trg_1;
8046UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8047f_int2 = CAST(f_char1 AS SIGNED INT),
8048f_charbig = 'just inserted'
8049   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8050DELETE FROM t0_aux
8051WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8052INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8053SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8054'just inserted' FROM t0_template
8055WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8056CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
8057BEGIN
8058UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8059f_charbig = 'updated by trigger'
8060      WHERE f_int1 = - old.f_int1;
8061END|
8062DELETE FROM t0_aux
8063WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8064
8065# check trigger-7 success: 	1
8066DROP TRIGGER trg_1;
8067UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8068f_int2 = CAST(f_char1 AS SIGNED INT),
8069f_charbig = 'just inserted'
8070   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8071DELETE FROM t0_aux
8072WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8073INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8074SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8075'just inserted' FROM t0_template
8076WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8077CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
8078BEGIN
8079UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8080f_charbig = 'updated by trigger'
8081      WHERE f_int1 = - old.f_int1;
8082END|
8083DELETE FROM t0_aux
8084WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8085
8086# check trigger-8 success: 	1
8087DROP TRIGGER trg_1;
8088UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8089f_int2 = CAST(f_char1 AS SIGNED INT),
8090f_charbig = 'just inserted'
8091   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8092DELETE FROM t0_aux
8093WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8094DELETE FROM t1
8095WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8096CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
8097BEGIN
8098SET new.f_int1 = old.f_int1 + @max_row,
8099new.f_int2 = old.f_int2 - @max_row,
8100new.f_charbig = '####updated per update trigger####';
8101END|
8102UPDATE t1
8103SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
8104f_charbig = '####updated per update statement itself####';
8105Warnings:
8106Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
8107
8108# check trigger-9 success: 	1
8109DROP TRIGGER trg_2;
8110UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8111f_int2 = CAST(f_char1 AS SIGNED INT),
8112f_charbig = CONCAT('===',f_char1,'===');
8113Warnings:
8114Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
8115CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
8116BEGIN
8117SET new.f_int1 = new.f_int1 + @max_row,
8118new.f_int2 = new.f_int2 - @max_row,
8119new.f_charbig = '####updated per update trigger####';
8120END|
8121UPDATE t1
8122SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
8123f_charbig = '####updated per update statement itself####';
8124Warnings:
8125Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
8126
8127# check trigger-10 success: 	1
8128DROP TRIGGER trg_2;
8129UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8130f_int2 = CAST(f_char1 AS SIGNED INT),
8131f_charbig = CONCAT('===',f_char1,'===');
8132Warnings:
8133Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
8134CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
8135BEGIN
8136SET new.f_int1 = @my_max1 + @counter,
8137new.f_int2 = @my_min2 - @counter,
8138new.f_charbig = '####updated per insert trigger####';
8139SET @counter = @counter + 1;
8140END|
8141SET @counter = 1;
8142SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
8143Warnings:
8144Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
8145INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8146SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
8147CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
8148WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
8149ORDER BY f_int1;
8150DROP TRIGGER trg_3;
8151
8152# check trigger-11 success: 	1
8153Warnings:
8154Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
8155DELETE FROM t1
8156WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
8157AND f_int2 <> CAST(f_char1 AS SIGNED INT)
8158AND f_charbig = '####updated per insert trigger####';
8159CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
8160BEGIN
8161SET new.f_int1 = @my_max1 + @counter,
8162new.f_int2 = @my_min2 - @counter,
8163new.f_charbig = '####updated per insert trigger####';
8164SET @counter = @counter + 1;
8165END|
8166SET @counter = 1;
8167SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
8168Warnings:
8169Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
8170INSERT INTO t1 (f_char1, f_char2, f_charbig)
8171SELECT CAST(f_int1 AS CHAR),
8172CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
8173WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
8174ORDER BY f_int1;
8175DROP TRIGGER trg_3;
8176
8177# check trigger-12 success: 	1
8178Warnings:
8179Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
8180DELETE FROM t1
8181WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
8182AND f_int2 <> CAST(f_char1 AS SIGNED INT)
8183AND f_charbig = '####updated per insert trigger####';
8184ANALYZE  TABLE t1;
8185Table	Op	Msg_type	Msg_text
8186test.t1	analyze	status	OK
8187test.t1	analyze	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
8188CHECK    TABLE t1 EXTENDED;
8189Table	Op	Msg_type	Msg_text
8190test.t1	check	status	OK
8191test.t1	check	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
8192CHECKSUM TABLE t1 EXTENDED;
8193Table	Checksum
8194test.t1	<some_value>
8195OPTIMIZE TABLE t1;
8196Table	Op	Msg_type	Msg_text
8197test.t1	optimize	status	OK
8198test.t1	optimize	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
8199# check layout success:    1
8200REPAIR   TABLE t1 EXTENDED;
8201Table	Op	Msg_type	Msg_text
8202test.t1	repair	status	OK
8203test.t1	repair	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
8204# check layout success:    1
8205TRUNCATE t1;
8206Warnings:
8207Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
8208
8209# check TRUNCATE success: 	1
8210# check layout success:    1
8211# End usability test (inc/partition_check.inc)
8212DROP TABLE t1;
8213CREATE TABLE t1 (
8214f_int1 INTEGER,
8215f_int2 INTEGER,
8216f_char1 CHAR(20),
8217f_char2 CHAR(20),
8218f_charbig VARCHAR(1000)
8219, UNIQUE INDEX uidx1 (f_int1,f_int2)
8220)
8221PARTITION BY LIST(ABS(MOD(f_int1,2)))
8222SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
8223(PARTITION part1 VALUES IN (0),
8224PARTITION part2 VALUES IN (1),
8225PARTITION part3 VALUES IN (NULL));
8226Warnings:
8227Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
8228INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
8229SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
8230WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
8231Warnings:
8232Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
8233ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
8234Warnings:
8235Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
8236INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
8237SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
8238WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
8239Warnings:
8240Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
8241# Start usability test (inc/partition_check.inc)
8242create_command
8243SHOW CREATE TABLE t1;
8244Table	Create Table
8245t1	CREATE TABLE `t1` (
8246  `f_int1` int(11) DEFAULT NULL,
8247  `f_int2` mediumint(9) DEFAULT NULL,
8248  `f_char1` char(20) DEFAULT NULL,
8249  `f_char2` char(20) DEFAULT NULL,
8250  `f_charbig` varchar(1000) DEFAULT NULL,
8251  UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
8252) ENGINE=MyISAM DEFAULT CHARSET=latin1
8253/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
8254SUBPARTITION BY KEY (f_int1)
8255SUBPARTITIONS 3
8256(PARTITION part1 VALUES IN (0) ENGINE = MyISAM,
8257 PARTITION part2 VALUES IN (1) ENGINE = MyISAM,
8258 PARTITION part3 VALUES IN (NULL) ENGINE = MyISAM) */
8259
8260unified filelist
8261t1#P#part1#SP#part1sp0.MYD
8262t1#P#part1#SP#part1sp0.MYI
8263t1#P#part1#SP#part1sp1.MYD
8264t1#P#part1#SP#part1sp1.MYI
8265t1#P#part1#SP#part1sp2.MYD
8266t1#P#part1#SP#part1sp2.MYI
8267t1#P#part2#SP#part2sp0.MYD
8268t1#P#part2#SP#part2sp0.MYI
8269t1#P#part2#SP#part2sp1.MYD
8270t1#P#part2#SP#part2sp1.MYI
8271t1#P#part2#SP#part2sp2.MYD
8272t1#P#part2#SP#part2sp2.MYI
8273t1#P#part3#SP#part3sp0.MYD
8274t1#P#part3#SP#part3sp0.MYI
8275t1#P#part3#SP#part3sp1.MYD
8276t1#P#part3#SP#part3sp1.MYI
8277t1#P#part3#SP#part3sp2.MYD
8278t1#P#part3#SP#part3sp2.MYI
8279t1.frm
8280t1.par
8281
8282# check prerequisites-1 success:    1
8283# check COUNT(*) success:    1
8284# check MIN/MAX(f_int1) success:    1
8285# check MIN/MAX(f_int2) success:    1
8286INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8287SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
8288CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
8289WHERE f_int1 IN (2,3);
8290ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
8291# check prerequisites-3 success:    1
8292# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
8293INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8294SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
8295CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
8296WHERE f_int1 IN (2,3);
8297DELETE FROM t1 WHERE f_charbig = 'delete me';
8298INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8299SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
8300CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
8301WHERE f_int1 IN (2,3);
8302DELETE FROM t1 WHERE f_charbig = 'delete me';
8303# check read via f_int1 success: 1
8304# check read via f_int2 success: 1
8305
8306# check multiple-1 success: 	1
8307DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
8308
8309# check multiple-2 success: 	1
8310INSERT INTO t1 SELECT * FROM t0_template
8311WHERE MOD(f_int1,3) = 0;
8312
8313# check multiple-3 success: 	1
8314UPDATE t1 SET f_int1 = f_int1 + @max_row
8315WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
8316AND @max_row_div2 + @max_row_div4;
8317
8318# check multiple-4 success: 	1
8319DELETE FROM t1
8320WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
8321AND @max_row_div2 + @max_row_div4 + @max_row;
8322
8323# check multiple-5 success: 	1
8324SELECT COUNT(*) INTO @try_count FROM t0_template
8325WHERE MOD(f_int1,3) = 0
8326AND f_int1 BETWEEN @max_row_div2 AND @max_row;
8327SELECT COUNT(*) INTO @clash_count
8328FROM t1 INNER JOIN t0_template USING(f_int1)
8329WHERE MOD(f_int1,3) = 0
8330AND f_int1 BETWEEN @max_row_div2 AND @max_row;
8331SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
8332INSERT INTO t1
8333SET f_int1 = @cur_value , f_int2 = @cur_value,
8334f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
8335f_charbig = '#SINGLE#';
8336
8337# check single-1 success: 	1
8338SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
8339INSERT INTO t1
8340SET f_int1 = @cur_value , f_int2 = @cur_value,
8341f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
8342f_charbig = '#SINGLE#';
8343
8344# check single-2 success: 	1
8345SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
8346SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
8347UPDATE t1 SET f_int1 = @cur_value2
8348WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
8349
8350# check single-3 success: 	1
8351SET @cur_value1= -1;
8352SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
8353UPDATE t1 SET f_int1 = @cur_value1
8354WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
8355
8356# check single-4 success: 	1
8357SELECT MAX(f_int1) INTO @cur_value FROM t1;
8358DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
8359
8360# check single-5 success: 	1
8361DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
8362
8363# check single-6 success: 	1
8364INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
8365Warnings:
8366Warning	1264	Out of range value for column 'f_int2' at row 1
8367
8368# check single-7 success: 	1
8369DELETE FROM t1 WHERE f_charbig = '#2147483647##';
8370DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
8371INSERT t1 SET f_int1 = 0 , f_int2 = 0,
8372f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
8373f_charbig = '#NULL#';
8374INSERT INTO t1
8375SET f_int1 = NULL , f_int2 = -@max_row,
8376f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
8377f_charbig = '#NULL#';
8378# check null success:    1
8379
8380# check null-1 success: 	1
8381UPDATE t1 SET f_int1 = -@max_row
8382WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
8383AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
8384
8385# check null-2 success: 	1
8386UPDATE t1 SET f_int1 = NULL
8387WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
8388AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
8389
8390# check null-3 success: 	1
8391DELETE FROM t1
8392WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
8393AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
8394
8395# check null-4 success: 	1
8396DELETE FROM t1
8397WHERE f_int1 = 0 AND f_int2 = 0
8398AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
8399AND f_charbig = '#NULL#';
8400INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8401SELECT f_int1, f_int1, '', '', 'was inserted'
8402   FROM t0_template source_tab
8403WHERE MOD(f_int1,3) = 0
8404AND f_int1 BETWEEN @max_row_div2 AND @max_row
8405ON DUPLICATE KEY
8406UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
8407f_int2 = 2 * @max_row + source_tab.f_int1,
8408f_charbig = 'was updated';
8409
8410# check unique-1-a success: 	1
8411
8412# check unique-1-b success: 	1
8413DELETE FROM t1 WHERE f_charbig = 'was inserted';
8414UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8415f_int2 = CAST(f_char1 AS SIGNED INT),
8416f_charbig = CONCAT('===',f_char1,'===')
8417WHERE f_charbig = 'was updated';
8418REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8419SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
8420   FROM t0_template source_tab
8421WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
8422
8423# check replace success: 	1
8424DELETE FROM t1
8425WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
8426DELETE FROM t1
8427WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
8428f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
8429UPDATE t1 SET f_int2 = f_int1,
8430f_char1 = CAST(f_int1 AS CHAR),
8431f_char2 = CAST(f_int1 AS CHAR),
8432f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
8433WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
8434SET AUTOCOMMIT= 0;
8435INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8436SELECT f_int1, f_int1, '', '', 'was inserted'
8437FROM t0_template source_tab
8438WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
8439
8440# check transactions-1 success: 	1
8441COMMIT WORK;
8442
8443# check transactions-2 success: 	1
8444ROLLBACK WORK;
8445
8446# check transactions-3 success: 	1
8447DELETE FROM t1 WHERE f_charbig = 'was inserted';
8448COMMIT WORK;
8449ROLLBACK WORK;
8450
8451# check transactions-4 success: 	1
8452INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8453SELECT f_int1, f_int1, '', '', 'was inserted'
8454FROM t0_template source_tab
8455WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
8456
8457# check transactions-5 success: 	1
8458ROLLBACK WORK;
8459Warnings:
8460Warning	1196	Some non-transactional changed tables couldn't be rolled back
8461
8462# check transactions-6 success: 	1
8463# INFO: Storage engine used for t1 seems to be not transactional.
8464COMMIT;
8465
8466# check transactions-7 success: 	1
8467DELETE FROM t1 WHERE f_charbig = 'was inserted';
8468COMMIT WORK;
8469SET @@session.sql_mode = 'traditional';
8470Warnings:
8471Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
8472SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
8473INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8474SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
8475'', '', 'was inserted' FROM t0_template
8476WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
8477ERROR 22012: Division by 0
8478COMMIT;
8479
8480# check transactions-8 success: 	1
8481# INFO: Storage engine used for t1 seems to be unable to revert
8482#       changes made by the failing statement.
8483SET @@session.sql_mode = '';
8484Warnings:
8485Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
8486SET AUTOCOMMIT= 1;
8487DELETE FROM t1 WHERE f_charbig = 'was inserted';
8488COMMIT WORK;
8489UPDATE t1 SET f_charbig = REPEAT('b', 1000);
8490
8491# check special-1 success: 	1
8492UPDATE t1 SET f_charbig = '';
8493
8494# check special-2 success: 	1
8495UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
8496INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
8497SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
8498WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8499INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8500SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8501'just inserted' FROM t0_template
8502WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8503CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
8504BEGIN
8505UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8506f_charbig = 'updated by trigger'
8507      WHERE f_int1 = new.f_int1;
8508END|
8509INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8510SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
8511WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8512
8513# check trigger-1 success: 	1
8514DROP TRIGGER trg_1;
8515UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8516f_int2 = CAST(f_char1 AS SIGNED INT),
8517f_charbig = 'just inserted'
8518   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8519DELETE FROM t0_aux
8520WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8521INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8522SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8523'just inserted' FROM t0_template
8524WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8525CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
8526BEGIN
8527UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8528f_charbig = 'updated by trigger'
8529      WHERE f_int1 = new.f_int1;
8530END|
8531INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8532SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
8533WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8534
8535# check trigger-2 success: 	1
8536DROP TRIGGER trg_1;
8537UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8538f_int2 = CAST(f_char1 AS SIGNED INT),
8539f_charbig = 'just inserted'
8540   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8541DELETE FROM t0_aux
8542WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8543INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8544SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8545'just inserted' FROM t0_template
8546WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8547CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
8548BEGIN
8549UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8550f_charbig = 'updated by trigger'
8551      WHERE f_int1 = new.f_int1;
8552END|
8553UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
8554WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8555
8556# check trigger-3 success: 	1
8557DROP TRIGGER trg_1;
8558UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8559f_int2 = CAST(f_char1 AS SIGNED INT),
8560f_charbig = 'just inserted'
8561   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8562DELETE FROM t0_aux
8563WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8564INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8565SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8566'just inserted' FROM t0_template
8567WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8568CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
8569BEGIN
8570UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8571f_charbig = 'updated by trigger'
8572      WHERE f_int1 = - old.f_int1;
8573END|
8574UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
8575WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8576
8577# check trigger-4 success: 	1
8578DROP TRIGGER trg_1;
8579UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8580f_int2 = CAST(f_char1 AS SIGNED INT),
8581f_charbig = 'just inserted'
8582   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8583DELETE FROM t0_aux
8584WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8585INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8586SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8587'just inserted' FROM t0_template
8588WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8589CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
8590BEGIN
8591UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8592f_charbig = 'updated by trigger'
8593      WHERE f_int1 = new.f_int1;
8594END|
8595UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
8596WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8597
8598# check trigger-5 success: 	1
8599DROP TRIGGER trg_1;
8600UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8601f_int2 = CAST(f_char1 AS SIGNED INT),
8602f_charbig = 'just inserted'
8603   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8604DELETE FROM t0_aux
8605WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8606INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8607SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8608'just inserted' FROM t0_template
8609WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8610CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
8611BEGIN
8612UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8613f_charbig = 'updated by trigger'
8614      WHERE f_int1 = - old.f_int1;
8615END|
8616UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
8617WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8618
8619# check trigger-6 success: 	1
8620DROP TRIGGER trg_1;
8621UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8622f_int2 = CAST(f_char1 AS SIGNED INT),
8623f_charbig = 'just inserted'
8624   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8625DELETE FROM t0_aux
8626WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8627INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8628SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8629'just inserted' FROM t0_template
8630WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8631CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
8632BEGIN
8633UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8634f_charbig = 'updated by trigger'
8635      WHERE f_int1 = - old.f_int1;
8636END|
8637DELETE FROM t0_aux
8638WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8639
8640# check trigger-7 success: 	1
8641DROP TRIGGER trg_1;
8642UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8643f_int2 = CAST(f_char1 AS SIGNED INT),
8644f_charbig = 'just inserted'
8645   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8646DELETE FROM t0_aux
8647WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8648INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8649SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8650'just inserted' FROM t0_template
8651WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8652CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
8653BEGIN
8654UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8655f_charbig = 'updated by trigger'
8656      WHERE f_int1 = - old.f_int1;
8657END|
8658DELETE FROM t0_aux
8659WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8660
8661# check trigger-8 success: 	1
8662DROP TRIGGER trg_1;
8663UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8664f_int2 = CAST(f_char1 AS SIGNED INT),
8665f_charbig = 'just inserted'
8666   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8667DELETE FROM t0_aux
8668WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8669DELETE FROM t1
8670WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8671CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
8672BEGIN
8673SET new.f_int1 = old.f_int1 + @max_row,
8674new.f_int2 = old.f_int2 - @max_row,
8675new.f_charbig = '####updated per update trigger####';
8676END|
8677UPDATE t1
8678SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
8679f_charbig = '####updated per update statement itself####';
8680Warnings:
8681Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
8682
8683# check trigger-9 success: 	1
8684DROP TRIGGER trg_2;
8685UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8686f_int2 = CAST(f_char1 AS SIGNED INT),
8687f_charbig = CONCAT('===',f_char1,'===');
8688Warnings:
8689Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
8690CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
8691BEGIN
8692SET new.f_int1 = new.f_int1 + @max_row,
8693new.f_int2 = new.f_int2 - @max_row,
8694new.f_charbig = '####updated per update trigger####';
8695END|
8696UPDATE t1
8697SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
8698f_charbig = '####updated per update statement itself####';
8699Warnings:
8700Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
8701
8702# check trigger-10 success: 	1
8703DROP TRIGGER trg_2;
8704UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8705f_int2 = CAST(f_char1 AS SIGNED INT),
8706f_charbig = CONCAT('===',f_char1,'===');
8707Warnings:
8708Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
8709CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
8710BEGIN
8711SET new.f_int1 = @my_max1 + @counter,
8712new.f_int2 = @my_min2 - @counter,
8713new.f_charbig = '####updated per insert trigger####';
8714SET @counter = @counter + 1;
8715END|
8716SET @counter = 1;
8717SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
8718Warnings:
8719Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
8720INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8721SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
8722CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
8723WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
8724ORDER BY f_int1;
8725DROP TRIGGER trg_3;
8726
8727# check trigger-11 success: 	1
8728Warnings:
8729Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
8730DELETE FROM t1
8731WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
8732AND f_int2 <> CAST(f_char1 AS SIGNED INT)
8733AND f_charbig = '####updated per insert trigger####';
8734CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
8735BEGIN
8736SET new.f_int1 = @my_max1 + @counter,
8737new.f_int2 = @my_min2 - @counter,
8738new.f_charbig = '####updated per insert trigger####';
8739SET @counter = @counter + 1;
8740END|
8741SET @counter = 1;
8742SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
8743Warnings:
8744Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
8745INSERT INTO t1 (f_char1, f_char2, f_charbig)
8746SELECT CAST(f_int1 AS CHAR),
8747CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
8748WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
8749ORDER BY f_int1;
8750DROP TRIGGER trg_3;
8751
8752# check trigger-12 success: 	1
8753Warnings:
8754Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
8755DELETE FROM t1
8756WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
8757AND f_int2 <> CAST(f_char1 AS SIGNED INT)
8758AND f_charbig = '####updated per insert trigger####';
8759ANALYZE  TABLE t1;
8760Table	Op	Msg_type	Msg_text
8761test.t1	analyze	status	OK
8762test.t1	analyze	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
8763CHECK    TABLE t1 EXTENDED;
8764Table	Op	Msg_type	Msg_text
8765test.t1	check	status	OK
8766test.t1	check	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
8767CHECKSUM TABLE t1 EXTENDED;
8768Table	Checksum
8769test.t1	<some_value>
8770OPTIMIZE TABLE t1;
8771Table	Op	Msg_type	Msg_text
8772test.t1	optimize	status	OK
8773test.t1	optimize	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
8774# check layout success:    1
8775REPAIR   TABLE t1 EXTENDED;
8776Table	Op	Msg_type	Msg_text
8777test.t1	repair	status	OK
8778test.t1	repair	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
8779# check layout success:    1
8780TRUNCATE t1;
8781Warnings:
8782Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
8783
8784# check TRUNCATE success: 	1
8785# check layout success:    1
8786# End usability test (inc/partition_check.inc)
8787DROP TABLE t1;
8788DROP TABLE IF EXISTS t1;
8789CREATE TABLE t1 (
8790f_int1 INTEGER,
8791f_int2 INTEGER,
8792f_char1 CHAR(20),
8793f_char2 CHAR(20),
8794f_charbig VARCHAR(1000)
8795, UNIQUE INDEX uidx1 (f_int2,f_int1)
8796)
8797PARTITION BY HASH(f_int1) PARTITIONS 2;
8798Warnings:
8799Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
8800INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
8801SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
8802WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
8803Warnings:
8804Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
8805ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
8806Warnings:
8807Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
8808INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
8809SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
8810WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
8811Warnings:
8812Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
8813# Start usability test (inc/partition_check.inc)
8814create_command
8815SHOW CREATE TABLE t1;
8816Table	Create Table
8817t1	CREATE TABLE `t1` (
8818  `f_int1` int(11) DEFAULT NULL,
8819  `f_int2` mediumint(9) DEFAULT NULL,
8820  `f_char1` char(20) DEFAULT NULL,
8821  `f_char2` char(20) DEFAULT NULL,
8822  `f_charbig` varchar(1000) DEFAULT NULL,
8823  UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
8824) ENGINE=MyISAM DEFAULT CHARSET=latin1
8825/*!50100 PARTITION BY HASH (f_int1)
8826PARTITIONS 2 */
8827
8828unified filelist
8829t1#P#p0.MYD
8830t1#P#p0.MYI
8831t1#P#p1.MYD
8832t1#P#p1.MYI
8833t1.frm
8834t1.par
8835
8836# check prerequisites-1 success:    1
8837# check COUNT(*) success:    1
8838# check MIN/MAX(f_int1) success:    1
8839# check MIN/MAX(f_int2) success:    1
8840INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8841SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
8842CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
8843WHERE f_int1 IN (2,3);
8844ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
8845# check prerequisites-3 success:    1
8846# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
8847INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8848SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
8849CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
8850WHERE f_int1 IN (2,3);
8851DELETE FROM t1 WHERE f_charbig = 'delete me';
8852INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8853SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
8854CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
8855WHERE f_int1 IN (2,3);
8856DELETE FROM t1 WHERE f_charbig = 'delete me';
8857# check read via f_int1 success: 1
8858# check read via f_int2 success: 1
8859
8860# check multiple-1 success: 	1
8861DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
8862
8863# check multiple-2 success: 	1
8864INSERT INTO t1 SELECT * FROM t0_template
8865WHERE MOD(f_int1,3) = 0;
8866
8867# check multiple-3 success: 	1
8868UPDATE t1 SET f_int1 = f_int1 + @max_row
8869WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
8870AND @max_row_div2 + @max_row_div4;
8871
8872# check multiple-4 success: 	1
8873DELETE FROM t1
8874WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
8875AND @max_row_div2 + @max_row_div4 + @max_row;
8876
8877# check multiple-5 success: 	1
8878SELECT COUNT(*) INTO @try_count FROM t0_template
8879WHERE MOD(f_int1,3) = 0
8880AND f_int1 BETWEEN @max_row_div2 AND @max_row;
8881SELECT COUNT(*) INTO @clash_count
8882FROM t1 INNER JOIN t0_template USING(f_int1)
8883WHERE MOD(f_int1,3) = 0
8884AND f_int1 BETWEEN @max_row_div2 AND @max_row;
8885SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
8886INSERT INTO t1
8887SET f_int1 = @cur_value , f_int2 = @cur_value,
8888f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
8889f_charbig = '#SINGLE#';
8890
8891# check single-1 success: 	1
8892SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
8893INSERT INTO t1
8894SET f_int1 = @cur_value , f_int2 = @cur_value,
8895f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
8896f_charbig = '#SINGLE#';
8897
8898# check single-2 success: 	1
8899SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
8900SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
8901UPDATE t1 SET f_int1 = @cur_value2
8902WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
8903
8904# check single-3 success: 	1
8905SET @cur_value1= -1;
8906SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
8907UPDATE t1 SET f_int1 = @cur_value1
8908WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
8909
8910# check single-4 success: 	1
8911SELECT MAX(f_int1) INTO @cur_value FROM t1;
8912DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
8913
8914# check single-5 success: 	1
8915DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
8916
8917# check single-6 success: 	1
8918INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
8919Warnings:
8920Warning	1264	Out of range value for column 'f_int2' at row 1
8921
8922# check single-7 success: 	1
8923DELETE FROM t1 WHERE f_charbig = '#2147483647##';
8924DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
8925INSERT t1 SET f_int1 = 0 , f_int2 = 0,
8926f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
8927f_charbig = '#NULL#';
8928INSERT INTO t1
8929SET f_int1 = NULL , f_int2 = -@max_row,
8930f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
8931f_charbig = '#NULL#';
8932# check null success:    1
8933
8934# check null-1 success: 	1
8935UPDATE t1 SET f_int1 = -@max_row
8936WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
8937AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
8938
8939# check null-2 success: 	1
8940UPDATE t1 SET f_int1 = NULL
8941WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
8942AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
8943
8944# check null-3 success: 	1
8945DELETE FROM t1
8946WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
8947AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
8948
8949# check null-4 success: 	1
8950DELETE FROM t1
8951WHERE f_int1 = 0 AND f_int2 = 0
8952AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
8953AND f_charbig = '#NULL#';
8954INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8955SELECT f_int1, f_int1, '', '', 'was inserted'
8956   FROM t0_template source_tab
8957WHERE MOD(f_int1,3) = 0
8958AND f_int1 BETWEEN @max_row_div2 AND @max_row
8959ON DUPLICATE KEY
8960UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
8961f_int2 = 2 * @max_row + source_tab.f_int1,
8962f_charbig = 'was updated';
8963
8964# check unique-1-a success: 	1
8965
8966# check unique-1-b success: 	1
8967DELETE FROM t1 WHERE f_charbig = 'was inserted';
8968UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8969f_int2 = CAST(f_char1 AS SIGNED INT),
8970f_charbig = CONCAT('===',f_char1,'===')
8971WHERE f_charbig = 'was updated';
8972REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8973SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
8974   FROM t0_template source_tab
8975WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
8976
8977# check replace success: 	1
8978DELETE FROM t1
8979WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
8980DELETE FROM t1
8981WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
8982f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
8983UPDATE t1 SET f_int2 = f_int1,
8984f_char1 = CAST(f_int1 AS CHAR),
8985f_char2 = CAST(f_int1 AS CHAR),
8986f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
8987WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
8988SET AUTOCOMMIT= 0;
8989INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8990SELECT f_int1, f_int1, '', '', 'was inserted'
8991FROM t0_template source_tab
8992WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
8993
8994# check transactions-1 success: 	1
8995COMMIT WORK;
8996
8997# check transactions-2 success: 	1
8998ROLLBACK WORK;
8999
9000# check transactions-3 success: 	1
9001DELETE FROM t1 WHERE f_charbig = 'was inserted';
9002COMMIT WORK;
9003ROLLBACK WORK;
9004
9005# check transactions-4 success: 	1
9006INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9007SELECT f_int1, f_int1, '', '', 'was inserted'
9008FROM t0_template source_tab
9009WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
9010
9011# check transactions-5 success: 	1
9012ROLLBACK WORK;
9013Warnings:
9014Warning	1196	Some non-transactional changed tables couldn't be rolled back
9015
9016# check transactions-6 success: 	1
9017# INFO: Storage engine used for t1 seems to be not transactional.
9018COMMIT;
9019
9020# check transactions-7 success: 	1
9021DELETE FROM t1 WHERE f_charbig = 'was inserted';
9022COMMIT WORK;
9023SET @@session.sql_mode = 'traditional';
9024Warnings:
9025Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
9026SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
9027INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9028SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
9029'', '', 'was inserted' FROM t0_template
9030WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
9031ERROR 22012: Division by 0
9032COMMIT;
9033
9034# check transactions-8 success: 	1
9035# INFO: Storage engine used for t1 seems to be unable to revert
9036#       changes made by the failing statement.
9037SET @@session.sql_mode = '';
9038Warnings:
9039Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
9040SET AUTOCOMMIT= 1;
9041DELETE FROM t1 WHERE f_charbig = 'was inserted';
9042COMMIT WORK;
9043UPDATE t1 SET f_charbig = REPEAT('b', 1000);
9044
9045# check special-1 success: 	1
9046UPDATE t1 SET f_charbig = '';
9047
9048# check special-2 success: 	1
9049UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
9050INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
9051SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
9052WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9053INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9054SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9055'just inserted' FROM t0_template
9056WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9057CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
9058BEGIN
9059UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9060f_charbig = 'updated by trigger'
9061      WHERE f_int1 = new.f_int1;
9062END|
9063INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9064SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
9065WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9066
9067# check trigger-1 success: 	1
9068DROP TRIGGER trg_1;
9069UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9070f_int2 = CAST(f_char1 AS SIGNED INT),
9071f_charbig = 'just inserted'
9072   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9073DELETE FROM t0_aux
9074WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9075INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9076SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9077'just inserted' FROM t0_template
9078WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9079CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
9080BEGIN
9081UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9082f_charbig = 'updated by trigger'
9083      WHERE f_int1 = new.f_int1;
9084END|
9085INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9086SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
9087WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9088
9089# check trigger-2 success: 	1
9090DROP TRIGGER trg_1;
9091UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9092f_int2 = CAST(f_char1 AS SIGNED INT),
9093f_charbig = 'just inserted'
9094   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9095DELETE FROM t0_aux
9096WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9097INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9098SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9099'just inserted' FROM t0_template
9100WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9101CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
9102BEGIN
9103UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9104f_charbig = 'updated by trigger'
9105      WHERE f_int1 = new.f_int1;
9106END|
9107UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
9108WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9109
9110# check trigger-3 success: 	1
9111DROP TRIGGER trg_1;
9112UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9113f_int2 = CAST(f_char1 AS SIGNED INT),
9114f_charbig = 'just inserted'
9115   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9116DELETE FROM t0_aux
9117WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9118INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9119SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9120'just inserted' FROM t0_template
9121WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9122CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
9123BEGIN
9124UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9125f_charbig = 'updated by trigger'
9126      WHERE f_int1 = - old.f_int1;
9127END|
9128UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
9129WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9130
9131# check trigger-4 success: 	1
9132DROP TRIGGER trg_1;
9133UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9134f_int2 = CAST(f_char1 AS SIGNED INT),
9135f_charbig = 'just inserted'
9136   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9137DELETE FROM t0_aux
9138WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9139INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9140SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9141'just inserted' FROM t0_template
9142WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9143CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
9144BEGIN
9145UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9146f_charbig = 'updated by trigger'
9147      WHERE f_int1 = new.f_int1;
9148END|
9149UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
9150WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9151
9152# check trigger-5 success: 	1
9153DROP TRIGGER trg_1;
9154UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9155f_int2 = CAST(f_char1 AS SIGNED INT),
9156f_charbig = 'just inserted'
9157   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9158DELETE FROM t0_aux
9159WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9160INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9161SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9162'just inserted' FROM t0_template
9163WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9164CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
9165BEGIN
9166UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9167f_charbig = 'updated by trigger'
9168      WHERE f_int1 = - old.f_int1;
9169END|
9170UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
9171WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9172
9173# check trigger-6 success: 	1
9174DROP TRIGGER trg_1;
9175UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9176f_int2 = CAST(f_char1 AS SIGNED INT),
9177f_charbig = 'just inserted'
9178   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9179DELETE FROM t0_aux
9180WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9181INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9182SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9183'just inserted' FROM t0_template
9184WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9185CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
9186BEGIN
9187UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9188f_charbig = 'updated by trigger'
9189      WHERE f_int1 = - old.f_int1;
9190END|
9191DELETE FROM t0_aux
9192WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9193
9194# check trigger-7 success: 	1
9195DROP TRIGGER trg_1;
9196UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9197f_int2 = CAST(f_char1 AS SIGNED INT),
9198f_charbig = 'just inserted'
9199   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9200DELETE FROM t0_aux
9201WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9202INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9203SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9204'just inserted' FROM t0_template
9205WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9206CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
9207BEGIN
9208UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9209f_charbig = 'updated by trigger'
9210      WHERE f_int1 = - old.f_int1;
9211END|
9212DELETE FROM t0_aux
9213WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9214
9215# check trigger-8 success: 	1
9216DROP TRIGGER trg_1;
9217UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9218f_int2 = CAST(f_char1 AS SIGNED INT),
9219f_charbig = 'just inserted'
9220   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9221DELETE FROM t0_aux
9222WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9223DELETE FROM t1
9224WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9225CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
9226BEGIN
9227SET new.f_int1 = old.f_int1 + @max_row,
9228new.f_int2 = old.f_int2 - @max_row,
9229new.f_charbig = '####updated per update trigger####';
9230END|
9231UPDATE t1
9232SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
9233f_charbig = '####updated per update statement itself####';
9234Warnings:
9235Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
9236
9237# check trigger-9 success: 	1
9238DROP TRIGGER trg_2;
9239UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9240f_int2 = CAST(f_char1 AS SIGNED INT),
9241f_charbig = CONCAT('===',f_char1,'===');
9242Warnings:
9243Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
9244CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
9245BEGIN
9246SET new.f_int1 = new.f_int1 + @max_row,
9247new.f_int2 = new.f_int2 - @max_row,
9248new.f_charbig = '####updated per update trigger####';
9249END|
9250UPDATE t1
9251SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
9252f_charbig = '####updated per update statement itself####';
9253Warnings:
9254Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
9255
9256# check trigger-10 success: 	1
9257DROP TRIGGER trg_2;
9258UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9259f_int2 = CAST(f_char1 AS SIGNED INT),
9260f_charbig = CONCAT('===',f_char1,'===');
9261Warnings:
9262Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
9263CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
9264BEGIN
9265SET new.f_int1 = @my_max1 + @counter,
9266new.f_int2 = @my_min2 - @counter,
9267new.f_charbig = '####updated per insert trigger####';
9268SET @counter = @counter + 1;
9269END|
9270SET @counter = 1;
9271SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
9272Warnings:
9273Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
9274INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9275SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
9276CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
9277WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
9278ORDER BY f_int1;
9279DROP TRIGGER trg_3;
9280
9281# check trigger-11 success: 	1
9282Warnings:
9283Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
9284DELETE FROM t1
9285WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
9286AND f_int2 <> CAST(f_char1 AS SIGNED INT)
9287AND f_charbig = '####updated per insert trigger####';
9288CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
9289BEGIN
9290SET new.f_int1 = @my_max1 + @counter,
9291new.f_int2 = @my_min2 - @counter,
9292new.f_charbig = '####updated per insert trigger####';
9293SET @counter = @counter + 1;
9294END|
9295SET @counter = 1;
9296SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
9297Warnings:
9298Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
9299INSERT INTO t1 (f_char1, f_char2, f_charbig)
9300SELECT CAST(f_int1 AS CHAR),
9301CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
9302WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
9303ORDER BY f_int1;
9304DROP TRIGGER trg_3;
9305
9306# check trigger-12 success: 	1
9307Warnings:
9308Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
9309DELETE FROM t1
9310WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
9311AND f_int2 <> CAST(f_char1 AS SIGNED INT)
9312AND f_charbig = '####updated per insert trigger####';
9313ANALYZE  TABLE t1;
9314Table	Op	Msg_type	Msg_text
9315test.t1	analyze	status	OK
9316test.t1	analyze	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
9317CHECK    TABLE t1 EXTENDED;
9318Table	Op	Msg_type	Msg_text
9319test.t1	check	status	OK
9320test.t1	check	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
9321CHECKSUM TABLE t1 EXTENDED;
9322Table	Checksum
9323test.t1	<some_value>
9324OPTIMIZE TABLE t1;
9325Table	Op	Msg_type	Msg_text
9326test.t1	optimize	status	OK
9327test.t1	optimize	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
9328# check layout success:    1
9329REPAIR   TABLE t1 EXTENDED;
9330Table	Op	Msg_type	Msg_text
9331test.t1	repair	status	OK
9332test.t1	repair	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
9333# check layout success:    1
9334TRUNCATE t1;
9335Warnings:
9336Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
9337
9338# check TRUNCATE success: 	1
9339# check layout success:    1
9340# End usability test (inc/partition_check.inc)
9341DROP TABLE t1;
9342CREATE TABLE t1 (
9343f_int1 INTEGER,
9344f_int2 INTEGER,
9345f_char1 CHAR(20),
9346f_char2 CHAR(20),
9347f_charbig VARCHAR(1000)
9348, UNIQUE INDEX uidx1 (f_int2,f_int1)
9349)
9350PARTITION BY KEY(f_int1) PARTITIONS 5;
9351Warnings:
9352Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
9353INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
9354SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
9355WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
9356Warnings:
9357Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
9358ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
9359Warnings:
9360Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
9361INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
9362SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
9363WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
9364Warnings:
9365Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
9366# Start usability test (inc/partition_check.inc)
9367create_command
9368SHOW CREATE TABLE t1;
9369Table	Create Table
9370t1	CREATE TABLE `t1` (
9371  `f_int1` int(11) DEFAULT NULL,
9372  `f_int2` mediumint(9) DEFAULT NULL,
9373  `f_char1` char(20) DEFAULT NULL,
9374  `f_char2` char(20) DEFAULT NULL,
9375  `f_charbig` varchar(1000) DEFAULT NULL,
9376  UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
9377) ENGINE=MyISAM DEFAULT CHARSET=latin1
9378/*!50100 PARTITION BY KEY (f_int1)
9379PARTITIONS 5 */
9380
9381unified filelist
9382t1#P#p0.MYD
9383t1#P#p0.MYI
9384t1#P#p1.MYD
9385t1#P#p1.MYI
9386t1#P#p2.MYD
9387t1#P#p2.MYI
9388t1#P#p3.MYD
9389t1#P#p3.MYI
9390t1#P#p4.MYD
9391t1#P#p4.MYI
9392t1.frm
9393t1.par
9394
9395# check prerequisites-1 success:    1
9396# check COUNT(*) success:    1
9397# check MIN/MAX(f_int1) success:    1
9398# check MIN/MAX(f_int2) success:    1
9399INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9400SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
9401CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
9402WHERE f_int1 IN (2,3);
9403ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
9404# check prerequisites-3 success:    1
9405# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
9406INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9407SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
9408CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
9409WHERE f_int1 IN (2,3);
9410DELETE FROM t1 WHERE f_charbig = 'delete me';
9411INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9412SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
9413CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
9414WHERE f_int1 IN (2,3);
9415DELETE FROM t1 WHERE f_charbig = 'delete me';
9416# check read via f_int1 success: 1
9417# check read via f_int2 success: 1
9418
9419# check multiple-1 success: 	1
9420DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
9421
9422# check multiple-2 success: 	1
9423INSERT INTO t1 SELECT * FROM t0_template
9424WHERE MOD(f_int1,3) = 0;
9425
9426# check multiple-3 success: 	1
9427UPDATE t1 SET f_int1 = f_int1 + @max_row
9428WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
9429AND @max_row_div2 + @max_row_div4;
9430
9431# check multiple-4 success: 	1
9432DELETE FROM t1
9433WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
9434AND @max_row_div2 + @max_row_div4 + @max_row;
9435
9436# check multiple-5 success: 	1
9437SELECT COUNT(*) INTO @try_count FROM t0_template
9438WHERE MOD(f_int1,3) = 0
9439AND f_int1 BETWEEN @max_row_div2 AND @max_row;
9440SELECT COUNT(*) INTO @clash_count
9441FROM t1 INNER JOIN t0_template USING(f_int1)
9442WHERE MOD(f_int1,3) = 0
9443AND f_int1 BETWEEN @max_row_div2 AND @max_row;
9444SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
9445INSERT INTO t1
9446SET f_int1 = @cur_value , f_int2 = @cur_value,
9447f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
9448f_charbig = '#SINGLE#';
9449
9450# check single-1 success: 	1
9451SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
9452INSERT INTO t1
9453SET f_int1 = @cur_value , f_int2 = @cur_value,
9454f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
9455f_charbig = '#SINGLE#';
9456
9457# check single-2 success: 	1
9458SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
9459SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
9460UPDATE t1 SET f_int1 = @cur_value2
9461WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
9462
9463# check single-3 success: 	1
9464SET @cur_value1= -1;
9465SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
9466UPDATE t1 SET f_int1 = @cur_value1
9467WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
9468
9469# check single-4 success: 	1
9470SELECT MAX(f_int1) INTO @cur_value FROM t1;
9471DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
9472
9473# check single-5 success: 	1
9474DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
9475
9476# check single-6 success: 	1
9477INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
9478Warnings:
9479Warning	1264	Out of range value for column 'f_int2' at row 1
9480
9481# check single-7 success: 	1
9482DELETE FROM t1 WHERE f_charbig = '#2147483647##';
9483DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
9484INSERT t1 SET f_int1 = 0 , f_int2 = 0,
9485f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
9486f_charbig = '#NULL#';
9487INSERT INTO t1
9488SET f_int1 = NULL , f_int2 = -@max_row,
9489f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
9490f_charbig = '#NULL#';
9491# check null success:    1
9492
9493# check null-1 success: 	1
9494UPDATE t1 SET f_int1 = -@max_row
9495WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
9496AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
9497
9498# check null-2 success: 	1
9499UPDATE t1 SET f_int1 = NULL
9500WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
9501AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
9502
9503# check null-3 success: 	1
9504DELETE FROM t1
9505WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
9506AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
9507
9508# check null-4 success: 	1
9509DELETE FROM t1
9510WHERE f_int1 = 0 AND f_int2 = 0
9511AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
9512AND f_charbig = '#NULL#';
9513INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9514SELECT f_int1, f_int1, '', '', 'was inserted'
9515   FROM t0_template source_tab
9516WHERE MOD(f_int1,3) = 0
9517AND f_int1 BETWEEN @max_row_div2 AND @max_row
9518ON DUPLICATE KEY
9519UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
9520f_int2 = 2 * @max_row + source_tab.f_int1,
9521f_charbig = 'was updated';
9522
9523# check unique-1-a success: 	1
9524
9525# check unique-1-b success: 	1
9526DELETE FROM t1 WHERE f_charbig = 'was inserted';
9527UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9528f_int2 = CAST(f_char1 AS SIGNED INT),
9529f_charbig = CONCAT('===',f_char1,'===')
9530WHERE f_charbig = 'was updated';
9531REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9532SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
9533   FROM t0_template source_tab
9534WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
9535
9536# check replace success: 	1
9537DELETE FROM t1
9538WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
9539DELETE FROM t1
9540WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
9541f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
9542UPDATE t1 SET f_int2 = f_int1,
9543f_char1 = CAST(f_int1 AS CHAR),
9544f_char2 = CAST(f_int1 AS CHAR),
9545f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
9546WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
9547SET AUTOCOMMIT= 0;
9548INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9549SELECT f_int1, f_int1, '', '', 'was inserted'
9550FROM t0_template source_tab
9551WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
9552
9553# check transactions-1 success: 	1
9554COMMIT WORK;
9555
9556# check transactions-2 success: 	1
9557ROLLBACK WORK;
9558
9559# check transactions-3 success: 	1
9560DELETE FROM t1 WHERE f_charbig = 'was inserted';
9561COMMIT WORK;
9562ROLLBACK WORK;
9563
9564# check transactions-4 success: 	1
9565INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9566SELECT f_int1, f_int1, '', '', 'was inserted'
9567FROM t0_template source_tab
9568WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
9569
9570# check transactions-5 success: 	1
9571ROLLBACK WORK;
9572Warnings:
9573Warning	1196	Some non-transactional changed tables couldn't be rolled back
9574
9575# check transactions-6 success: 	1
9576# INFO: Storage engine used for t1 seems to be not transactional.
9577COMMIT;
9578
9579# check transactions-7 success: 	1
9580DELETE FROM t1 WHERE f_charbig = 'was inserted';
9581COMMIT WORK;
9582SET @@session.sql_mode = 'traditional';
9583Warnings:
9584Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
9585SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
9586INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9587SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
9588'', '', 'was inserted' FROM t0_template
9589WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
9590ERROR 22012: Division by 0
9591COMMIT;
9592
9593# check transactions-8 success: 	1
9594# INFO: Storage engine used for t1 seems to be unable to revert
9595#       changes made by the failing statement.
9596SET @@session.sql_mode = '';
9597Warnings:
9598Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
9599SET AUTOCOMMIT= 1;
9600DELETE FROM t1 WHERE f_charbig = 'was inserted';
9601COMMIT WORK;
9602UPDATE t1 SET f_charbig = REPEAT('b', 1000);
9603
9604# check special-1 success: 	1
9605UPDATE t1 SET f_charbig = '';
9606
9607# check special-2 success: 	1
9608UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
9609INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
9610SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
9611WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9612INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9613SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9614'just inserted' FROM t0_template
9615WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9616CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
9617BEGIN
9618UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9619f_charbig = 'updated by trigger'
9620      WHERE f_int1 = new.f_int1;
9621END|
9622INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9623SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
9624WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9625
9626# check trigger-1 success: 	1
9627DROP TRIGGER trg_1;
9628UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9629f_int2 = CAST(f_char1 AS SIGNED INT),
9630f_charbig = 'just inserted'
9631   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9632DELETE FROM t0_aux
9633WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9634INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9635SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9636'just inserted' FROM t0_template
9637WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9638CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
9639BEGIN
9640UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9641f_charbig = 'updated by trigger'
9642      WHERE f_int1 = new.f_int1;
9643END|
9644INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9645SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
9646WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9647
9648# check trigger-2 success: 	1
9649DROP TRIGGER trg_1;
9650UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9651f_int2 = CAST(f_char1 AS SIGNED INT),
9652f_charbig = 'just inserted'
9653   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9654DELETE FROM t0_aux
9655WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9656INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9657SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9658'just inserted' FROM t0_template
9659WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9660CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
9661BEGIN
9662UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9663f_charbig = 'updated by trigger'
9664      WHERE f_int1 = new.f_int1;
9665END|
9666UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
9667WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9668
9669# check trigger-3 success: 	1
9670DROP TRIGGER trg_1;
9671UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9672f_int2 = CAST(f_char1 AS SIGNED INT),
9673f_charbig = 'just inserted'
9674   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9675DELETE FROM t0_aux
9676WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9677INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9678SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9679'just inserted' FROM t0_template
9680WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9681CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
9682BEGIN
9683UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9684f_charbig = 'updated by trigger'
9685      WHERE f_int1 = - old.f_int1;
9686END|
9687UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
9688WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9689
9690# check trigger-4 success: 	1
9691DROP TRIGGER trg_1;
9692UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9693f_int2 = CAST(f_char1 AS SIGNED INT),
9694f_charbig = 'just inserted'
9695   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9696DELETE FROM t0_aux
9697WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9698INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9699SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9700'just inserted' FROM t0_template
9701WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9702CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
9703BEGIN
9704UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9705f_charbig = 'updated by trigger'
9706      WHERE f_int1 = new.f_int1;
9707END|
9708UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
9709WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9710
9711# check trigger-5 success: 	1
9712DROP TRIGGER trg_1;
9713UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9714f_int2 = CAST(f_char1 AS SIGNED INT),
9715f_charbig = 'just inserted'
9716   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9717DELETE FROM t0_aux
9718WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9719INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9720SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9721'just inserted' FROM t0_template
9722WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9723CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
9724BEGIN
9725UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9726f_charbig = 'updated by trigger'
9727      WHERE f_int1 = - old.f_int1;
9728END|
9729UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
9730WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9731
9732# check trigger-6 success: 	1
9733DROP TRIGGER trg_1;
9734UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9735f_int2 = CAST(f_char1 AS SIGNED INT),
9736f_charbig = 'just inserted'
9737   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9738DELETE FROM t0_aux
9739WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9740INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9741SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9742'just inserted' FROM t0_template
9743WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9744CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
9745BEGIN
9746UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9747f_charbig = 'updated by trigger'
9748      WHERE f_int1 = - old.f_int1;
9749END|
9750DELETE FROM t0_aux
9751WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9752
9753# check trigger-7 success: 	1
9754DROP TRIGGER trg_1;
9755UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9756f_int2 = CAST(f_char1 AS SIGNED INT),
9757f_charbig = 'just inserted'
9758   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9759DELETE FROM t0_aux
9760WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9761INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9762SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9763'just inserted' FROM t0_template
9764WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9765CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
9766BEGIN
9767UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9768f_charbig = 'updated by trigger'
9769      WHERE f_int1 = - old.f_int1;
9770END|
9771DELETE FROM t0_aux
9772WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9773
9774# check trigger-8 success: 	1
9775DROP TRIGGER trg_1;
9776UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9777f_int2 = CAST(f_char1 AS SIGNED INT),
9778f_charbig = 'just inserted'
9779   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9780DELETE FROM t0_aux
9781WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9782DELETE FROM t1
9783WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9784CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
9785BEGIN
9786SET new.f_int1 = old.f_int1 + @max_row,
9787new.f_int2 = old.f_int2 - @max_row,
9788new.f_charbig = '####updated per update trigger####';
9789END|
9790UPDATE t1
9791SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
9792f_charbig = '####updated per update statement itself####';
9793Warnings:
9794Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
9795
9796# check trigger-9 success: 	1
9797DROP TRIGGER trg_2;
9798UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9799f_int2 = CAST(f_char1 AS SIGNED INT),
9800f_charbig = CONCAT('===',f_char1,'===');
9801Warnings:
9802Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
9803CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
9804BEGIN
9805SET new.f_int1 = new.f_int1 + @max_row,
9806new.f_int2 = new.f_int2 - @max_row,
9807new.f_charbig = '####updated per update trigger####';
9808END|
9809UPDATE t1
9810SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
9811f_charbig = '####updated per update statement itself####';
9812Warnings:
9813Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
9814
9815# check trigger-10 success: 	1
9816DROP TRIGGER trg_2;
9817UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9818f_int2 = CAST(f_char1 AS SIGNED INT),
9819f_charbig = CONCAT('===',f_char1,'===');
9820Warnings:
9821Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
9822CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
9823BEGIN
9824SET new.f_int1 = @my_max1 + @counter,
9825new.f_int2 = @my_min2 - @counter,
9826new.f_charbig = '####updated per insert trigger####';
9827SET @counter = @counter + 1;
9828END|
9829SET @counter = 1;
9830SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
9831Warnings:
9832Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
9833INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9834SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
9835CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
9836WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
9837ORDER BY f_int1;
9838DROP TRIGGER trg_3;
9839
9840# check trigger-11 success: 	1
9841Warnings:
9842Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
9843DELETE FROM t1
9844WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
9845AND f_int2 <> CAST(f_char1 AS SIGNED INT)
9846AND f_charbig = '####updated per insert trigger####';
9847CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
9848BEGIN
9849SET new.f_int1 = @my_max1 + @counter,
9850new.f_int2 = @my_min2 - @counter,
9851new.f_charbig = '####updated per insert trigger####';
9852SET @counter = @counter + 1;
9853END|
9854SET @counter = 1;
9855SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
9856Warnings:
9857Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
9858INSERT INTO t1 (f_char1, f_char2, f_charbig)
9859SELECT CAST(f_int1 AS CHAR),
9860CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
9861WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
9862ORDER BY f_int1;
9863DROP TRIGGER trg_3;
9864
9865# check trigger-12 success: 	1
9866Warnings:
9867Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
9868DELETE FROM t1
9869WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
9870AND f_int2 <> CAST(f_char1 AS SIGNED INT)
9871AND f_charbig = '####updated per insert trigger####';
9872ANALYZE  TABLE t1;
9873Table	Op	Msg_type	Msg_text
9874test.t1	analyze	status	OK
9875test.t1	analyze	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
9876CHECK    TABLE t1 EXTENDED;
9877Table	Op	Msg_type	Msg_text
9878test.t1	check	status	OK
9879test.t1	check	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
9880CHECKSUM TABLE t1 EXTENDED;
9881Table	Checksum
9882test.t1	<some_value>
9883OPTIMIZE TABLE t1;
9884Table	Op	Msg_type	Msg_text
9885test.t1	optimize	status	OK
9886test.t1	optimize	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
9887# check layout success:    1
9888REPAIR   TABLE t1 EXTENDED;
9889Table	Op	Msg_type	Msg_text
9890test.t1	repair	status	OK
9891test.t1	repair	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
9892# check layout success:    1
9893TRUNCATE t1;
9894Warnings:
9895Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
9896
9897# check TRUNCATE success: 	1
9898# check layout success:    1
9899# End usability test (inc/partition_check.inc)
9900DROP TABLE t1;
9901CREATE TABLE t1 (
9902f_int1 INTEGER,
9903f_int2 INTEGER,
9904f_char1 CHAR(20),
9905f_char2 CHAR(20),
9906f_charbig VARCHAR(1000)
9907, UNIQUE INDEX uidx1 (f_int2,f_int1)
9908)
9909PARTITION BY LIST(MOD(f_int1,4))
9910(PARTITION part_3 VALUES IN (-3),
9911PARTITION part_2 VALUES IN (-2),
9912PARTITION part_1 VALUES IN (-1),
9913PARTITION part_N VALUES IN (NULL),
9914PARTITION part0 VALUES IN (0),
9915PARTITION part1 VALUES IN (1),
9916PARTITION part2 VALUES IN (2),
9917PARTITION part3 VALUES IN (3));
9918Warnings:
9919Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
9920INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
9921SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
9922WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
9923Warnings:
9924Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
9925ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
9926Warnings:
9927Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
9928INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
9929SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
9930WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
9931Warnings:
9932Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
9933# Start usability test (inc/partition_check.inc)
9934create_command
9935SHOW CREATE TABLE t1;
9936Table	Create Table
9937t1	CREATE TABLE `t1` (
9938  `f_int1` int(11) DEFAULT NULL,
9939  `f_int2` mediumint(9) DEFAULT NULL,
9940  `f_char1` char(20) DEFAULT NULL,
9941  `f_char2` char(20) DEFAULT NULL,
9942  `f_charbig` varchar(1000) DEFAULT NULL,
9943  UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
9944) ENGINE=MyISAM DEFAULT CHARSET=latin1
9945/*!50100 PARTITION BY LIST (MOD(f_int1,4))
9946(PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM,
9947 PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM,
9948 PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM,
9949 PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM,
9950 PARTITION part0 VALUES IN (0) ENGINE = MyISAM,
9951 PARTITION part1 VALUES IN (1) ENGINE = MyISAM,
9952 PARTITION part2 VALUES IN (2) ENGINE = MyISAM,
9953 PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */
9954
9955unified filelist
9956t1#P#part0.MYD
9957t1#P#part0.MYI
9958t1#P#part1.MYD
9959t1#P#part1.MYI
9960t1#P#part2.MYD
9961t1#P#part2.MYI
9962t1#P#part3.MYD
9963t1#P#part3.MYI
9964t1#P#part_1.MYD
9965t1#P#part_1.MYI
9966t1#P#part_2.MYD
9967t1#P#part_2.MYI
9968t1#P#part_3.MYD
9969t1#P#part_3.MYI
9970t1#P#part_N.MYD
9971t1#P#part_N.MYI
9972t1.frm
9973t1.par
9974
9975# check prerequisites-1 success:    1
9976# check COUNT(*) success:    1
9977# check MIN/MAX(f_int1) success:    1
9978# check MIN/MAX(f_int2) success:    1
9979INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9980SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
9981CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
9982WHERE f_int1 IN (2,3);
9983ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
9984# check prerequisites-3 success:    1
9985# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
9986INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9987SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
9988CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
9989WHERE f_int1 IN (2,3);
9990DELETE FROM t1 WHERE f_charbig = 'delete me';
9991INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9992SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
9993CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
9994WHERE f_int1 IN (2,3);
9995DELETE FROM t1 WHERE f_charbig = 'delete me';
9996# check read via f_int1 success: 1
9997# check read via f_int2 success: 1
9998
9999# check multiple-1 success: 	1
10000DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
10001
10002# check multiple-2 success: 	1
10003INSERT INTO t1 SELECT * FROM t0_template
10004WHERE MOD(f_int1,3) = 0;
10005
10006# check multiple-3 success: 	1
10007UPDATE t1 SET f_int1 = f_int1 + @max_row
10008WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
10009AND @max_row_div2 + @max_row_div4;
10010
10011# check multiple-4 success: 	1
10012DELETE FROM t1
10013WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
10014AND @max_row_div2 + @max_row_div4 + @max_row;
10015
10016# check multiple-5 success: 	1
10017SELECT COUNT(*) INTO @try_count FROM t0_template
10018WHERE MOD(f_int1,3) = 0
10019AND f_int1 BETWEEN @max_row_div2 AND @max_row;
10020SELECT COUNT(*) INTO @clash_count
10021FROM t1 INNER JOIN t0_template USING(f_int1)
10022WHERE MOD(f_int1,3) = 0
10023AND f_int1 BETWEEN @max_row_div2 AND @max_row;
10024SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
10025INSERT INTO t1
10026SET f_int1 = @cur_value , f_int2 = @cur_value,
10027f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
10028f_charbig = '#SINGLE#';
10029
10030# check single-1 success: 	1
10031SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
10032INSERT INTO t1
10033SET f_int1 = @cur_value , f_int2 = @cur_value,
10034f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
10035f_charbig = '#SINGLE#';
10036
10037# check single-2 success: 	1
10038SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
10039SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
10040UPDATE t1 SET f_int1 = @cur_value2
10041WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
10042
10043# check single-3 success: 	1
10044SET @cur_value1= -1;
10045SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
10046UPDATE t1 SET f_int1 = @cur_value1
10047WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
10048
10049# check single-4 success: 	1
10050SELECT MAX(f_int1) INTO @cur_value FROM t1;
10051DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
10052
10053# check single-5 success: 	1
10054DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
10055
10056# check single-6 success: 	1
10057INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
10058Warnings:
10059Warning	1264	Out of range value for column 'f_int2' at row 1
10060
10061# check single-7 success: 	1
10062DELETE FROM t1 WHERE f_charbig = '#2147483647##';
10063DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
10064INSERT t1 SET f_int1 = 0 , f_int2 = 0,
10065f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
10066f_charbig = '#NULL#';
10067INSERT INTO t1
10068SET f_int1 = NULL , f_int2 = -@max_row,
10069f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
10070f_charbig = '#NULL#';
10071# check null success:    1
10072
10073# check null-1 success: 	1
10074UPDATE t1 SET f_int1 = -@max_row
10075WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
10076AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
10077
10078# check null-2 success: 	1
10079UPDATE t1 SET f_int1 = NULL
10080WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
10081AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
10082
10083# check null-3 success: 	1
10084DELETE FROM t1
10085WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
10086AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
10087
10088# check null-4 success: 	1
10089DELETE FROM t1
10090WHERE f_int1 = 0 AND f_int2 = 0
10091AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
10092AND f_charbig = '#NULL#';
10093INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10094SELECT f_int1, f_int1, '', '', 'was inserted'
10095   FROM t0_template source_tab
10096WHERE MOD(f_int1,3) = 0
10097AND f_int1 BETWEEN @max_row_div2 AND @max_row
10098ON DUPLICATE KEY
10099UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
10100f_int2 = 2 * @max_row + source_tab.f_int1,
10101f_charbig = 'was updated';
10102
10103# check unique-1-a success: 	1
10104
10105# check unique-1-b success: 	1
10106DELETE FROM t1 WHERE f_charbig = 'was inserted';
10107UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10108f_int2 = CAST(f_char1 AS SIGNED INT),
10109f_charbig = CONCAT('===',f_char1,'===')
10110WHERE f_charbig = 'was updated';
10111REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10112SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
10113   FROM t0_template source_tab
10114WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
10115
10116# check replace success: 	1
10117DELETE FROM t1
10118WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
10119DELETE FROM t1
10120WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
10121f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
10122UPDATE t1 SET f_int2 = f_int1,
10123f_char1 = CAST(f_int1 AS CHAR),
10124f_char2 = CAST(f_int1 AS CHAR),
10125f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
10126WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
10127SET AUTOCOMMIT= 0;
10128INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10129SELECT f_int1, f_int1, '', '', 'was inserted'
10130FROM t0_template source_tab
10131WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
10132
10133# check transactions-1 success: 	1
10134COMMIT WORK;
10135
10136# check transactions-2 success: 	1
10137ROLLBACK WORK;
10138
10139# check transactions-3 success: 	1
10140DELETE FROM t1 WHERE f_charbig = 'was inserted';
10141COMMIT WORK;
10142ROLLBACK WORK;
10143
10144# check transactions-4 success: 	1
10145INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10146SELECT f_int1, f_int1, '', '', 'was inserted'
10147FROM t0_template source_tab
10148WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
10149
10150# check transactions-5 success: 	1
10151ROLLBACK WORK;
10152Warnings:
10153Warning	1196	Some non-transactional changed tables couldn't be rolled back
10154
10155# check transactions-6 success: 	1
10156# INFO: Storage engine used for t1 seems to be not transactional.
10157COMMIT;
10158
10159# check transactions-7 success: 	1
10160DELETE FROM t1 WHERE f_charbig = 'was inserted';
10161COMMIT WORK;
10162SET @@session.sql_mode = 'traditional';
10163Warnings:
10164Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
10165SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
10166INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10167SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
10168'', '', 'was inserted' FROM t0_template
10169WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
10170ERROR 22012: Division by 0
10171COMMIT;
10172
10173# check transactions-8 success: 	1
10174# INFO: Storage engine used for t1 seems to be unable to revert
10175#       changes made by the failing statement.
10176SET @@session.sql_mode = '';
10177Warnings:
10178Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
10179SET AUTOCOMMIT= 1;
10180DELETE FROM t1 WHERE f_charbig = 'was inserted';
10181COMMIT WORK;
10182UPDATE t1 SET f_charbig = REPEAT('b', 1000);
10183
10184# check special-1 success: 	1
10185UPDATE t1 SET f_charbig = '';
10186
10187# check special-2 success: 	1
10188UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
10189INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
10190SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
10191WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10192INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10193SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10194'just inserted' FROM t0_template
10195WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10196CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
10197BEGIN
10198UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10199f_charbig = 'updated by trigger'
10200      WHERE f_int1 = new.f_int1;
10201END|
10202INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10203SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
10204WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10205
10206# check trigger-1 success: 	1
10207DROP TRIGGER trg_1;
10208UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10209f_int2 = CAST(f_char1 AS SIGNED INT),
10210f_charbig = 'just inserted'
10211   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10212DELETE FROM t0_aux
10213WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10214INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10215SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10216'just inserted' FROM t0_template
10217WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10218CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
10219BEGIN
10220UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10221f_charbig = 'updated by trigger'
10222      WHERE f_int1 = new.f_int1;
10223END|
10224INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10225SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
10226WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10227
10228# check trigger-2 success: 	1
10229DROP TRIGGER trg_1;
10230UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10231f_int2 = CAST(f_char1 AS SIGNED INT),
10232f_charbig = 'just inserted'
10233   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10234DELETE FROM t0_aux
10235WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10236INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10237SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10238'just inserted' FROM t0_template
10239WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10240CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
10241BEGIN
10242UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10243f_charbig = 'updated by trigger'
10244      WHERE f_int1 = new.f_int1;
10245END|
10246UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
10247WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10248
10249# check trigger-3 success: 	1
10250DROP TRIGGER trg_1;
10251UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10252f_int2 = CAST(f_char1 AS SIGNED INT),
10253f_charbig = 'just inserted'
10254   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10255DELETE FROM t0_aux
10256WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10257INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10258SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10259'just inserted' FROM t0_template
10260WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10261CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
10262BEGIN
10263UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10264f_charbig = 'updated by trigger'
10265      WHERE f_int1 = - old.f_int1;
10266END|
10267UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
10268WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10269
10270# check trigger-4 success: 	1
10271DROP TRIGGER trg_1;
10272UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10273f_int2 = CAST(f_char1 AS SIGNED INT),
10274f_charbig = 'just inserted'
10275   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10276DELETE FROM t0_aux
10277WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10278INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10279SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10280'just inserted' FROM t0_template
10281WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10282CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
10283BEGIN
10284UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10285f_charbig = 'updated by trigger'
10286      WHERE f_int1 = new.f_int1;
10287END|
10288UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
10289WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10290
10291# check trigger-5 success: 	1
10292DROP TRIGGER trg_1;
10293UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10294f_int2 = CAST(f_char1 AS SIGNED INT),
10295f_charbig = 'just inserted'
10296   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10297DELETE FROM t0_aux
10298WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10299INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10300SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10301'just inserted' FROM t0_template
10302WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10303CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
10304BEGIN
10305UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10306f_charbig = 'updated by trigger'
10307      WHERE f_int1 = - old.f_int1;
10308END|
10309UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
10310WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10311
10312# check trigger-6 success: 	1
10313DROP TRIGGER trg_1;
10314UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10315f_int2 = CAST(f_char1 AS SIGNED INT),
10316f_charbig = 'just inserted'
10317   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10318DELETE FROM t0_aux
10319WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10320INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10321SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10322'just inserted' FROM t0_template
10323WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10324CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
10325BEGIN
10326UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10327f_charbig = 'updated by trigger'
10328      WHERE f_int1 = - old.f_int1;
10329END|
10330DELETE FROM t0_aux
10331WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10332
10333# check trigger-7 success: 	1
10334DROP TRIGGER trg_1;
10335UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10336f_int2 = CAST(f_char1 AS SIGNED INT),
10337f_charbig = 'just inserted'
10338   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10339DELETE FROM t0_aux
10340WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10341INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10342SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10343'just inserted' FROM t0_template
10344WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10345CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
10346BEGIN
10347UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10348f_charbig = 'updated by trigger'
10349      WHERE f_int1 = - old.f_int1;
10350END|
10351DELETE FROM t0_aux
10352WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10353
10354# check trigger-8 success: 	1
10355DROP TRIGGER trg_1;
10356UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10357f_int2 = CAST(f_char1 AS SIGNED INT),
10358f_charbig = 'just inserted'
10359   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10360DELETE FROM t0_aux
10361WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10362DELETE FROM t1
10363WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10364CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
10365BEGIN
10366SET new.f_int1 = old.f_int1 + @max_row,
10367new.f_int2 = old.f_int2 - @max_row,
10368new.f_charbig = '####updated per update trigger####';
10369END|
10370UPDATE t1
10371SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
10372f_charbig = '####updated per update statement itself####';
10373Warnings:
10374Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
10375
10376# check trigger-9 success: 	1
10377DROP TRIGGER trg_2;
10378UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10379f_int2 = CAST(f_char1 AS SIGNED INT),
10380f_charbig = CONCAT('===',f_char1,'===');
10381Warnings:
10382Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
10383CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
10384BEGIN
10385SET new.f_int1 = new.f_int1 + @max_row,
10386new.f_int2 = new.f_int2 - @max_row,
10387new.f_charbig = '####updated per update trigger####';
10388END|
10389UPDATE t1
10390SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
10391f_charbig = '####updated per update statement itself####';
10392Warnings:
10393Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
10394
10395# check trigger-10 success: 	1
10396DROP TRIGGER trg_2;
10397UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10398f_int2 = CAST(f_char1 AS SIGNED INT),
10399f_charbig = CONCAT('===',f_char1,'===');
10400Warnings:
10401Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
10402CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
10403BEGIN
10404SET new.f_int1 = @my_max1 + @counter,
10405new.f_int2 = @my_min2 - @counter,
10406new.f_charbig = '####updated per insert trigger####';
10407SET @counter = @counter + 1;
10408END|
10409SET @counter = 1;
10410SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
10411Warnings:
10412Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
10413INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10414SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
10415CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
10416WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
10417ORDER BY f_int1;
10418DROP TRIGGER trg_3;
10419
10420# check trigger-11 success: 	1
10421Warnings:
10422Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
10423DELETE FROM t1
10424WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
10425AND f_int2 <> CAST(f_char1 AS SIGNED INT)
10426AND f_charbig = '####updated per insert trigger####';
10427CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
10428BEGIN
10429SET new.f_int1 = @my_max1 + @counter,
10430new.f_int2 = @my_min2 - @counter,
10431new.f_charbig = '####updated per insert trigger####';
10432SET @counter = @counter + 1;
10433END|
10434SET @counter = 1;
10435SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
10436Warnings:
10437Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
10438INSERT INTO t1 (f_char1, f_char2, f_charbig)
10439SELECT CAST(f_int1 AS CHAR),
10440CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
10441WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
10442ORDER BY f_int1;
10443DROP TRIGGER trg_3;
10444
10445# check trigger-12 success: 	1
10446Warnings:
10447Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
10448DELETE FROM t1
10449WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
10450AND f_int2 <> CAST(f_char1 AS SIGNED INT)
10451AND f_charbig = '####updated per insert trigger####';
10452ANALYZE  TABLE t1;
10453Table	Op	Msg_type	Msg_text
10454test.t1	analyze	status	OK
10455test.t1	analyze	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
10456CHECK    TABLE t1 EXTENDED;
10457Table	Op	Msg_type	Msg_text
10458test.t1	check	status	OK
10459test.t1	check	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
10460CHECKSUM TABLE t1 EXTENDED;
10461Table	Checksum
10462test.t1	<some_value>
10463OPTIMIZE TABLE t1;
10464Table	Op	Msg_type	Msg_text
10465test.t1	optimize	status	OK
10466test.t1	optimize	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
10467# check layout success:    1
10468REPAIR   TABLE t1 EXTENDED;
10469Table	Op	Msg_type	Msg_text
10470test.t1	repair	status	OK
10471test.t1	repair	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
10472# check layout success:    1
10473TRUNCATE t1;
10474Warnings:
10475Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
10476
10477# check TRUNCATE success: 	1
10478# check layout success:    1
10479# End usability test (inc/partition_check.inc)
10480DROP TABLE t1;
10481CREATE TABLE t1 (
10482f_int1 INTEGER,
10483f_int2 INTEGER,
10484f_char1 CHAR(20),
10485f_char2 CHAR(20),
10486f_charbig VARCHAR(1000)
10487, UNIQUE INDEX uidx1 (f_int2,f_int1)
10488)
10489PARTITION BY RANGE(f_int1)
10490(PARTITION parta VALUES LESS THAN (0),
10491PARTITION partb VALUES LESS THAN (5),
10492PARTITION partc VALUES LESS THAN (10),
10493PARTITION partd VALUES LESS THAN (10 + 5),
10494PARTITION parte VALUES LESS THAN (20),
10495PARTITION partf VALUES LESS THAN (2147483646));
10496Warnings:
10497Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
10498INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
10499SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
10500WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
10501Warnings:
10502Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
10503ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
10504Warnings:
10505Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
10506INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
10507SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
10508WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
10509Warnings:
10510Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
10511# Start usability test (inc/partition_check.inc)
10512create_command
10513SHOW CREATE TABLE t1;
10514Table	Create Table
10515t1	CREATE TABLE `t1` (
10516  `f_int1` int(11) DEFAULT NULL,
10517  `f_int2` mediumint(9) DEFAULT NULL,
10518  `f_char1` char(20) DEFAULT NULL,
10519  `f_char2` char(20) DEFAULT NULL,
10520  `f_charbig` varchar(1000) DEFAULT NULL,
10521  UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
10522) ENGINE=MyISAM DEFAULT CHARSET=latin1
10523/*!50100 PARTITION BY RANGE (f_int1)
10524(PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM,
10525 PARTITION partb VALUES LESS THAN (5) ENGINE = MyISAM,
10526 PARTITION partc VALUES LESS THAN (10) ENGINE = MyISAM,
10527 PARTITION partd VALUES LESS THAN (15) ENGINE = MyISAM,
10528 PARTITION parte VALUES LESS THAN (20) ENGINE = MyISAM,
10529 PARTITION partf VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
10530
10531unified filelist
10532t1#P#parta.MYD
10533t1#P#parta.MYI
10534t1#P#partb.MYD
10535t1#P#partb.MYI
10536t1#P#partc.MYD
10537t1#P#partc.MYI
10538t1#P#partd.MYD
10539t1#P#partd.MYI
10540t1#P#parte.MYD
10541t1#P#parte.MYI
10542t1#P#partf.MYD
10543t1#P#partf.MYI
10544t1.frm
10545t1.par
10546
10547# check prerequisites-1 success:    1
10548# check COUNT(*) success:    1
10549# check MIN/MAX(f_int1) success:    1
10550# check MIN/MAX(f_int2) success:    1
10551INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10552SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
10553CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
10554WHERE f_int1 IN (2,3);
10555ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
10556# check prerequisites-3 success:    1
10557# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
10558INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10559SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
10560CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
10561WHERE f_int1 IN (2,3);
10562DELETE FROM t1 WHERE f_charbig = 'delete me';
10563INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10564SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
10565CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
10566WHERE f_int1 IN (2,3);
10567DELETE FROM t1 WHERE f_charbig = 'delete me';
10568# check read via f_int1 success: 1
10569# check read via f_int2 success: 1
10570
10571# check multiple-1 success: 	1
10572DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
10573
10574# check multiple-2 success: 	1
10575INSERT INTO t1 SELECT * FROM t0_template
10576WHERE MOD(f_int1,3) = 0;
10577
10578# check multiple-3 success: 	1
10579UPDATE t1 SET f_int1 = f_int1 + @max_row
10580WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
10581AND @max_row_div2 + @max_row_div4;
10582
10583# check multiple-4 success: 	1
10584DELETE FROM t1
10585WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
10586AND @max_row_div2 + @max_row_div4 + @max_row;
10587
10588# check multiple-5 success: 	1
10589SELECT COUNT(*) INTO @try_count FROM t0_template
10590WHERE MOD(f_int1,3) = 0
10591AND f_int1 BETWEEN @max_row_div2 AND @max_row;
10592SELECT COUNT(*) INTO @clash_count
10593FROM t1 INNER JOIN t0_template USING(f_int1)
10594WHERE MOD(f_int1,3) = 0
10595AND f_int1 BETWEEN @max_row_div2 AND @max_row;
10596SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
10597INSERT INTO t1
10598SET f_int1 = @cur_value , f_int2 = @cur_value,
10599f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
10600f_charbig = '#SINGLE#';
10601
10602# check single-1 success: 	1
10603SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
10604INSERT INTO t1
10605SET f_int1 = @cur_value , f_int2 = @cur_value,
10606f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
10607f_charbig = '#SINGLE#';
10608
10609# check single-2 success: 	1
10610SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
10611SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
10612UPDATE t1 SET f_int1 = @cur_value2
10613WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
10614
10615# check single-3 success: 	1
10616SET @cur_value1= -1;
10617SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
10618UPDATE t1 SET f_int1 = @cur_value1
10619WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
10620
10621# check single-4 success: 	1
10622SELECT MAX(f_int1) INTO @cur_value FROM t1;
10623DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
10624
10625# check single-5 success: 	1
10626DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
10627
10628# check single-6 success: 	1
10629INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
10630ERROR HY000: Table has no partition for value 2147483647
10631DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
10632INSERT t1 SET f_int1 = 0 , f_int2 = 0,
10633f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
10634f_charbig = '#NULL#';
10635INSERT INTO t1
10636SET f_int1 = NULL , f_int2 = -@max_row,
10637f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
10638f_charbig = '#NULL#';
10639# check null success:    1
10640
10641# check null-1 success: 	1
10642UPDATE t1 SET f_int1 = -@max_row
10643WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
10644AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
10645
10646# check null-2 success: 	1
10647UPDATE t1 SET f_int1 = NULL
10648WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
10649AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
10650
10651# check null-3 success: 	1
10652DELETE FROM t1
10653WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
10654AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
10655
10656# check null-4 success: 	1
10657DELETE FROM t1
10658WHERE f_int1 = 0 AND f_int2 = 0
10659AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
10660AND f_charbig = '#NULL#';
10661INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10662SELECT f_int1, f_int1, '', '', 'was inserted'
10663   FROM t0_template source_tab
10664WHERE MOD(f_int1,3) = 0
10665AND f_int1 BETWEEN @max_row_div2 AND @max_row
10666ON DUPLICATE KEY
10667UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
10668f_int2 = 2 * @max_row + source_tab.f_int1,
10669f_charbig = 'was updated';
10670
10671# check unique-1-a success: 	1
10672
10673# check unique-1-b success: 	1
10674DELETE FROM t1 WHERE f_charbig = 'was inserted';
10675UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10676f_int2 = CAST(f_char1 AS SIGNED INT),
10677f_charbig = CONCAT('===',f_char1,'===')
10678WHERE f_charbig = 'was updated';
10679REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10680SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
10681   FROM t0_template source_tab
10682WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
10683
10684# check replace success: 	1
10685DELETE FROM t1
10686WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
10687DELETE FROM t1
10688WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
10689f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
10690UPDATE t1 SET f_int2 = f_int1,
10691f_char1 = CAST(f_int1 AS CHAR),
10692f_char2 = CAST(f_int1 AS CHAR),
10693f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
10694WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
10695SET AUTOCOMMIT= 0;
10696INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10697SELECT f_int1, f_int1, '', '', 'was inserted'
10698FROM t0_template source_tab
10699WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
10700
10701# check transactions-1 success: 	1
10702COMMIT WORK;
10703
10704# check transactions-2 success: 	1
10705ROLLBACK WORK;
10706
10707# check transactions-3 success: 	1
10708DELETE FROM t1 WHERE f_charbig = 'was inserted';
10709COMMIT WORK;
10710ROLLBACK WORK;
10711
10712# check transactions-4 success: 	1
10713INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10714SELECT f_int1, f_int1, '', '', 'was inserted'
10715FROM t0_template source_tab
10716WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
10717
10718# check transactions-5 success: 	1
10719ROLLBACK WORK;
10720Warnings:
10721Warning	1196	Some non-transactional changed tables couldn't be rolled back
10722
10723# check transactions-6 success: 	1
10724# INFO: Storage engine used for t1 seems to be not transactional.
10725COMMIT;
10726
10727# check transactions-7 success: 	1
10728DELETE FROM t1 WHERE f_charbig = 'was inserted';
10729COMMIT WORK;
10730SET @@session.sql_mode = 'traditional';
10731Warnings:
10732Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
10733SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
10734INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10735SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
10736'', '', 'was inserted' FROM t0_template
10737WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
10738ERROR 22012: Division by 0
10739COMMIT;
10740
10741# check transactions-8 success: 	1
10742# INFO: Storage engine used for t1 seems to be unable to revert
10743#       changes made by the failing statement.
10744SET @@session.sql_mode = '';
10745Warnings:
10746Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
10747SET AUTOCOMMIT= 1;
10748DELETE FROM t1 WHERE f_charbig = 'was inserted';
10749COMMIT WORK;
10750UPDATE t1 SET f_charbig = REPEAT('b', 1000);
10751
10752# check special-1 success: 	1
10753UPDATE t1 SET f_charbig = '';
10754
10755# check special-2 success: 	1
10756UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
10757INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
10758SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
10759WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10760INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10761SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10762'just inserted' FROM t0_template
10763WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10764CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
10765BEGIN
10766UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10767f_charbig = 'updated by trigger'
10768      WHERE f_int1 = new.f_int1;
10769END|
10770INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10771SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
10772WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10773
10774# check trigger-1 success: 	1
10775DROP TRIGGER trg_1;
10776UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10777f_int2 = CAST(f_char1 AS SIGNED INT),
10778f_charbig = 'just inserted'
10779   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10780DELETE FROM t0_aux
10781WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10782INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10783SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10784'just inserted' FROM t0_template
10785WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10786CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
10787BEGIN
10788UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10789f_charbig = 'updated by trigger'
10790      WHERE f_int1 = new.f_int1;
10791END|
10792INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10793SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
10794WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10795
10796# check trigger-2 success: 	1
10797DROP TRIGGER trg_1;
10798UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10799f_int2 = CAST(f_char1 AS SIGNED INT),
10800f_charbig = 'just inserted'
10801   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10802DELETE FROM t0_aux
10803WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10804INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10805SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10806'just inserted' FROM t0_template
10807WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10808CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
10809BEGIN
10810UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10811f_charbig = 'updated by trigger'
10812      WHERE f_int1 = new.f_int1;
10813END|
10814UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
10815WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10816
10817# check trigger-3 success: 	1
10818DROP TRIGGER trg_1;
10819UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10820f_int2 = CAST(f_char1 AS SIGNED INT),
10821f_charbig = 'just inserted'
10822   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10823DELETE FROM t0_aux
10824WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10825INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10826SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10827'just inserted' FROM t0_template
10828WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10829CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
10830BEGIN
10831UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10832f_charbig = 'updated by trigger'
10833      WHERE f_int1 = - old.f_int1;
10834END|
10835UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
10836WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10837
10838# check trigger-4 success: 	1
10839DROP TRIGGER trg_1;
10840UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10841f_int2 = CAST(f_char1 AS SIGNED INT),
10842f_charbig = 'just inserted'
10843   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10844DELETE FROM t0_aux
10845WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10846INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10847SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10848'just inserted' FROM t0_template
10849WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10850CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
10851BEGIN
10852UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10853f_charbig = 'updated by trigger'
10854      WHERE f_int1 = new.f_int1;
10855END|
10856UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
10857WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10858
10859# check trigger-5 success: 	1
10860DROP TRIGGER trg_1;
10861UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10862f_int2 = CAST(f_char1 AS SIGNED INT),
10863f_charbig = 'just inserted'
10864   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10865DELETE FROM t0_aux
10866WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10867INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10868SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10869'just inserted' FROM t0_template
10870WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10871CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
10872BEGIN
10873UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10874f_charbig = 'updated by trigger'
10875      WHERE f_int1 = - old.f_int1;
10876END|
10877UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
10878WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10879
10880# check trigger-6 success: 	1
10881DROP TRIGGER trg_1;
10882UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10883f_int2 = CAST(f_char1 AS SIGNED INT),
10884f_charbig = 'just inserted'
10885   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10886DELETE FROM t0_aux
10887WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10888INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10889SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10890'just inserted' FROM t0_template
10891WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10892CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
10893BEGIN
10894UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10895f_charbig = 'updated by trigger'
10896      WHERE f_int1 = - old.f_int1;
10897END|
10898DELETE FROM t0_aux
10899WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10900
10901# check trigger-7 success: 	1
10902DROP TRIGGER trg_1;
10903UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10904f_int2 = CAST(f_char1 AS SIGNED INT),
10905f_charbig = 'just inserted'
10906   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10907DELETE FROM t0_aux
10908WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10909INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10910SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10911'just inserted' FROM t0_template
10912WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10913CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
10914BEGIN
10915UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10916f_charbig = 'updated by trigger'
10917      WHERE f_int1 = - old.f_int1;
10918END|
10919DELETE FROM t0_aux
10920WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10921
10922# check trigger-8 success: 	1
10923DROP TRIGGER trg_1;
10924UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10925f_int2 = CAST(f_char1 AS SIGNED INT),
10926f_charbig = 'just inserted'
10927   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10928DELETE FROM t0_aux
10929WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10930DELETE FROM t1
10931WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10932CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
10933BEGIN
10934SET new.f_int1 = old.f_int1 + @max_row,
10935new.f_int2 = old.f_int2 - @max_row,
10936new.f_charbig = '####updated per update trigger####';
10937END|
10938UPDATE t1
10939SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
10940f_charbig = '####updated per update statement itself####';
10941Warnings:
10942Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
10943
10944# check trigger-9 success: 	1
10945DROP TRIGGER trg_2;
10946UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10947f_int2 = CAST(f_char1 AS SIGNED INT),
10948f_charbig = CONCAT('===',f_char1,'===');
10949Warnings:
10950Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
10951CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
10952BEGIN
10953SET new.f_int1 = new.f_int1 + @max_row,
10954new.f_int2 = new.f_int2 - @max_row,
10955new.f_charbig = '####updated per update trigger####';
10956END|
10957UPDATE t1
10958SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
10959f_charbig = '####updated per update statement itself####';
10960Warnings:
10961Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
10962
10963# check trigger-10 success: 	1
10964DROP TRIGGER trg_2;
10965UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10966f_int2 = CAST(f_char1 AS SIGNED INT),
10967f_charbig = CONCAT('===',f_char1,'===');
10968Warnings:
10969Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
10970CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
10971BEGIN
10972SET new.f_int1 = @my_max1 + @counter,
10973new.f_int2 = @my_min2 - @counter,
10974new.f_charbig = '####updated per insert trigger####';
10975SET @counter = @counter + 1;
10976END|
10977SET @counter = 1;
10978SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
10979Warnings:
10980Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
10981INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10982SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
10983CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
10984WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
10985ORDER BY f_int1;
10986DROP TRIGGER trg_3;
10987
10988# check trigger-11 success: 	1
10989Warnings:
10990Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
10991DELETE FROM t1
10992WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
10993AND f_int2 <> CAST(f_char1 AS SIGNED INT)
10994AND f_charbig = '####updated per insert trigger####';
10995CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
10996BEGIN
10997SET new.f_int1 = @my_max1 + @counter,
10998new.f_int2 = @my_min2 - @counter,
10999new.f_charbig = '####updated per insert trigger####';
11000SET @counter = @counter + 1;
11001END|
11002SET @counter = 1;
11003SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
11004Warnings:
11005Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
11006INSERT INTO t1 (f_char1, f_char2, f_charbig)
11007SELECT CAST(f_int1 AS CHAR),
11008CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
11009WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
11010ORDER BY f_int1;
11011DROP TRIGGER trg_3;
11012
11013# check trigger-12 success: 	1
11014Warnings:
11015Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
11016DELETE FROM t1
11017WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
11018AND f_int2 <> CAST(f_char1 AS SIGNED INT)
11019AND f_charbig = '####updated per insert trigger####';
11020ANALYZE  TABLE t1;
11021Table	Op	Msg_type	Msg_text
11022test.t1	analyze	status	OK
11023test.t1	analyze	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
11024CHECK    TABLE t1 EXTENDED;
11025Table	Op	Msg_type	Msg_text
11026test.t1	check	status	OK
11027test.t1	check	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
11028CHECKSUM TABLE t1 EXTENDED;
11029Table	Checksum
11030test.t1	<some_value>
11031OPTIMIZE TABLE t1;
11032Table	Op	Msg_type	Msg_text
11033test.t1	optimize	status	OK
11034test.t1	optimize	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
11035# check layout success:    1
11036REPAIR   TABLE t1 EXTENDED;
11037Table	Op	Msg_type	Msg_text
11038test.t1	repair	status	OK
11039test.t1	repair	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
11040# check layout success:    1
11041TRUNCATE t1;
11042Warnings:
11043Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
11044
11045# check TRUNCATE success: 	1
11046# check layout success:    1
11047# End usability test (inc/partition_check.inc)
11048DROP TABLE t1;
11049CREATE TABLE t1 (
11050f_int1 INTEGER,
11051f_int2 INTEGER,
11052f_char1 CHAR(20),
11053f_char2 CHAR(20),
11054f_charbig VARCHAR(1000)
11055, UNIQUE INDEX uidx1 (f_int2,f_int1)
11056)
11057PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
11058(PARTITION parta VALUES LESS THAN (0),
11059PARTITION partb VALUES LESS THAN (5),
11060PARTITION partc VALUES LESS THAN (10),
11061PARTITION partd VALUES LESS THAN (2147483646));
11062Warnings:
11063Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
11064INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
11065SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
11066WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
11067Warnings:
11068Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
11069ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
11070Warnings:
11071Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
11072INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
11073SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
11074WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
11075Warnings:
11076Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
11077# Start usability test (inc/partition_check.inc)
11078create_command
11079SHOW CREATE TABLE t1;
11080Table	Create Table
11081t1	CREATE TABLE `t1` (
11082  `f_int1` int(11) DEFAULT NULL,
11083  `f_int2` mediumint(9) DEFAULT NULL,
11084  `f_char1` char(20) DEFAULT NULL,
11085  `f_char2` char(20) DEFAULT NULL,
11086  `f_charbig` varchar(1000) DEFAULT NULL,
11087  UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
11088) ENGINE=MyISAM DEFAULT CHARSET=latin1
11089/*!50100 PARTITION BY RANGE (f_int1 DIV 2)
11090SUBPARTITION BY HASH (f_int1)
11091SUBPARTITIONS 2
11092(PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM,
11093 PARTITION partb VALUES LESS THAN (5) ENGINE = MyISAM,
11094 PARTITION partc VALUES LESS THAN (10) ENGINE = MyISAM,
11095 PARTITION partd VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
11096
11097unified filelist
11098t1#P#parta#SP#partasp0.MYD
11099t1#P#parta#SP#partasp0.MYI
11100t1#P#parta#SP#partasp1.MYD
11101t1#P#parta#SP#partasp1.MYI
11102t1#P#partb#SP#partbsp0.MYD
11103t1#P#partb#SP#partbsp0.MYI
11104t1#P#partb#SP#partbsp1.MYD
11105t1#P#partb#SP#partbsp1.MYI
11106t1#P#partc#SP#partcsp0.MYD
11107t1#P#partc#SP#partcsp0.MYI
11108t1#P#partc#SP#partcsp1.MYD
11109t1#P#partc#SP#partcsp1.MYI
11110t1#P#partd#SP#partdsp0.MYD
11111t1#P#partd#SP#partdsp0.MYI
11112t1#P#partd#SP#partdsp1.MYD
11113t1#P#partd#SP#partdsp1.MYI
11114t1.frm
11115t1.par
11116
11117# check prerequisites-1 success:    1
11118# check COUNT(*) success:    1
11119# check MIN/MAX(f_int1) success:    1
11120# check MIN/MAX(f_int2) success:    1
11121INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11122SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
11123CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
11124WHERE f_int1 IN (2,3);
11125ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
11126# check prerequisites-3 success:    1
11127# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
11128INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11129SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
11130CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
11131WHERE f_int1 IN (2,3);
11132DELETE FROM t1 WHERE f_charbig = 'delete me';
11133INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11134SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
11135CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
11136WHERE f_int1 IN (2,3);
11137DELETE FROM t1 WHERE f_charbig = 'delete me';
11138# check read via f_int1 success: 1
11139# check read via f_int2 success: 1
11140
11141# check multiple-1 success: 	1
11142DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
11143
11144# check multiple-2 success: 	1
11145INSERT INTO t1 SELECT * FROM t0_template
11146WHERE MOD(f_int1,3) = 0;
11147
11148# check multiple-3 success: 	1
11149UPDATE t1 SET f_int1 = f_int1 + @max_row
11150WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
11151AND @max_row_div2 + @max_row_div4;
11152
11153# check multiple-4 success: 	1
11154DELETE FROM t1
11155WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
11156AND @max_row_div2 + @max_row_div4 + @max_row;
11157
11158# check multiple-5 success: 	1
11159SELECT COUNT(*) INTO @try_count FROM t0_template
11160WHERE MOD(f_int1,3) = 0
11161AND f_int1 BETWEEN @max_row_div2 AND @max_row;
11162SELECT COUNT(*) INTO @clash_count
11163FROM t1 INNER JOIN t0_template USING(f_int1)
11164WHERE MOD(f_int1,3) = 0
11165AND f_int1 BETWEEN @max_row_div2 AND @max_row;
11166SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
11167INSERT INTO t1
11168SET f_int1 = @cur_value , f_int2 = @cur_value,
11169f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
11170f_charbig = '#SINGLE#';
11171
11172# check single-1 success: 	1
11173SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
11174INSERT INTO t1
11175SET f_int1 = @cur_value , f_int2 = @cur_value,
11176f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
11177f_charbig = '#SINGLE#';
11178
11179# check single-2 success: 	1
11180SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
11181SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
11182UPDATE t1 SET f_int1 = @cur_value2
11183WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
11184
11185# check single-3 success: 	1
11186SET @cur_value1= -1;
11187SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
11188UPDATE t1 SET f_int1 = @cur_value1
11189WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
11190
11191# check single-4 success: 	1
11192SELECT MAX(f_int1) INTO @cur_value FROM t1;
11193DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
11194
11195# check single-5 success: 	1
11196DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
11197
11198# check single-6 success: 	1
11199INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
11200Warnings:
11201Warning	1264	Out of range value for column 'f_int2' at row 1
11202
11203# check single-7 success: 	1
11204DELETE FROM t1 WHERE f_charbig = '#2147483647##';
11205DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
11206INSERT t1 SET f_int1 = 0 , f_int2 = 0,
11207f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
11208f_charbig = '#NULL#';
11209INSERT INTO t1
11210SET f_int1 = NULL , f_int2 = -@max_row,
11211f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
11212f_charbig = '#NULL#';
11213# check null success:    1
11214
11215# check null-1 success: 	1
11216UPDATE t1 SET f_int1 = -@max_row
11217WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
11218AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
11219
11220# check null-2 success: 	1
11221UPDATE t1 SET f_int1 = NULL
11222WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
11223AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
11224
11225# check null-3 success: 	1
11226DELETE FROM t1
11227WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
11228AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
11229
11230# check null-4 success: 	1
11231DELETE FROM t1
11232WHERE f_int1 = 0 AND f_int2 = 0
11233AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
11234AND f_charbig = '#NULL#';
11235INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11236SELECT f_int1, f_int1, '', '', 'was inserted'
11237   FROM t0_template source_tab
11238WHERE MOD(f_int1,3) = 0
11239AND f_int1 BETWEEN @max_row_div2 AND @max_row
11240ON DUPLICATE KEY
11241UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
11242f_int2 = 2 * @max_row + source_tab.f_int1,
11243f_charbig = 'was updated';
11244
11245# check unique-1-a success: 	1
11246
11247# check unique-1-b success: 	1
11248DELETE FROM t1 WHERE f_charbig = 'was inserted';
11249UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11250f_int2 = CAST(f_char1 AS SIGNED INT),
11251f_charbig = CONCAT('===',f_char1,'===')
11252WHERE f_charbig = 'was updated';
11253REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11254SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
11255   FROM t0_template source_tab
11256WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
11257
11258# check replace success: 	1
11259DELETE FROM t1
11260WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
11261DELETE FROM t1
11262WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
11263f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
11264UPDATE t1 SET f_int2 = f_int1,
11265f_char1 = CAST(f_int1 AS CHAR),
11266f_char2 = CAST(f_int1 AS CHAR),
11267f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
11268WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
11269SET AUTOCOMMIT= 0;
11270INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11271SELECT f_int1, f_int1, '', '', 'was inserted'
11272FROM t0_template source_tab
11273WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
11274
11275# check transactions-1 success: 	1
11276COMMIT WORK;
11277
11278# check transactions-2 success: 	1
11279ROLLBACK WORK;
11280
11281# check transactions-3 success: 	1
11282DELETE FROM t1 WHERE f_charbig = 'was inserted';
11283COMMIT WORK;
11284ROLLBACK WORK;
11285
11286# check transactions-4 success: 	1
11287INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11288SELECT f_int1, f_int1, '', '', 'was inserted'
11289FROM t0_template source_tab
11290WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
11291
11292# check transactions-5 success: 	1
11293ROLLBACK WORK;
11294Warnings:
11295Warning	1196	Some non-transactional changed tables couldn't be rolled back
11296
11297# check transactions-6 success: 	1
11298# INFO: Storage engine used for t1 seems to be not transactional.
11299COMMIT;
11300
11301# check transactions-7 success: 	1
11302DELETE FROM t1 WHERE f_charbig = 'was inserted';
11303COMMIT WORK;
11304SET @@session.sql_mode = 'traditional';
11305Warnings:
11306Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
11307SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
11308INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11309SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
11310'', '', 'was inserted' FROM t0_template
11311WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
11312ERROR 22012: Division by 0
11313COMMIT;
11314
11315# check transactions-8 success: 	1
11316# INFO: Storage engine used for t1 seems to be unable to revert
11317#       changes made by the failing statement.
11318SET @@session.sql_mode = '';
11319Warnings:
11320Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
11321SET AUTOCOMMIT= 1;
11322DELETE FROM t1 WHERE f_charbig = 'was inserted';
11323COMMIT WORK;
11324UPDATE t1 SET f_charbig = REPEAT('b', 1000);
11325
11326# check special-1 success: 	1
11327UPDATE t1 SET f_charbig = '';
11328
11329# check special-2 success: 	1
11330UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
11331INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
11332SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
11333WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11334INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11335SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11336'just inserted' FROM t0_template
11337WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11338CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
11339BEGIN
11340UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11341f_charbig = 'updated by trigger'
11342      WHERE f_int1 = new.f_int1;
11343END|
11344INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11345SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
11346WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11347
11348# check trigger-1 success: 	1
11349DROP TRIGGER trg_1;
11350UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11351f_int2 = CAST(f_char1 AS SIGNED INT),
11352f_charbig = 'just inserted'
11353   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11354DELETE FROM t0_aux
11355WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11356INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11357SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11358'just inserted' FROM t0_template
11359WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11360CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
11361BEGIN
11362UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11363f_charbig = 'updated by trigger'
11364      WHERE f_int1 = new.f_int1;
11365END|
11366INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11367SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
11368WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11369
11370# check trigger-2 success: 	1
11371DROP TRIGGER trg_1;
11372UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11373f_int2 = CAST(f_char1 AS SIGNED INT),
11374f_charbig = 'just inserted'
11375   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11376DELETE FROM t0_aux
11377WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11378INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11379SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11380'just inserted' FROM t0_template
11381WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11382CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
11383BEGIN
11384UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11385f_charbig = 'updated by trigger'
11386      WHERE f_int1 = new.f_int1;
11387END|
11388UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
11389WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11390
11391# check trigger-3 success: 	1
11392DROP TRIGGER trg_1;
11393UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11394f_int2 = CAST(f_char1 AS SIGNED INT),
11395f_charbig = 'just inserted'
11396   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11397DELETE FROM t0_aux
11398WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11399INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11400SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11401'just inserted' FROM t0_template
11402WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11403CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
11404BEGIN
11405UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11406f_charbig = 'updated by trigger'
11407      WHERE f_int1 = - old.f_int1;
11408END|
11409UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
11410WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11411
11412# check trigger-4 success: 	1
11413DROP TRIGGER trg_1;
11414UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11415f_int2 = CAST(f_char1 AS SIGNED INT),
11416f_charbig = 'just inserted'
11417   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11418DELETE FROM t0_aux
11419WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11420INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11421SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11422'just inserted' FROM t0_template
11423WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11424CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
11425BEGIN
11426UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11427f_charbig = 'updated by trigger'
11428      WHERE f_int1 = new.f_int1;
11429END|
11430UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
11431WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11432
11433# check trigger-5 success: 	1
11434DROP TRIGGER trg_1;
11435UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11436f_int2 = CAST(f_char1 AS SIGNED INT),
11437f_charbig = 'just inserted'
11438   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11439DELETE FROM t0_aux
11440WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11441INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11442SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11443'just inserted' FROM t0_template
11444WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11445CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
11446BEGIN
11447UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11448f_charbig = 'updated by trigger'
11449      WHERE f_int1 = - old.f_int1;
11450END|
11451UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
11452WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11453
11454# check trigger-6 success: 	1
11455DROP TRIGGER trg_1;
11456UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11457f_int2 = CAST(f_char1 AS SIGNED INT),
11458f_charbig = 'just inserted'
11459   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11460DELETE FROM t0_aux
11461WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11462INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11463SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11464'just inserted' FROM t0_template
11465WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11466CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
11467BEGIN
11468UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11469f_charbig = 'updated by trigger'
11470      WHERE f_int1 = - old.f_int1;
11471END|
11472DELETE FROM t0_aux
11473WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11474
11475# check trigger-7 success: 	1
11476DROP TRIGGER trg_1;
11477UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11478f_int2 = CAST(f_char1 AS SIGNED INT),
11479f_charbig = 'just inserted'
11480   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11481DELETE FROM t0_aux
11482WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11483INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11484SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11485'just inserted' FROM t0_template
11486WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11487CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
11488BEGIN
11489UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11490f_charbig = 'updated by trigger'
11491      WHERE f_int1 = - old.f_int1;
11492END|
11493DELETE FROM t0_aux
11494WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11495
11496# check trigger-8 success: 	1
11497DROP TRIGGER trg_1;
11498UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11499f_int2 = CAST(f_char1 AS SIGNED INT),
11500f_charbig = 'just inserted'
11501   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11502DELETE FROM t0_aux
11503WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11504DELETE FROM t1
11505WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11506CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
11507BEGIN
11508SET new.f_int1 = old.f_int1 + @max_row,
11509new.f_int2 = old.f_int2 - @max_row,
11510new.f_charbig = '####updated per update trigger####';
11511END|
11512UPDATE t1
11513SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
11514f_charbig = '####updated per update statement itself####';
11515Warnings:
11516Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
11517
11518# check trigger-9 success: 	1
11519DROP TRIGGER trg_2;
11520UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11521f_int2 = CAST(f_char1 AS SIGNED INT),
11522f_charbig = CONCAT('===',f_char1,'===');
11523Warnings:
11524Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
11525CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
11526BEGIN
11527SET new.f_int1 = new.f_int1 + @max_row,
11528new.f_int2 = new.f_int2 - @max_row,
11529new.f_charbig = '####updated per update trigger####';
11530END|
11531UPDATE t1
11532SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
11533f_charbig = '####updated per update statement itself####';
11534Warnings:
11535Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
11536
11537# check trigger-10 success: 	1
11538DROP TRIGGER trg_2;
11539UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11540f_int2 = CAST(f_char1 AS SIGNED INT),
11541f_charbig = CONCAT('===',f_char1,'===');
11542Warnings:
11543Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
11544CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
11545BEGIN
11546SET new.f_int1 = @my_max1 + @counter,
11547new.f_int2 = @my_min2 - @counter,
11548new.f_charbig = '####updated per insert trigger####';
11549SET @counter = @counter + 1;
11550END|
11551SET @counter = 1;
11552SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
11553Warnings:
11554Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
11555INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11556SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
11557CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
11558WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
11559ORDER BY f_int1;
11560DROP TRIGGER trg_3;
11561
11562# check trigger-11 success: 	1
11563Warnings:
11564Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
11565DELETE FROM t1
11566WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
11567AND f_int2 <> CAST(f_char1 AS SIGNED INT)
11568AND f_charbig = '####updated per insert trigger####';
11569CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
11570BEGIN
11571SET new.f_int1 = @my_max1 + @counter,
11572new.f_int2 = @my_min2 - @counter,
11573new.f_charbig = '####updated per insert trigger####';
11574SET @counter = @counter + 1;
11575END|
11576SET @counter = 1;
11577SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
11578Warnings:
11579Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
11580INSERT INTO t1 (f_char1, f_char2, f_charbig)
11581SELECT CAST(f_int1 AS CHAR),
11582CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
11583WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
11584ORDER BY f_int1;
11585DROP TRIGGER trg_3;
11586
11587# check trigger-12 success: 	1
11588Warnings:
11589Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
11590DELETE FROM t1
11591WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
11592AND f_int2 <> CAST(f_char1 AS SIGNED INT)
11593AND f_charbig = '####updated per insert trigger####';
11594ANALYZE  TABLE t1;
11595Table	Op	Msg_type	Msg_text
11596test.t1	analyze	status	OK
11597test.t1	analyze	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
11598CHECK    TABLE t1 EXTENDED;
11599Table	Op	Msg_type	Msg_text
11600test.t1	check	status	OK
11601test.t1	check	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
11602CHECKSUM TABLE t1 EXTENDED;
11603Table	Checksum
11604test.t1	<some_value>
11605OPTIMIZE TABLE t1;
11606Table	Op	Msg_type	Msg_text
11607test.t1	optimize	status	OK
11608test.t1	optimize	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
11609# check layout success:    1
11610REPAIR   TABLE t1 EXTENDED;
11611Table	Op	Msg_type	Msg_text
11612test.t1	repair	status	OK
11613test.t1	repair	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
11614# check layout success:    1
11615TRUNCATE t1;
11616Warnings:
11617Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
11618
11619# check TRUNCATE success: 	1
11620# check layout success:    1
11621# End usability test (inc/partition_check.inc)
11622DROP TABLE t1;
11623CREATE TABLE t1 (
11624f_int1 INTEGER,
11625f_int2 INTEGER,
11626f_char1 CHAR(20),
11627f_char2 CHAR(20),
11628f_charbig VARCHAR(1000)
11629, UNIQUE INDEX uidx1 (f_int2,f_int1)
11630)
11631PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
11632(PARTITION part1 VALUES LESS THAN (0)
11633(SUBPARTITION subpart11, SUBPARTITION subpart12),
11634PARTITION part2 VALUES LESS THAN (5)
11635(SUBPARTITION subpart21, SUBPARTITION subpart22),
11636PARTITION part3 VALUES LESS THAN (10)
11637(SUBPARTITION subpart31, SUBPARTITION subpart32),
11638PARTITION part4 VALUES LESS THAN (2147483646)
11639(SUBPARTITION subpart41, SUBPARTITION subpart42));
11640Warnings:
11641Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
11642INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
11643SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
11644WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
11645Warnings:
11646Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
11647ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
11648Warnings:
11649Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
11650INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
11651SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
11652WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
11653Warnings:
11654Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
11655# Start usability test (inc/partition_check.inc)
11656create_command
11657SHOW CREATE TABLE t1;
11658Table	Create Table
11659t1	CREATE TABLE `t1` (
11660  `f_int1` int(11) DEFAULT NULL,
11661  `f_int2` mediumint(9) DEFAULT NULL,
11662  `f_char1` char(20) DEFAULT NULL,
11663  `f_char2` char(20) DEFAULT NULL,
11664  `f_charbig` varchar(1000) DEFAULT NULL,
11665  UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
11666) ENGINE=MyISAM DEFAULT CHARSET=latin1
11667/*!50100 PARTITION BY RANGE (f_int1)
11668SUBPARTITION BY KEY (f_int1)
11669(PARTITION part1 VALUES LESS THAN (0)
11670 (SUBPARTITION subpart11 ENGINE = MyISAM,
11671  SUBPARTITION subpart12 ENGINE = MyISAM),
11672 PARTITION part2 VALUES LESS THAN (5)
11673 (SUBPARTITION subpart21 ENGINE = MyISAM,
11674  SUBPARTITION subpart22 ENGINE = MyISAM),
11675 PARTITION part3 VALUES LESS THAN (10)
11676 (SUBPARTITION subpart31 ENGINE = MyISAM,
11677  SUBPARTITION subpart32 ENGINE = MyISAM),
11678 PARTITION part4 VALUES LESS THAN (2147483646)
11679 (SUBPARTITION subpart41 ENGINE = MyISAM,
11680  SUBPARTITION subpart42 ENGINE = MyISAM)) */
11681
11682unified filelist
11683t1#P#part1#SP#subpart11.MYD
11684t1#P#part1#SP#subpart11.MYI
11685t1#P#part1#SP#subpart12.MYD
11686t1#P#part1#SP#subpart12.MYI
11687t1#P#part2#SP#subpart21.MYD
11688t1#P#part2#SP#subpart21.MYI
11689t1#P#part2#SP#subpart22.MYD
11690t1#P#part2#SP#subpart22.MYI
11691t1#P#part3#SP#subpart31.MYD
11692t1#P#part3#SP#subpart31.MYI
11693t1#P#part3#SP#subpart32.MYD
11694t1#P#part3#SP#subpart32.MYI
11695t1#P#part4#SP#subpart41.MYD
11696t1#P#part4#SP#subpart41.MYI
11697t1#P#part4#SP#subpart42.MYD
11698t1#P#part4#SP#subpart42.MYI
11699t1.frm
11700t1.par
11701
11702# check prerequisites-1 success:    1
11703# check COUNT(*) success:    1
11704# check MIN/MAX(f_int1) success:    1
11705# check MIN/MAX(f_int2) success:    1
11706INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11707SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
11708CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
11709WHERE f_int1 IN (2,3);
11710ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
11711# check prerequisites-3 success:    1
11712# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
11713INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11714SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
11715CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
11716WHERE f_int1 IN (2,3);
11717DELETE FROM t1 WHERE f_charbig = 'delete me';
11718INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11719SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
11720CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
11721WHERE f_int1 IN (2,3);
11722DELETE FROM t1 WHERE f_charbig = 'delete me';
11723# check read via f_int1 success: 1
11724# check read via f_int2 success: 1
11725
11726# check multiple-1 success: 	1
11727DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
11728
11729# check multiple-2 success: 	1
11730INSERT INTO t1 SELECT * FROM t0_template
11731WHERE MOD(f_int1,3) = 0;
11732
11733# check multiple-3 success: 	1
11734UPDATE t1 SET f_int1 = f_int1 + @max_row
11735WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
11736AND @max_row_div2 + @max_row_div4;
11737
11738# check multiple-4 success: 	1
11739DELETE FROM t1
11740WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
11741AND @max_row_div2 + @max_row_div4 + @max_row;
11742
11743# check multiple-5 success: 	1
11744SELECT COUNT(*) INTO @try_count FROM t0_template
11745WHERE MOD(f_int1,3) = 0
11746AND f_int1 BETWEEN @max_row_div2 AND @max_row;
11747SELECT COUNT(*) INTO @clash_count
11748FROM t1 INNER JOIN t0_template USING(f_int1)
11749WHERE MOD(f_int1,3) = 0
11750AND f_int1 BETWEEN @max_row_div2 AND @max_row;
11751SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
11752INSERT INTO t1
11753SET f_int1 = @cur_value , f_int2 = @cur_value,
11754f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
11755f_charbig = '#SINGLE#';
11756
11757# check single-1 success: 	1
11758SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
11759INSERT INTO t1
11760SET f_int1 = @cur_value , f_int2 = @cur_value,
11761f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
11762f_charbig = '#SINGLE#';
11763
11764# check single-2 success: 	1
11765SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
11766SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
11767UPDATE t1 SET f_int1 = @cur_value2
11768WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
11769
11770# check single-3 success: 	1
11771SET @cur_value1= -1;
11772SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
11773UPDATE t1 SET f_int1 = @cur_value1
11774WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
11775
11776# check single-4 success: 	1
11777SELECT MAX(f_int1) INTO @cur_value FROM t1;
11778DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
11779
11780# check single-5 success: 	1
11781DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
11782
11783# check single-6 success: 	1
11784INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
11785ERROR HY000: Table has no partition for value 2147483647
11786DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
11787INSERT t1 SET f_int1 = 0 , f_int2 = 0,
11788f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
11789f_charbig = '#NULL#';
11790INSERT INTO t1
11791SET f_int1 = NULL , f_int2 = -@max_row,
11792f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
11793f_charbig = '#NULL#';
11794# check null success:    1
11795
11796# check null-1 success: 	1
11797UPDATE t1 SET f_int1 = -@max_row
11798WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
11799AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
11800
11801# check null-2 success: 	1
11802UPDATE t1 SET f_int1 = NULL
11803WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
11804AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
11805
11806# check null-3 success: 	1
11807DELETE FROM t1
11808WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
11809AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
11810
11811# check null-4 success: 	1
11812DELETE FROM t1
11813WHERE f_int1 = 0 AND f_int2 = 0
11814AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
11815AND f_charbig = '#NULL#';
11816INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11817SELECT f_int1, f_int1, '', '', 'was inserted'
11818   FROM t0_template source_tab
11819WHERE MOD(f_int1,3) = 0
11820AND f_int1 BETWEEN @max_row_div2 AND @max_row
11821ON DUPLICATE KEY
11822UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
11823f_int2 = 2 * @max_row + source_tab.f_int1,
11824f_charbig = 'was updated';
11825
11826# check unique-1-a success: 	1
11827
11828# check unique-1-b success: 	1
11829DELETE FROM t1 WHERE f_charbig = 'was inserted';
11830UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11831f_int2 = CAST(f_char1 AS SIGNED INT),
11832f_charbig = CONCAT('===',f_char1,'===')
11833WHERE f_charbig = 'was updated';
11834REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11835SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
11836   FROM t0_template source_tab
11837WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
11838
11839# check replace success: 	1
11840DELETE FROM t1
11841WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
11842DELETE FROM t1
11843WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
11844f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
11845UPDATE t1 SET f_int2 = f_int1,
11846f_char1 = CAST(f_int1 AS CHAR),
11847f_char2 = CAST(f_int1 AS CHAR),
11848f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
11849WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
11850SET AUTOCOMMIT= 0;
11851INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11852SELECT f_int1, f_int1, '', '', 'was inserted'
11853FROM t0_template source_tab
11854WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
11855
11856# check transactions-1 success: 	1
11857COMMIT WORK;
11858
11859# check transactions-2 success: 	1
11860ROLLBACK WORK;
11861
11862# check transactions-3 success: 	1
11863DELETE FROM t1 WHERE f_charbig = 'was inserted';
11864COMMIT WORK;
11865ROLLBACK WORK;
11866
11867# check transactions-4 success: 	1
11868INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11869SELECT f_int1, f_int1, '', '', 'was inserted'
11870FROM t0_template source_tab
11871WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
11872
11873# check transactions-5 success: 	1
11874ROLLBACK WORK;
11875Warnings:
11876Warning	1196	Some non-transactional changed tables couldn't be rolled back
11877
11878# check transactions-6 success: 	1
11879# INFO: Storage engine used for t1 seems to be not transactional.
11880COMMIT;
11881
11882# check transactions-7 success: 	1
11883DELETE FROM t1 WHERE f_charbig = 'was inserted';
11884COMMIT WORK;
11885SET @@session.sql_mode = 'traditional';
11886Warnings:
11887Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
11888SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
11889INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11890SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
11891'', '', 'was inserted' FROM t0_template
11892WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
11893ERROR 22012: Division by 0
11894COMMIT;
11895
11896# check transactions-8 success: 	1
11897# INFO: Storage engine used for t1 seems to be unable to revert
11898#       changes made by the failing statement.
11899SET @@session.sql_mode = '';
11900Warnings:
11901Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
11902SET AUTOCOMMIT= 1;
11903DELETE FROM t1 WHERE f_charbig = 'was inserted';
11904COMMIT WORK;
11905UPDATE t1 SET f_charbig = REPEAT('b', 1000);
11906
11907# check special-1 success: 	1
11908UPDATE t1 SET f_charbig = '';
11909
11910# check special-2 success: 	1
11911UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
11912INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
11913SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
11914WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11915INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11916SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11917'just inserted' FROM t0_template
11918WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11919CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
11920BEGIN
11921UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11922f_charbig = 'updated by trigger'
11923      WHERE f_int1 = new.f_int1;
11924END|
11925INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11926SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
11927WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11928
11929# check trigger-1 success: 	1
11930DROP TRIGGER trg_1;
11931UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11932f_int2 = CAST(f_char1 AS SIGNED INT),
11933f_charbig = 'just inserted'
11934   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11935DELETE FROM t0_aux
11936WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11937INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11938SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11939'just inserted' FROM t0_template
11940WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11941CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
11942BEGIN
11943UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11944f_charbig = 'updated by trigger'
11945      WHERE f_int1 = new.f_int1;
11946END|
11947INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11948SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
11949WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11950
11951# check trigger-2 success: 	1
11952DROP TRIGGER trg_1;
11953UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11954f_int2 = CAST(f_char1 AS SIGNED INT),
11955f_charbig = 'just inserted'
11956   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11957DELETE FROM t0_aux
11958WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11959INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11960SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11961'just inserted' FROM t0_template
11962WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11963CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
11964BEGIN
11965UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11966f_charbig = 'updated by trigger'
11967      WHERE f_int1 = new.f_int1;
11968END|
11969UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
11970WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11971
11972# check trigger-3 success: 	1
11973DROP TRIGGER trg_1;
11974UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11975f_int2 = CAST(f_char1 AS SIGNED INT),
11976f_charbig = 'just inserted'
11977   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11978DELETE FROM t0_aux
11979WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11980INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11981SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11982'just inserted' FROM t0_template
11983WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11984CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
11985BEGIN
11986UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11987f_charbig = 'updated by trigger'
11988      WHERE f_int1 = - old.f_int1;
11989END|
11990UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
11991WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11992
11993# check trigger-4 success: 	1
11994DROP TRIGGER trg_1;
11995UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11996f_int2 = CAST(f_char1 AS SIGNED INT),
11997f_charbig = 'just inserted'
11998   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11999DELETE FROM t0_aux
12000WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12001INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12002SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12003'just inserted' FROM t0_template
12004WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12005CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
12006BEGIN
12007UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12008f_charbig = 'updated by trigger'
12009      WHERE f_int1 = new.f_int1;
12010END|
12011UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
12012WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12013
12014# check trigger-5 success: 	1
12015DROP TRIGGER trg_1;
12016UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12017f_int2 = CAST(f_char1 AS SIGNED INT),
12018f_charbig = 'just inserted'
12019   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12020DELETE FROM t0_aux
12021WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12022INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12023SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12024'just inserted' FROM t0_template
12025WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12026CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
12027BEGIN
12028UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12029f_charbig = 'updated by trigger'
12030      WHERE f_int1 = - old.f_int1;
12031END|
12032UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
12033WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12034
12035# check trigger-6 success: 	1
12036DROP TRIGGER trg_1;
12037UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12038f_int2 = CAST(f_char1 AS SIGNED INT),
12039f_charbig = 'just inserted'
12040   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12041DELETE FROM t0_aux
12042WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12043INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12044SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12045'just inserted' FROM t0_template
12046WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12047CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
12048BEGIN
12049UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12050f_charbig = 'updated by trigger'
12051      WHERE f_int1 = - old.f_int1;
12052END|
12053DELETE FROM t0_aux
12054WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12055
12056# check trigger-7 success: 	1
12057DROP TRIGGER trg_1;
12058UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12059f_int2 = CAST(f_char1 AS SIGNED INT),
12060f_charbig = 'just inserted'
12061   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12062DELETE FROM t0_aux
12063WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12064INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12065SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12066'just inserted' FROM t0_template
12067WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12068CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
12069BEGIN
12070UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12071f_charbig = 'updated by trigger'
12072      WHERE f_int1 = - old.f_int1;
12073END|
12074DELETE FROM t0_aux
12075WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12076
12077# check trigger-8 success: 	1
12078DROP TRIGGER trg_1;
12079UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12080f_int2 = CAST(f_char1 AS SIGNED INT),
12081f_charbig = 'just inserted'
12082   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12083DELETE FROM t0_aux
12084WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12085DELETE FROM t1
12086WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12087CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
12088BEGIN
12089SET new.f_int1 = old.f_int1 + @max_row,
12090new.f_int2 = old.f_int2 - @max_row,
12091new.f_charbig = '####updated per update trigger####';
12092END|
12093UPDATE t1
12094SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
12095f_charbig = '####updated per update statement itself####';
12096Warnings:
12097Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
12098
12099# check trigger-9 success: 	1
12100DROP TRIGGER trg_2;
12101UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12102f_int2 = CAST(f_char1 AS SIGNED INT),
12103f_charbig = CONCAT('===',f_char1,'===');
12104Warnings:
12105Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
12106CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
12107BEGIN
12108SET new.f_int1 = new.f_int1 + @max_row,
12109new.f_int2 = new.f_int2 - @max_row,
12110new.f_charbig = '####updated per update trigger####';
12111END|
12112UPDATE t1
12113SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
12114f_charbig = '####updated per update statement itself####';
12115Warnings:
12116Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
12117
12118# check trigger-10 success: 	1
12119DROP TRIGGER trg_2;
12120UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12121f_int2 = CAST(f_char1 AS SIGNED INT),
12122f_charbig = CONCAT('===',f_char1,'===');
12123Warnings:
12124Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
12125CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
12126BEGIN
12127SET new.f_int1 = @my_max1 + @counter,
12128new.f_int2 = @my_min2 - @counter,
12129new.f_charbig = '####updated per insert trigger####';
12130SET @counter = @counter + 1;
12131END|
12132SET @counter = 1;
12133SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
12134Warnings:
12135Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
12136INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12137SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
12138CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
12139WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
12140ORDER BY f_int1;
12141DROP TRIGGER trg_3;
12142
12143# check trigger-11 success: 	1
12144Warnings:
12145Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
12146DELETE FROM t1
12147WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
12148AND f_int2 <> CAST(f_char1 AS SIGNED INT)
12149AND f_charbig = '####updated per insert trigger####';
12150CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
12151BEGIN
12152SET new.f_int1 = @my_max1 + @counter,
12153new.f_int2 = @my_min2 - @counter,
12154new.f_charbig = '####updated per insert trigger####';
12155SET @counter = @counter + 1;
12156END|
12157SET @counter = 1;
12158SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
12159Warnings:
12160Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
12161INSERT INTO t1 (f_char1, f_char2, f_charbig)
12162SELECT CAST(f_int1 AS CHAR),
12163CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
12164WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
12165ORDER BY f_int1;
12166DROP TRIGGER trg_3;
12167
12168# check trigger-12 success: 	1
12169Warnings:
12170Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
12171DELETE FROM t1
12172WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
12173AND f_int2 <> CAST(f_char1 AS SIGNED INT)
12174AND f_charbig = '####updated per insert trigger####';
12175ANALYZE  TABLE t1;
12176Table	Op	Msg_type	Msg_text
12177test.t1	analyze	status	OK
12178test.t1	analyze	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
12179CHECK    TABLE t1 EXTENDED;
12180Table	Op	Msg_type	Msg_text
12181test.t1	check	status	OK
12182test.t1	check	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
12183CHECKSUM TABLE t1 EXTENDED;
12184Table	Checksum
12185test.t1	<some_value>
12186OPTIMIZE TABLE t1;
12187Table	Op	Msg_type	Msg_text
12188test.t1	optimize	status	OK
12189test.t1	optimize	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
12190# check layout success:    1
12191REPAIR   TABLE t1 EXTENDED;
12192Table	Op	Msg_type	Msg_text
12193test.t1	repair	status	OK
12194test.t1	repair	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
12195# check layout success:    1
12196TRUNCATE t1;
12197Warnings:
12198Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
12199
12200# check TRUNCATE success: 	1
12201# check layout success:    1
12202# End usability test (inc/partition_check.inc)
12203DROP TABLE t1;
12204CREATE TABLE t1 (
12205f_int1 INTEGER,
12206f_int2 INTEGER,
12207f_char1 CHAR(20),
12208f_char2 CHAR(20),
12209f_charbig VARCHAR(1000)
12210, UNIQUE INDEX uidx1 (f_int2,f_int1)
12211)
12212PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
12213(PARTITION part1 VALUES IN (0)
12214(SUBPARTITION sp11, SUBPARTITION sp12),
12215PARTITION part2 VALUES IN (1)
12216(SUBPARTITION sp21, SUBPARTITION sp22),
12217PARTITION part3 VALUES IN (2)
12218(SUBPARTITION sp31, SUBPARTITION sp32),
12219PARTITION part4 VALUES IN (NULL)
12220(SUBPARTITION sp41, SUBPARTITION sp42));
12221Warnings:
12222Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
12223INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
12224SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
12225WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
12226Warnings:
12227Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
12228ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
12229Warnings:
12230Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
12231INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
12232SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
12233WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
12234Warnings:
12235Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
12236# Start usability test (inc/partition_check.inc)
12237create_command
12238SHOW CREATE TABLE t1;
12239Table	Create Table
12240t1	CREATE TABLE `t1` (
12241  `f_int1` int(11) DEFAULT NULL,
12242  `f_int2` mediumint(9) DEFAULT NULL,
12243  `f_char1` char(20) DEFAULT NULL,
12244  `f_char2` char(20) DEFAULT NULL,
12245  `f_charbig` varchar(1000) DEFAULT NULL,
12246  UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
12247) ENGINE=MyISAM DEFAULT CHARSET=latin1
12248/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
12249SUBPARTITION BY HASH (f_int1 + 1)
12250(PARTITION part1 VALUES IN (0)
12251 (SUBPARTITION sp11 ENGINE = MyISAM,
12252  SUBPARTITION sp12 ENGINE = MyISAM),
12253 PARTITION part2 VALUES IN (1)
12254 (SUBPARTITION sp21 ENGINE = MyISAM,
12255  SUBPARTITION sp22 ENGINE = MyISAM),
12256 PARTITION part3 VALUES IN (2)
12257 (SUBPARTITION sp31 ENGINE = MyISAM,
12258  SUBPARTITION sp32 ENGINE = MyISAM),
12259 PARTITION part4 VALUES IN (NULL)
12260 (SUBPARTITION sp41 ENGINE = MyISAM,
12261  SUBPARTITION sp42 ENGINE = MyISAM)) */
12262
12263unified filelist
12264t1#P#part1#SP#sp11.MYD
12265t1#P#part1#SP#sp11.MYI
12266t1#P#part1#SP#sp12.MYD
12267t1#P#part1#SP#sp12.MYI
12268t1#P#part2#SP#sp21.MYD
12269t1#P#part2#SP#sp21.MYI
12270t1#P#part2#SP#sp22.MYD
12271t1#P#part2#SP#sp22.MYI
12272t1#P#part3#SP#sp31.MYD
12273t1#P#part3#SP#sp31.MYI
12274t1#P#part3#SP#sp32.MYD
12275t1#P#part3#SP#sp32.MYI
12276t1#P#part4#SP#sp41.MYD
12277t1#P#part4#SP#sp41.MYI
12278t1#P#part4#SP#sp42.MYD
12279t1#P#part4#SP#sp42.MYI
12280t1.frm
12281t1.par
12282
12283# check prerequisites-1 success:    1
12284# check COUNT(*) success:    1
12285# check MIN/MAX(f_int1) success:    1
12286# check MIN/MAX(f_int2) success:    1
12287INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12288SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
12289CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
12290WHERE f_int1 IN (2,3);
12291ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
12292# check prerequisites-3 success:    1
12293# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
12294INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12295SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
12296CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
12297WHERE f_int1 IN (2,3);
12298DELETE FROM t1 WHERE f_charbig = 'delete me';
12299INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12300SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
12301CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
12302WHERE f_int1 IN (2,3);
12303DELETE FROM t1 WHERE f_charbig = 'delete me';
12304# check read via f_int1 success: 1
12305# check read via f_int2 success: 1
12306
12307# check multiple-1 success: 	1
12308DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
12309
12310# check multiple-2 success: 	1
12311INSERT INTO t1 SELECT * FROM t0_template
12312WHERE MOD(f_int1,3) = 0;
12313
12314# check multiple-3 success: 	1
12315UPDATE t1 SET f_int1 = f_int1 + @max_row
12316WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
12317AND @max_row_div2 + @max_row_div4;
12318
12319# check multiple-4 success: 	1
12320DELETE FROM t1
12321WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
12322AND @max_row_div2 + @max_row_div4 + @max_row;
12323
12324# check multiple-5 success: 	1
12325SELECT COUNT(*) INTO @try_count FROM t0_template
12326WHERE MOD(f_int1,3) = 0
12327AND f_int1 BETWEEN @max_row_div2 AND @max_row;
12328SELECT COUNT(*) INTO @clash_count
12329FROM t1 INNER JOIN t0_template USING(f_int1)
12330WHERE MOD(f_int1,3) = 0
12331AND f_int1 BETWEEN @max_row_div2 AND @max_row;
12332SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
12333INSERT INTO t1
12334SET f_int1 = @cur_value , f_int2 = @cur_value,
12335f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
12336f_charbig = '#SINGLE#';
12337
12338# check single-1 success: 	1
12339SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
12340INSERT INTO t1
12341SET f_int1 = @cur_value , f_int2 = @cur_value,
12342f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
12343f_charbig = '#SINGLE#';
12344
12345# check single-2 success: 	1
12346SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
12347SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
12348UPDATE t1 SET f_int1 = @cur_value2
12349WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
12350
12351# check single-3 success: 	1
12352SET @cur_value1= -1;
12353SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
12354UPDATE t1 SET f_int1 = @cur_value1
12355WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
12356
12357# check single-4 success: 	1
12358SELECT MAX(f_int1) INTO @cur_value FROM t1;
12359DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
12360
12361# check single-5 success: 	1
12362DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
12363
12364# check single-6 success: 	1
12365INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
12366Warnings:
12367Warning	1264	Out of range value for column 'f_int2' at row 1
12368
12369# check single-7 success: 	1
12370DELETE FROM t1 WHERE f_charbig = '#2147483647##';
12371DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
12372INSERT t1 SET f_int1 = 0 , f_int2 = 0,
12373f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
12374f_charbig = '#NULL#';
12375INSERT INTO t1
12376SET f_int1 = NULL , f_int2 = -@max_row,
12377f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
12378f_charbig = '#NULL#';
12379# check null success:    1
12380
12381# check null-1 success: 	1
12382UPDATE t1 SET f_int1 = -@max_row
12383WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
12384AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
12385
12386# check null-2 success: 	1
12387UPDATE t1 SET f_int1 = NULL
12388WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
12389AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
12390
12391# check null-3 success: 	1
12392DELETE FROM t1
12393WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
12394AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
12395
12396# check null-4 success: 	1
12397DELETE FROM t1
12398WHERE f_int1 = 0 AND f_int2 = 0
12399AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
12400AND f_charbig = '#NULL#';
12401INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12402SELECT f_int1, f_int1, '', '', 'was inserted'
12403   FROM t0_template source_tab
12404WHERE MOD(f_int1,3) = 0
12405AND f_int1 BETWEEN @max_row_div2 AND @max_row
12406ON DUPLICATE KEY
12407UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
12408f_int2 = 2 * @max_row + source_tab.f_int1,
12409f_charbig = 'was updated';
12410
12411# check unique-1-a success: 	1
12412
12413# check unique-1-b success: 	1
12414DELETE FROM t1 WHERE f_charbig = 'was inserted';
12415UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12416f_int2 = CAST(f_char1 AS SIGNED INT),
12417f_charbig = CONCAT('===',f_char1,'===')
12418WHERE f_charbig = 'was updated';
12419REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12420SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
12421   FROM t0_template source_tab
12422WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
12423
12424# check replace success: 	1
12425DELETE FROM t1
12426WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
12427DELETE FROM t1
12428WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
12429f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
12430UPDATE t1 SET f_int2 = f_int1,
12431f_char1 = CAST(f_int1 AS CHAR),
12432f_char2 = CAST(f_int1 AS CHAR),
12433f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
12434WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
12435SET AUTOCOMMIT= 0;
12436INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12437SELECT f_int1, f_int1, '', '', 'was inserted'
12438FROM t0_template source_tab
12439WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
12440
12441# check transactions-1 success: 	1
12442COMMIT WORK;
12443
12444# check transactions-2 success: 	1
12445ROLLBACK WORK;
12446
12447# check transactions-3 success: 	1
12448DELETE FROM t1 WHERE f_charbig = 'was inserted';
12449COMMIT WORK;
12450ROLLBACK WORK;
12451
12452# check transactions-4 success: 	1
12453INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12454SELECT f_int1, f_int1, '', '', 'was inserted'
12455FROM t0_template source_tab
12456WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
12457
12458# check transactions-5 success: 	1
12459ROLLBACK WORK;
12460Warnings:
12461Warning	1196	Some non-transactional changed tables couldn't be rolled back
12462
12463# check transactions-6 success: 	1
12464# INFO: Storage engine used for t1 seems to be not transactional.
12465COMMIT;
12466
12467# check transactions-7 success: 	1
12468DELETE FROM t1 WHERE f_charbig = 'was inserted';
12469COMMIT WORK;
12470SET @@session.sql_mode = 'traditional';
12471Warnings:
12472Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
12473SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
12474INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12475SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
12476'', '', 'was inserted' FROM t0_template
12477WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
12478ERROR 22012: Division by 0
12479COMMIT;
12480
12481# check transactions-8 success: 	1
12482# INFO: Storage engine used for t1 seems to be unable to revert
12483#       changes made by the failing statement.
12484SET @@session.sql_mode = '';
12485Warnings:
12486Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
12487SET AUTOCOMMIT= 1;
12488DELETE FROM t1 WHERE f_charbig = 'was inserted';
12489COMMIT WORK;
12490UPDATE t1 SET f_charbig = REPEAT('b', 1000);
12491
12492# check special-1 success: 	1
12493UPDATE t1 SET f_charbig = '';
12494
12495# check special-2 success: 	1
12496UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
12497INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
12498SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
12499WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12500INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12501SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12502'just inserted' FROM t0_template
12503WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12504CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
12505BEGIN
12506UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12507f_charbig = 'updated by trigger'
12508      WHERE f_int1 = new.f_int1;
12509END|
12510INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12511SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
12512WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12513
12514# check trigger-1 success: 	1
12515DROP TRIGGER trg_1;
12516UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12517f_int2 = CAST(f_char1 AS SIGNED INT),
12518f_charbig = 'just inserted'
12519   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12520DELETE FROM t0_aux
12521WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12522INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12523SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12524'just inserted' FROM t0_template
12525WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12526CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
12527BEGIN
12528UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12529f_charbig = 'updated by trigger'
12530      WHERE f_int1 = new.f_int1;
12531END|
12532INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12533SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
12534WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12535
12536# check trigger-2 success: 	1
12537DROP TRIGGER trg_1;
12538UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12539f_int2 = CAST(f_char1 AS SIGNED INT),
12540f_charbig = 'just inserted'
12541   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12542DELETE FROM t0_aux
12543WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12544INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12545SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12546'just inserted' FROM t0_template
12547WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12548CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
12549BEGIN
12550UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12551f_charbig = 'updated by trigger'
12552      WHERE f_int1 = new.f_int1;
12553END|
12554UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
12555WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12556
12557# check trigger-3 success: 	1
12558DROP TRIGGER trg_1;
12559UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12560f_int2 = CAST(f_char1 AS SIGNED INT),
12561f_charbig = 'just inserted'
12562   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12563DELETE FROM t0_aux
12564WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12565INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12566SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12567'just inserted' FROM t0_template
12568WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12569CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
12570BEGIN
12571UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12572f_charbig = 'updated by trigger'
12573      WHERE f_int1 = - old.f_int1;
12574END|
12575UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
12576WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12577
12578# check trigger-4 success: 	1
12579DROP TRIGGER trg_1;
12580UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12581f_int2 = CAST(f_char1 AS SIGNED INT),
12582f_charbig = 'just inserted'
12583   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12584DELETE FROM t0_aux
12585WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12586INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12587SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12588'just inserted' FROM t0_template
12589WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12590CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
12591BEGIN
12592UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12593f_charbig = 'updated by trigger'
12594      WHERE f_int1 = new.f_int1;
12595END|
12596UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
12597WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12598
12599# check trigger-5 success: 	1
12600DROP TRIGGER trg_1;
12601UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12602f_int2 = CAST(f_char1 AS SIGNED INT),
12603f_charbig = 'just inserted'
12604   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12605DELETE FROM t0_aux
12606WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12607INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12608SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12609'just inserted' FROM t0_template
12610WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12611CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
12612BEGIN
12613UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12614f_charbig = 'updated by trigger'
12615      WHERE f_int1 = - old.f_int1;
12616END|
12617UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
12618WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12619
12620# check trigger-6 success: 	1
12621DROP TRIGGER trg_1;
12622UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12623f_int2 = CAST(f_char1 AS SIGNED INT),
12624f_charbig = 'just inserted'
12625   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12626DELETE FROM t0_aux
12627WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12628INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12629SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12630'just inserted' FROM t0_template
12631WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12632CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
12633BEGIN
12634UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12635f_charbig = 'updated by trigger'
12636      WHERE f_int1 = - old.f_int1;
12637END|
12638DELETE FROM t0_aux
12639WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12640
12641# check trigger-7 success: 	1
12642DROP TRIGGER trg_1;
12643UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12644f_int2 = CAST(f_char1 AS SIGNED INT),
12645f_charbig = 'just inserted'
12646   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12647DELETE FROM t0_aux
12648WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12649INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12650SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12651'just inserted' FROM t0_template
12652WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12653CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
12654BEGIN
12655UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12656f_charbig = 'updated by trigger'
12657      WHERE f_int1 = - old.f_int1;
12658END|
12659DELETE FROM t0_aux
12660WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12661
12662# check trigger-8 success: 	1
12663DROP TRIGGER trg_1;
12664UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12665f_int2 = CAST(f_char1 AS SIGNED INT),
12666f_charbig = 'just inserted'
12667   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12668DELETE FROM t0_aux
12669WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12670DELETE FROM t1
12671WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12672CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
12673BEGIN
12674SET new.f_int1 = old.f_int1 + @max_row,
12675new.f_int2 = old.f_int2 - @max_row,
12676new.f_charbig = '####updated per update trigger####';
12677END|
12678UPDATE t1
12679SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
12680f_charbig = '####updated per update statement itself####';
12681Warnings:
12682Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
12683
12684# check trigger-9 success: 	1
12685DROP TRIGGER trg_2;
12686UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12687f_int2 = CAST(f_char1 AS SIGNED INT),
12688f_charbig = CONCAT('===',f_char1,'===');
12689Warnings:
12690Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
12691CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
12692BEGIN
12693SET new.f_int1 = new.f_int1 + @max_row,
12694new.f_int2 = new.f_int2 - @max_row,
12695new.f_charbig = '####updated per update trigger####';
12696END|
12697UPDATE t1
12698SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
12699f_charbig = '####updated per update statement itself####';
12700Warnings:
12701Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
12702
12703# check trigger-10 success: 	1
12704DROP TRIGGER trg_2;
12705UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12706f_int2 = CAST(f_char1 AS SIGNED INT),
12707f_charbig = CONCAT('===',f_char1,'===');
12708Warnings:
12709Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
12710CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
12711BEGIN
12712SET new.f_int1 = @my_max1 + @counter,
12713new.f_int2 = @my_min2 - @counter,
12714new.f_charbig = '####updated per insert trigger####';
12715SET @counter = @counter + 1;
12716END|
12717SET @counter = 1;
12718SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
12719Warnings:
12720Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
12721INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12722SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
12723CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
12724WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
12725ORDER BY f_int1;
12726DROP TRIGGER trg_3;
12727
12728# check trigger-11 success: 	1
12729Warnings:
12730Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
12731DELETE FROM t1
12732WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
12733AND f_int2 <> CAST(f_char1 AS SIGNED INT)
12734AND f_charbig = '####updated per insert trigger####';
12735CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
12736BEGIN
12737SET new.f_int1 = @my_max1 + @counter,
12738new.f_int2 = @my_min2 - @counter,
12739new.f_charbig = '####updated per insert trigger####';
12740SET @counter = @counter + 1;
12741END|
12742SET @counter = 1;
12743SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
12744Warnings:
12745Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
12746INSERT INTO t1 (f_char1, f_char2, f_charbig)
12747SELECT CAST(f_int1 AS CHAR),
12748CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
12749WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
12750ORDER BY f_int1;
12751DROP TRIGGER trg_3;
12752
12753# check trigger-12 success: 	1
12754Warnings:
12755Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
12756DELETE FROM t1
12757WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
12758AND f_int2 <> CAST(f_char1 AS SIGNED INT)
12759AND f_charbig = '####updated per insert trigger####';
12760ANALYZE  TABLE t1;
12761Table	Op	Msg_type	Msg_text
12762test.t1	analyze	status	OK
12763test.t1	analyze	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
12764CHECK    TABLE t1 EXTENDED;
12765Table	Op	Msg_type	Msg_text
12766test.t1	check	status	OK
12767test.t1	check	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
12768CHECKSUM TABLE t1 EXTENDED;
12769Table	Checksum
12770test.t1	<some_value>
12771OPTIMIZE TABLE t1;
12772Table	Op	Msg_type	Msg_text
12773test.t1	optimize	status	OK
12774test.t1	optimize	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
12775# check layout success:    1
12776REPAIR   TABLE t1 EXTENDED;
12777Table	Op	Msg_type	Msg_text
12778test.t1	repair	status	OK
12779test.t1	repair	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
12780# check layout success:    1
12781TRUNCATE t1;
12782Warnings:
12783Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
12784
12785# check TRUNCATE success: 	1
12786# check layout success:    1
12787# End usability test (inc/partition_check.inc)
12788DROP TABLE t1;
12789CREATE TABLE t1 (
12790f_int1 INTEGER,
12791f_int2 INTEGER,
12792f_char1 CHAR(20),
12793f_char2 CHAR(20),
12794f_charbig VARCHAR(1000)
12795, UNIQUE INDEX uidx1 (f_int2,f_int1)
12796)
12797PARTITION BY LIST(ABS(MOD(f_int1,2)))
12798SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
12799(PARTITION part1 VALUES IN (0),
12800PARTITION part2 VALUES IN (1),
12801PARTITION part3 VALUES IN (NULL));
12802Warnings:
12803Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
12804INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
12805SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
12806WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
12807Warnings:
12808Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
12809ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
12810Warnings:
12811Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
12812INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
12813SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
12814WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
12815Warnings:
12816Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
12817# Start usability test (inc/partition_check.inc)
12818create_command
12819SHOW CREATE TABLE t1;
12820Table	Create Table
12821t1	CREATE TABLE `t1` (
12822  `f_int1` int(11) DEFAULT NULL,
12823  `f_int2` mediumint(9) DEFAULT NULL,
12824  `f_char1` char(20) DEFAULT NULL,
12825  `f_char2` char(20) DEFAULT NULL,
12826  `f_charbig` varchar(1000) DEFAULT NULL,
12827  UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
12828) ENGINE=MyISAM DEFAULT CHARSET=latin1
12829/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
12830SUBPARTITION BY KEY (f_int1)
12831SUBPARTITIONS 3
12832(PARTITION part1 VALUES IN (0) ENGINE = MyISAM,
12833 PARTITION part2 VALUES IN (1) ENGINE = MyISAM,
12834 PARTITION part3 VALUES IN (NULL) ENGINE = MyISAM) */
12835
12836unified filelist
12837t1#P#part1#SP#part1sp0.MYD
12838t1#P#part1#SP#part1sp0.MYI
12839t1#P#part1#SP#part1sp1.MYD
12840t1#P#part1#SP#part1sp1.MYI
12841t1#P#part1#SP#part1sp2.MYD
12842t1#P#part1#SP#part1sp2.MYI
12843t1#P#part2#SP#part2sp0.MYD
12844t1#P#part2#SP#part2sp0.MYI
12845t1#P#part2#SP#part2sp1.MYD
12846t1#P#part2#SP#part2sp1.MYI
12847t1#P#part2#SP#part2sp2.MYD
12848t1#P#part2#SP#part2sp2.MYI
12849t1#P#part3#SP#part3sp0.MYD
12850t1#P#part3#SP#part3sp0.MYI
12851t1#P#part3#SP#part3sp1.MYD
12852t1#P#part3#SP#part3sp1.MYI
12853t1#P#part3#SP#part3sp2.MYD
12854t1#P#part3#SP#part3sp2.MYI
12855t1.frm
12856t1.par
12857
12858# check prerequisites-1 success:    1
12859# check COUNT(*) success:    1
12860# check MIN/MAX(f_int1) success:    1
12861# check MIN/MAX(f_int2) success:    1
12862INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12863SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
12864CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
12865WHERE f_int1 IN (2,3);
12866ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
12867# check prerequisites-3 success:    1
12868# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
12869INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12870SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
12871CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
12872WHERE f_int1 IN (2,3);
12873DELETE FROM t1 WHERE f_charbig = 'delete me';
12874INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12875SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
12876CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
12877WHERE f_int1 IN (2,3);
12878DELETE FROM t1 WHERE f_charbig = 'delete me';
12879# check read via f_int1 success: 1
12880# check read via f_int2 success: 1
12881
12882# check multiple-1 success: 	1
12883DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
12884
12885# check multiple-2 success: 	1
12886INSERT INTO t1 SELECT * FROM t0_template
12887WHERE MOD(f_int1,3) = 0;
12888
12889# check multiple-3 success: 	1
12890UPDATE t1 SET f_int1 = f_int1 + @max_row
12891WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
12892AND @max_row_div2 + @max_row_div4;
12893
12894# check multiple-4 success: 	1
12895DELETE FROM t1
12896WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
12897AND @max_row_div2 + @max_row_div4 + @max_row;
12898
12899# check multiple-5 success: 	1
12900SELECT COUNT(*) INTO @try_count FROM t0_template
12901WHERE MOD(f_int1,3) = 0
12902AND f_int1 BETWEEN @max_row_div2 AND @max_row;
12903SELECT COUNT(*) INTO @clash_count
12904FROM t1 INNER JOIN t0_template USING(f_int1)
12905WHERE MOD(f_int1,3) = 0
12906AND f_int1 BETWEEN @max_row_div2 AND @max_row;
12907SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
12908INSERT INTO t1
12909SET f_int1 = @cur_value , f_int2 = @cur_value,
12910f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
12911f_charbig = '#SINGLE#';
12912
12913# check single-1 success: 	1
12914SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
12915INSERT INTO t1
12916SET f_int1 = @cur_value , f_int2 = @cur_value,
12917f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
12918f_charbig = '#SINGLE#';
12919
12920# check single-2 success: 	1
12921SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
12922SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
12923UPDATE t1 SET f_int1 = @cur_value2
12924WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
12925
12926# check single-3 success: 	1
12927SET @cur_value1= -1;
12928SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
12929UPDATE t1 SET f_int1 = @cur_value1
12930WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
12931
12932# check single-4 success: 	1
12933SELECT MAX(f_int1) INTO @cur_value FROM t1;
12934DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
12935
12936# check single-5 success: 	1
12937DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
12938
12939# check single-6 success: 	1
12940INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
12941Warnings:
12942Warning	1264	Out of range value for column 'f_int2' at row 1
12943
12944# check single-7 success: 	1
12945DELETE FROM t1 WHERE f_charbig = '#2147483647##';
12946DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
12947INSERT t1 SET f_int1 = 0 , f_int2 = 0,
12948f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
12949f_charbig = '#NULL#';
12950INSERT INTO t1
12951SET f_int1 = NULL , f_int2 = -@max_row,
12952f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
12953f_charbig = '#NULL#';
12954# check null success:    1
12955
12956# check null-1 success: 	1
12957UPDATE t1 SET f_int1 = -@max_row
12958WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
12959AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
12960
12961# check null-2 success: 	1
12962UPDATE t1 SET f_int1 = NULL
12963WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
12964AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
12965
12966# check null-3 success: 	1
12967DELETE FROM t1
12968WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
12969AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
12970
12971# check null-4 success: 	1
12972DELETE FROM t1
12973WHERE f_int1 = 0 AND f_int2 = 0
12974AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
12975AND f_charbig = '#NULL#';
12976INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12977SELECT f_int1, f_int1, '', '', 'was inserted'
12978   FROM t0_template source_tab
12979WHERE MOD(f_int1,3) = 0
12980AND f_int1 BETWEEN @max_row_div2 AND @max_row
12981ON DUPLICATE KEY
12982UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
12983f_int2 = 2 * @max_row + source_tab.f_int1,
12984f_charbig = 'was updated';
12985
12986# check unique-1-a success: 	1
12987
12988# check unique-1-b success: 	1
12989DELETE FROM t1 WHERE f_charbig = 'was inserted';
12990UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12991f_int2 = CAST(f_char1 AS SIGNED INT),
12992f_charbig = CONCAT('===',f_char1,'===')
12993WHERE f_charbig = 'was updated';
12994REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12995SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
12996   FROM t0_template source_tab
12997WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
12998
12999# check replace success: 	1
13000DELETE FROM t1
13001WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
13002DELETE FROM t1
13003WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
13004f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
13005UPDATE t1 SET f_int2 = f_int1,
13006f_char1 = CAST(f_int1 AS CHAR),
13007f_char2 = CAST(f_int1 AS CHAR),
13008f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
13009WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
13010SET AUTOCOMMIT= 0;
13011INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13012SELECT f_int1, f_int1, '', '', 'was inserted'
13013FROM t0_template source_tab
13014WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
13015
13016# check transactions-1 success: 	1
13017COMMIT WORK;
13018
13019# check transactions-2 success: 	1
13020ROLLBACK WORK;
13021
13022# check transactions-3 success: 	1
13023DELETE FROM t1 WHERE f_charbig = 'was inserted';
13024COMMIT WORK;
13025ROLLBACK WORK;
13026
13027# check transactions-4 success: 	1
13028INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13029SELECT f_int1, f_int1, '', '', 'was inserted'
13030FROM t0_template source_tab
13031WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
13032
13033# check transactions-5 success: 	1
13034ROLLBACK WORK;
13035Warnings:
13036Warning	1196	Some non-transactional changed tables couldn't be rolled back
13037
13038# check transactions-6 success: 	1
13039# INFO: Storage engine used for t1 seems to be not transactional.
13040COMMIT;
13041
13042# check transactions-7 success: 	1
13043DELETE FROM t1 WHERE f_charbig = 'was inserted';
13044COMMIT WORK;
13045SET @@session.sql_mode = 'traditional';
13046Warnings:
13047Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
13048SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
13049INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13050SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
13051'', '', 'was inserted' FROM t0_template
13052WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
13053ERROR 22012: Division by 0
13054COMMIT;
13055
13056# check transactions-8 success: 	1
13057# INFO: Storage engine used for t1 seems to be unable to revert
13058#       changes made by the failing statement.
13059SET @@session.sql_mode = '';
13060Warnings:
13061Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
13062SET AUTOCOMMIT= 1;
13063DELETE FROM t1 WHERE f_charbig = 'was inserted';
13064COMMIT WORK;
13065UPDATE t1 SET f_charbig = REPEAT('b', 1000);
13066
13067# check special-1 success: 	1
13068UPDATE t1 SET f_charbig = '';
13069
13070# check special-2 success: 	1
13071UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
13072INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
13073SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
13074WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13075INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13076SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13077'just inserted' FROM t0_template
13078WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13079CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
13080BEGIN
13081UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13082f_charbig = 'updated by trigger'
13083      WHERE f_int1 = new.f_int1;
13084END|
13085INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13086SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
13087WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13088
13089# check trigger-1 success: 	1
13090DROP TRIGGER trg_1;
13091UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13092f_int2 = CAST(f_char1 AS SIGNED INT),
13093f_charbig = 'just inserted'
13094   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13095DELETE FROM t0_aux
13096WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13097INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13098SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13099'just inserted' FROM t0_template
13100WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13101CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
13102BEGIN
13103UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13104f_charbig = 'updated by trigger'
13105      WHERE f_int1 = new.f_int1;
13106END|
13107INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13108SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
13109WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13110
13111# check trigger-2 success: 	1
13112DROP TRIGGER trg_1;
13113UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13114f_int2 = CAST(f_char1 AS SIGNED INT),
13115f_charbig = 'just inserted'
13116   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13117DELETE FROM t0_aux
13118WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13119INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13120SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13121'just inserted' FROM t0_template
13122WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13123CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
13124BEGIN
13125UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13126f_charbig = 'updated by trigger'
13127      WHERE f_int1 = new.f_int1;
13128END|
13129UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
13130WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13131
13132# check trigger-3 success: 	1
13133DROP TRIGGER trg_1;
13134UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13135f_int2 = CAST(f_char1 AS SIGNED INT),
13136f_charbig = 'just inserted'
13137   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13138DELETE FROM t0_aux
13139WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13140INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13141SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13142'just inserted' FROM t0_template
13143WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13144CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
13145BEGIN
13146UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13147f_charbig = 'updated by trigger'
13148      WHERE f_int1 = - old.f_int1;
13149END|
13150UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
13151WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13152
13153# check trigger-4 success: 	1
13154DROP TRIGGER trg_1;
13155UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13156f_int2 = CAST(f_char1 AS SIGNED INT),
13157f_charbig = 'just inserted'
13158   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13159DELETE FROM t0_aux
13160WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13161INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13162SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13163'just inserted' FROM t0_template
13164WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13165CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
13166BEGIN
13167UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13168f_charbig = 'updated by trigger'
13169      WHERE f_int1 = new.f_int1;
13170END|
13171UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
13172WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13173
13174# check trigger-5 success: 	1
13175DROP TRIGGER trg_1;
13176UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13177f_int2 = CAST(f_char1 AS SIGNED INT),
13178f_charbig = 'just inserted'
13179   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13180DELETE FROM t0_aux
13181WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13182INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13183SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13184'just inserted' FROM t0_template
13185WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13186CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
13187BEGIN
13188UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13189f_charbig = 'updated by trigger'
13190      WHERE f_int1 = - old.f_int1;
13191END|
13192UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
13193WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13194
13195# check trigger-6 success: 	1
13196DROP TRIGGER trg_1;
13197UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13198f_int2 = CAST(f_char1 AS SIGNED INT),
13199f_charbig = 'just inserted'
13200   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13201DELETE FROM t0_aux
13202WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13203INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13204SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13205'just inserted' FROM t0_template
13206WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13207CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
13208BEGIN
13209UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13210f_charbig = 'updated by trigger'
13211      WHERE f_int1 = - old.f_int1;
13212END|
13213DELETE FROM t0_aux
13214WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13215
13216# check trigger-7 success: 	1
13217DROP TRIGGER trg_1;
13218UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13219f_int2 = CAST(f_char1 AS SIGNED INT),
13220f_charbig = 'just inserted'
13221   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13222DELETE FROM t0_aux
13223WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13224INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13225SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13226'just inserted' FROM t0_template
13227WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13228CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
13229BEGIN
13230UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13231f_charbig = 'updated by trigger'
13232      WHERE f_int1 = - old.f_int1;
13233END|
13234DELETE FROM t0_aux
13235WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13236
13237# check trigger-8 success: 	1
13238DROP TRIGGER trg_1;
13239UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13240f_int2 = CAST(f_char1 AS SIGNED INT),
13241f_charbig = 'just inserted'
13242   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13243DELETE FROM t0_aux
13244WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13245DELETE FROM t1
13246WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13247CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
13248BEGIN
13249SET new.f_int1 = old.f_int1 + @max_row,
13250new.f_int2 = old.f_int2 - @max_row,
13251new.f_charbig = '####updated per update trigger####';
13252END|
13253UPDATE t1
13254SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
13255f_charbig = '####updated per update statement itself####';
13256Warnings:
13257Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
13258
13259# check trigger-9 success: 	1
13260DROP TRIGGER trg_2;
13261UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13262f_int2 = CAST(f_char1 AS SIGNED INT),
13263f_charbig = CONCAT('===',f_char1,'===');
13264Warnings:
13265Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
13266CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
13267BEGIN
13268SET new.f_int1 = new.f_int1 + @max_row,
13269new.f_int2 = new.f_int2 - @max_row,
13270new.f_charbig = '####updated per update trigger####';
13271END|
13272UPDATE t1
13273SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
13274f_charbig = '####updated per update statement itself####';
13275Warnings:
13276Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
13277
13278# check trigger-10 success: 	1
13279DROP TRIGGER trg_2;
13280UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13281f_int2 = CAST(f_char1 AS SIGNED INT),
13282f_charbig = CONCAT('===',f_char1,'===');
13283Warnings:
13284Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
13285CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
13286BEGIN
13287SET new.f_int1 = @my_max1 + @counter,
13288new.f_int2 = @my_min2 - @counter,
13289new.f_charbig = '####updated per insert trigger####';
13290SET @counter = @counter + 1;
13291END|
13292SET @counter = 1;
13293SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
13294Warnings:
13295Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
13296INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13297SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
13298CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
13299WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
13300ORDER BY f_int1;
13301DROP TRIGGER trg_3;
13302
13303# check trigger-11 success: 	1
13304Warnings:
13305Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
13306DELETE FROM t1
13307WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
13308AND f_int2 <> CAST(f_char1 AS SIGNED INT)
13309AND f_charbig = '####updated per insert trigger####';
13310CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
13311BEGIN
13312SET new.f_int1 = @my_max1 + @counter,
13313new.f_int2 = @my_min2 - @counter,
13314new.f_charbig = '####updated per insert trigger####';
13315SET @counter = @counter + 1;
13316END|
13317SET @counter = 1;
13318SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
13319Warnings:
13320Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
13321INSERT INTO t1 (f_char1, f_char2, f_charbig)
13322SELECT CAST(f_int1 AS CHAR),
13323CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
13324WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
13325ORDER BY f_int1;
13326DROP TRIGGER trg_3;
13327
13328# check trigger-12 success: 	1
13329Warnings:
13330Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
13331DELETE FROM t1
13332WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
13333AND f_int2 <> CAST(f_char1 AS SIGNED INT)
13334AND f_charbig = '####updated per insert trigger####';
13335ANALYZE  TABLE t1;
13336Table	Op	Msg_type	Msg_text
13337test.t1	analyze	status	OK
13338test.t1	analyze	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
13339CHECK    TABLE t1 EXTENDED;
13340Table	Op	Msg_type	Msg_text
13341test.t1	check	status	OK
13342test.t1	check	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
13343CHECKSUM TABLE t1 EXTENDED;
13344Table	Checksum
13345test.t1	<some_value>
13346OPTIMIZE TABLE t1;
13347Table	Op	Msg_type	Msg_text
13348test.t1	optimize	status	OK
13349test.t1	optimize	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
13350# check layout success:    1
13351REPAIR   TABLE t1 EXTENDED;
13352Table	Op	Msg_type	Msg_text
13353test.t1	repair	status	OK
13354test.t1	repair	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
13355# check layout success:    1
13356TRUNCATE t1;
13357Warnings:
13358Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
13359
13360# check TRUNCATE success: 	1
13361# check layout success:    1
13362# End usability test (inc/partition_check.inc)
13363DROP TABLE t1;
13364#------------------------------------------------------------------------
13365#  2.3   ALTER column f_int1 and f_int2 used in partitioning function
13366#------------------------------------------------------------------------
13367#  2.3.1 no PRIMARY KEY or UNIQUE INDEX exists
13368DROP TABLE IF EXISTS t1;
13369CREATE TABLE t1 (
13370f_int1 INTEGER,
13371f_int2 INTEGER,
13372f_char1 CHAR(20),
13373f_char2 CHAR(20),
13374f_charbig VARCHAR(1000)
13375
13376)
13377PARTITION BY HASH(f_int1 + f_int2) PARTITIONS 2;
13378Warnings:
13379Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
13380INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
13381SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
13382WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
13383Warnings:
13384Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
13385ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
13386Warnings:
13387Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
13388INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
13389SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
13390WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
13391Warnings:
13392Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
13393# Start usability test (inc/partition_check.inc)
13394create_command
13395SHOW CREATE TABLE t1;
13396Table	Create Table
13397t1	CREATE TABLE `t1` (
13398  `f_int1` mediumint(9) DEFAULT NULL,
13399  `f_int2` mediumint(9) DEFAULT NULL,
13400  `f_char1` char(20) DEFAULT NULL,
13401  `f_char2` char(20) DEFAULT NULL,
13402  `f_charbig` varchar(1000) DEFAULT NULL
13403) ENGINE=MyISAM DEFAULT CHARSET=latin1
13404/*!50100 PARTITION BY HASH (f_int1 + f_int2)
13405PARTITIONS 2 */
13406
13407unified filelist
13408t1#P#p0.MYD
13409t1#P#p0.MYI
13410t1#P#p1.MYD
13411t1#P#p1.MYI
13412t1.frm
13413t1.par
13414
13415# check prerequisites-1 success:    1
13416# check COUNT(*) success:    1
13417# check MIN/MAX(f_int1) success:    1
13418# check MIN/MAX(f_int2) success:    1
13419INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13420SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
13421CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
13422WHERE f_int1 IN (2,3);
13423# check prerequisites-3 success:    1
13424DELETE FROM t1 WHERE f_charbig = 'delete me';
13425# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
13426# check read via f_int1 success: 1
13427# check read via f_int2 success: 1
13428
13429# check multiple-1 success: 	1
13430DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
13431
13432# check multiple-2 success: 	1
13433INSERT INTO t1 SELECT * FROM t0_template
13434WHERE MOD(f_int1,3) = 0;
13435
13436# check multiple-3 success: 	1
13437UPDATE t1 SET f_int1 = f_int1 + @max_row
13438WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
13439AND @max_row_div2 + @max_row_div4;
13440
13441# check multiple-4 success: 	1
13442DELETE FROM t1
13443WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
13444AND @max_row_div2 + @max_row_div4 + @max_row;
13445
13446# check multiple-5 success: 	1
13447SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
13448INSERT INTO t1
13449SET f_int1 = @cur_value , f_int2 = @cur_value,
13450f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
13451f_charbig = '#SINGLE#';
13452
13453# check single-1 success: 	1
13454SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
13455INSERT INTO t1
13456SET f_int1 = @cur_value , f_int2 = @cur_value,
13457f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
13458f_charbig = '#SINGLE#';
13459
13460# check single-2 success: 	1
13461SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
13462SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
13463UPDATE t1 SET f_int1 = @cur_value2
13464WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
13465
13466# check single-3 success: 	1
13467SET @cur_value1= -1;
13468SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
13469UPDATE t1 SET f_int1 = @cur_value1
13470WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
13471
13472# check single-4 success: 	1
13473SELECT MAX(f_int1) INTO @cur_value FROM t1;
13474DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
13475
13476# check single-5 success: 	1
13477DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
13478
13479# check single-6 success: 	1
13480INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
13481Warnings:
13482Warning	1264	Out of range value for column 'f_int1' at row 1
13483Warning	1264	Out of range value for column 'f_int2' at row 1
13484
13485# check single-7 success: 	1
13486DELETE FROM t1 WHERE f_charbig = '#2147483647##';
13487DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
13488INSERT t1 SET f_int1 = 0 , f_int2 = 0,
13489f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
13490f_charbig = '#NULL#';
13491INSERT INTO t1
13492SET f_int1 = NULL , f_int2 = -@max_row,
13493f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
13494f_charbig = '#NULL#';
13495# check null success:    1
13496
13497# check null-1 success: 	1
13498UPDATE t1 SET f_int1 = -@max_row
13499WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
13500AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
13501
13502# check null-2 success: 	1
13503UPDATE t1 SET f_int1 = NULL
13504WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
13505AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
13506
13507# check null-3 success: 	1
13508DELETE FROM t1
13509WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
13510AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
13511
13512# check null-4 success: 	1
13513DELETE FROM t1
13514WHERE f_int1 = 0 AND f_int2 = 0
13515AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
13516AND f_charbig = '#NULL#';
13517SET AUTOCOMMIT= 0;
13518INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13519SELECT f_int1, f_int1, '', '', 'was inserted'
13520FROM t0_template source_tab
13521WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
13522
13523# check transactions-1 success: 	1
13524COMMIT WORK;
13525
13526# check transactions-2 success: 	1
13527ROLLBACK WORK;
13528
13529# check transactions-3 success: 	1
13530DELETE FROM t1 WHERE f_charbig = 'was inserted';
13531COMMIT WORK;
13532ROLLBACK WORK;
13533
13534# check transactions-4 success: 	1
13535INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13536SELECT f_int1, f_int1, '', '', 'was inserted'
13537FROM t0_template source_tab
13538WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
13539
13540# check transactions-5 success: 	1
13541ROLLBACK WORK;
13542Warnings:
13543Warning	1196	Some non-transactional changed tables couldn't be rolled back
13544
13545# check transactions-6 success: 	1
13546# INFO: Storage engine used for t1 seems to be not transactional.
13547COMMIT;
13548
13549# check transactions-7 success: 	1
13550DELETE FROM t1 WHERE f_charbig = 'was inserted';
13551COMMIT WORK;
13552SET @@session.sql_mode = 'traditional';
13553Warnings:
13554Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
13555SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
13556INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13557SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
13558'', '', 'was inserted' FROM t0_template
13559WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
13560ERROR 22012: Division by 0
13561COMMIT;
13562
13563# check transactions-8 success: 	1
13564# INFO: Storage engine used for t1 seems to be unable to revert
13565#       changes made by the failing statement.
13566SET @@session.sql_mode = '';
13567Warnings:
13568Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
13569SET AUTOCOMMIT= 1;
13570DELETE FROM t1 WHERE f_charbig = 'was inserted';
13571COMMIT WORK;
13572UPDATE t1 SET f_charbig = REPEAT('b', 1000);
13573
13574# check special-1 success: 	1
13575UPDATE t1 SET f_charbig = '';
13576
13577# check special-2 success: 	1
13578UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
13579INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
13580SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
13581WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13582INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13583SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13584'just inserted' FROM t0_template
13585WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13586CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
13587BEGIN
13588UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13589f_charbig = 'updated by trigger'
13590      WHERE f_int1 = new.f_int1;
13591END|
13592INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13593SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
13594WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13595
13596# check trigger-1 success: 	1
13597DROP TRIGGER trg_1;
13598UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13599f_int2 = CAST(f_char1 AS SIGNED INT),
13600f_charbig = 'just inserted'
13601   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13602DELETE FROM t0_aux
13603WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13604INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13605SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13606'just inserted' FROM t0_template
13607WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13608CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
13609BEGIN
13610UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13611f_charbig = 'updated by trigger'
13612      WHERE f_int1 = new.f_int1;
13613END|
13614INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13615SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
13616WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13617
13618# check trigger-2 success: 	1
13619DROP TRIGGER trg_1;
13620UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13621f_int2 = CAST(f_char1 AS SIGNED INT),
13622f_charbig = 'just inserted'
13623   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13624DELETE FROM t0_aux
13625WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13626INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13627SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13628'just inserted' FROM t0_template
13629WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13630CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
13631BEGIN
13632UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13633f_charbig = 'updated by trigger'
13634      WHERE f_int1 = new.f_int1;
13635END|
13636UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
13637WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13638
13639# check trigger-3 success: 	1
13640DROP TRIGGER trg_1;
13641UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13642f_int2 = CAST(f_char1 AS SIGNED INT),
13643f_charbig = 'just inserted'
13644   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13645DELETE FROM t0_aux
13646WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13647INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13648SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13649'just inserted' FROM t0_template
13650WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13651CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
13652BEGIN
13653UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13654f_charbig = 'updated by trigger'
13655      WHERE f_int1 = - old.f_int1;
13656END|
13657UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
13658WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13659
13660# check trigger-4 success: 	1
13661DROP TRIGGER trg_1;
13662UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13663f_int2 = CAST(f_char1 AS SIGNED INT),
13664f_charbig = 'just inserted'
13665   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13666DELETE FROM t0_aux
13667WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13668INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13669SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13670'just inserted' FROM t0_template
13671WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13672CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
13673BEGIN
13674UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13675f_charbig = 'updated by trigger'
13676      WHERE f_int1 = new.f_int1;
13677END|
13678UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
13679WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13680
13681# check trigger-5 success: 	1
13682DROP TRIGGER trg_1;
13683UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13684f_int2 = CAST(f_char1 AS SIGNED INT),
13685f_charbig = 'just inserted'
13686   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13687DELETE FROM t0_aux
13688WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13689INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13690SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13691'just inserted' FROM t0_template
13692WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13693CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
13694BEGIN
13695UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13696f_charbig = 'updated by trigger'
13697      WHERE f_int1 = - old.f_int1;
13698END|
13699UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
13700WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13701
13702# check trigger-6 success: 	1
13703DROP TRIGGER trg_1;
13704UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13705f_int2 = CAST(f_char1 AS SIGNED INT),
13706f_charbig = 'just inserted'
13707   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13708DELETE FROM t0_aux
13709WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13710INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13711SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13712'just inserted' FROM t0_template
13713WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13714CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
13715BEGIN
13716UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13717f_charbig = 'updated by trigger'
13718      WHERE f_int1 = - old.f_int1;
13719END|
13720DELETE FROM t0_aux
13721WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13722
13723# check trigger-7 success: 	1
13724DROP TRIGGER trg_1;
13725UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13726f_int2 = CAST(f_char1 AS SIGNED INT),
13727f_charbig = 'just inserted'
13728   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13729DELETE FROM t0_aux
13730WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13731INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13732SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13733'just inserted' FROM t0_template
13734WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13735CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
13736BEGIN
13737UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13738f_charbig = 'updated by trigger'
13739      WHERE f_int1 = - old.f_int1;
13740END|
13741DELETE FROM t0_aux
13742WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13743
13744# check trigger-8 success: 	1
13745DROP TRIGGER trg_1;
13746UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13747f_int2 = CAST(f_char1 AS SIGNED INT),
13748f_charbig = 'just inserted'
13749   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13750DELETE FROM t0_aux
13751WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13752DELETE FROM t1
13753WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13754CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
13755BEGIN
13756SET new.f_int1 = old.f_int1 + @max_row,
13757new.f_int2 = old.f_int2 - @max_row,
13758new.f_charbig = '####updated per update trigger####';
13759END|
13760UPDATE t1
13761SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
13762f_charbig = '####updated per update statement itself####';
13763Warnings:
13764Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
13765
13766# check trigger-9 success: 	1
13767DROP TRIGGER trg_2;
13768UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13769f_int2 = CAST(f_char1 AS SIGNED INT),
13770f_charbig = CONCAT('===',f_char1,'===');
13771Warnings:
13772Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
13773CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
13774BEGIN
13775SET new.f_int1 = new.f_int1 + @max_row,
13776new.f_int2 = new.f_int2 - @max_row,
13777new.f_charbig = '####updated per update trigger####';
13778END|
13779UPDATE t1
13780SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
13781f_charbig = '####updated per update statement itself####';
13782Warnings:
13783Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
13784
13785# check trigger-10 success: 	1
13786DROP TRIGGER trg_2;
13787UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13788f_int2 = CAST(f_char1 AS SIGNED INT),
13789f_charbig = CONCAT('===',f_char1,'===');
13790Warnings:
13791Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
13792CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
13793BEGIN
13794SET new.f_int1 = @my_max1 + @counter,
13795new.f_int2 = @my_min2 - @counter,
13796new.f_charbig = '####updated per insert trigger####';
13797SET @counter = @counter + 1;
13798END|
13799SET @counter = 1;
13800SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
13801Warnings:
13802Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
13803INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13804SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
13805CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
13806WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
13807ORDER BY f_int1;
13808DROP TRIGGER trg_3;
13809
13810# check trigger-11 success: 	1
13811Warnings:
13812Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
13813DELETE FROM t1
13814WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
13815AND f_int2 <> CAST(f_char1 AS SIGNED INT)
13816AND f_charbig = '####updated per insert trigger####';
13817CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
13818BEGIN
13819SET new.f_int1 = @my_max1 + @counter,
13820new.f_int2 = @my_min2 - @counter,
13821new.f_charbig = '####updated per insert trigger####';
13822SET @counter = @counter + 1;
13823END|
13824SET @counter = 1;
13825SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
13826Warnings:
13827Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
13828INSERT INTO t1 (f_char1, f_char2, f_charbig)
13829SELECT CAST(f_int1 AS CHAR),
13830CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
13831WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
13832ORDER BY f_int1;
13833DROP TRIGGER trg_3;
13834
13835# check trigger-12 success: 	1
13836Warnings:
13837Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
13838DELETE FROM t1
13839WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
13840AND f_int2 <> CAST(f_char1 AS SIGNED INT)
13841AND f_charbig = '####updated per insert trigger####';
13842ANALYZE  TABLE t1;
13843Table	Op	Msg_type	Msg_text
13844test.t1	analyze	status	OK
13845test.t1	analyze	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
13846CHECK    TABLE t1 EXTENDED;
13847Table	Op	Msg_type	Msg_text
13848test.t1	check	status	OK
13849test.t1	check	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
13850CHECKSUM TABLE t1 EXTENDED;
13851Table	Checksum
13852test.t1	<some_value>
13853OPTIMIZE TABLE t1;
13854Table	Op	Msg_type	Msg_text
13855test.t1	optimize	status	OK
13856test.t1	optimize	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
13857# check layout success:    1
13858REPAIR   TABLE t1 EXTENDED;
13859Table	Op	Msg_type	Msg_text
13860test.t1	repair	status	OK
13861test.t1	repair	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
13862# check layout success:    1
13863TRUNCATE t1;
13864Warnings:
13865Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
13866
13867# check TRUNCATE success: 	1
13868# check layout success:    1
13869# End usability test (inc/partition_check.inc)
13870DROP TABLE t1;
13871CREATE TABLE t1 (
13872f_int1 INTEGER,
13873f_int2 INTEGER,
13874f_char1 CHAR(20),
13875f_char2 CHAR(20),
13876f_charbig VARCHAR(1000)
13877
13878)
13879PARTITION BY KEY(f_int1,f_int2) PARTITIONS 5;
13880Warnings:
13881Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
13882INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
13883SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
13884WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
13885Warnings:
13886Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
13887ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
13888Warnings:
13889Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
13890INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
13891SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
13892WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
13893Warnings:
13894Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
13895# Start usability test (inc/partition_check.inc)
13896create_command
13897SHOW CREATE TABLE t1;
13898Table	Create Table
13899t1	CREATE TABLE `t1` (
13900  `f_int1` mediumint(9) DEFAULT NULL,
13901  `f_int2` mediumint(9) DEFAULT NULL,
13902  `f_char1` char(20) DEFAULT NULL,
13903  `f_char2` char(20) DEFAULT NULL,
13904  `f_charbig` varchar(1000) DEFAULT NULL
13905) ENGINE=MyISAM DEFAULT CHARSET=latin1
13906/*!50100 PARTITION BY KEY (f_int1,f_int2)
13907PARTITIONS 5 */
13908
13909unified filelist
13910t1#P#p0.MYD
13911t1#P#p0.MYI
13912t1#P#p1.MYD
13913t1#P#p1.MYI
13914t1#P#p2.MYD
13915t1#P#p2.MYI
13916t1#P#p3.MYD
13917t1#P#p3.MYI
13918t1#P#p4.MYD
13919t1#P#p4.MYI
13920t1.frm
13921t1.par
13922
13923# check prerequisites-1 success:    1
13924# check COUNT(*) success:    1
13925# check MIN/MAX(f_int1) success:    1
13926# check MIN/MAX(f_int2) success:    1
13927INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13928SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
13929CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
13930WHERE f_int1 IN (2,3);
13931# check prerequisites-3 success:    1
13932DELETE FROM t1 WHERE f_charbig = 'delete me';
13933# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
13934# check read via f_int1 success: 1
13935# check read via f_int2 success: 1
13936
13937# check multiple-1 success: 	1
13938DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
13939
13940# check multiple-2 success: 	1
13941INSERT INTO t1 SELECT * FROM t0_template
13942WHERE MOD(f_int1,3) = 0;
13943
13944# check multiple-3 success: 	1
13945UPDATE t1 SET f_int1 = f_int1 + @max_row
13946WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
13947AND @max_row_div2 + @max_row_div4;
13948
13949# check multiple-4 success: 	1
13950DELETE FROM t1
13951WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
13952AND @max_row_div2 + @max_row_div4 + @max_row;
13953
13954# check multiple-5 success: 	1
13955SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
13956INSERT INTO t1
13957SET f_int1 = @cur_value , f_int2 = @cur_value,
13958f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
13959f_charbig = '#SINGLE#';
13960
13961# check single-1 success: 	1
13962SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
13963INSERT INTO t1
13964SET f_int1 = @cur_value , f_int2 = @cur_value,
13965f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
13966f_charbig = '#SINGLE#';
13967
13968# check single-2 success: 	1
13969SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
13970SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
13971UPDATE t1 SET f_int1 = @cur_value2
13972WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
13973
13974# check single-3 success: 	1
13975SET @cur_value1= -1;
13976SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
13977UPDATE t1 SET f_int1 = @cur_value1
13978WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
13979
13980# check single-4 success: 	1
13981SELECT MAX(f_int1) INTO @cur_value FROM t1;
13982DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
13983
13984# check single-5 success: 	1
13985DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
13986
13987# check single-6 success: 	1
13988INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
13989Warnings:
13990Warning	1264	Out of range value for column 'f_int1' at row 1
13991Warning	1264	Out of range value for column 'f_int2' at row 1
13992
13993# check single-7 success: 	1
13994DELETE FROM t1 WHERE f_charbig = '#2147483647##';
13995DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
13996INSERT t1 SET f_int1 = 0 , f_int2 = 0,
13997f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
13998f_charbig = '#NULL#';
13999INSERT INTO t1
14000SET f_int1 = NULL , f_int2 = -@max_row,
14001f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
14002f_charbig = '#NULL#';
14003# check null success:    1
14004
14005# check null-1 success: 	1
14006UPDATE t1 SET f_int1 = -@max_row
14007WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
14008AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
14009
14010# check null-2 success: 	1
14011UPDATE t1 SET f_int1 = NULL
14012WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
14013AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
14014
14015# check null-3 success: 	1
14016DELETE FROM t1
14017WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
14018AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
14019
14020# check null-4 success: 	1
14021DELETE FROM t1
14022WHERE f_int1 = 0 AND f_int2 = 0
14023AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
14024AND f_charbig = '#NULL#';
14025SET AUTOCOMMIT= 0;
14026INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14027SELECT f_int1, f_int1, '', '', 'was inserted'
14028FROM t0_template source_tab
14029WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
14030
14031# check transactions-1 success: 	1
14032COMMIT WORK;
14033
14034# check transactions-2 success: 	1
14035ROLLBACK WORK;
14036
14037# check transactions-3 success: 	1
14038DELETE FROM t1 WHERE f_charbig = 'was inserted';
14039COMMIT WORK;
14040ROLLBACK WORK;
14041
14042# check transactions-4 success: 	1
14043INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14044SELECT f_int1, f_int1, '', '', 'was inserted'
14045FROM t0_template source_tab
14046WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
14047
14048# check transactions-5 success: 	1
14049ROLLBACK WORK;
14050Warnings:
14051Warning	1196	Some non-transactional changed tables couldn't be rolled back
14052
14053# check transactions-6 success: 	1
14054# INFO: Storage engine used for t1 seems to be not transactional.
14055COMMIT;
14056
14057# check transactions-7 success: 	1
14058DELETE FROM t1 WHERE f_charbig = 'was inserted';
14059COMMIT WORK;
14060SET @@session.sql_mode = 'traditional';
14061Warnings:
14062Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
14063SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
14064INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14065SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
14066'', '', 'was inserted' FROM t0_template
14067WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
14068ERROR 22012: Division by 0
14069COMMIT;
14070
14071# check transactions-8 success: 	1
14072# INFO: Storage engine used for t1 seems to be unable to revert
14073#       changes made by the failing statement.
14074SET @@session.sql_mode = '';
14075Warnings:
14076Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
14077SET AUTOCOMMIT= 1;
14078DELETE FROM t1 WHERE f_charbig = 'was inserted';
14079COMMIT WORK;
14080UPDATE t1 SET f_charbig = REPEAT('b', 1000);
14081
14082# check special-1 success: 	1
14083UPDATE t1 SET f_charbig = '';
14084
14085# check special-2 success: 	1
14086UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
14087INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
14088SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
14089WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14090INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14091SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14092'just inserted' FROM t0_template
14093WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14094CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
14095BEGIN
14096UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14097f_charbig = 'updated by trigger'
14098      WHERE f_int1 = new.f_int1;
14099END|
14100INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14101SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
14102WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14103
14104# check trigger-1 success: 	1
14105DROP TRIGGER trg_1;
14106UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14107f_int2 = CAST(f_char1 AS SIGNED INT),
14108f_charbig = 'just inserted'
14109   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14110DELETE FROM t0_aux
14111WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14112INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14113SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14114'just inserted' FROM t0_template
14115WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14116CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
14117BEGIN
14118UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14119f_charbig = 'updated by trigger'
14120      WHERE f_int1 = new.f_int1;
14121END|
14122INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14123SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
14124WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14125
14126# check trigger-2 success: 	1
14127DROP TRIGGER trg_1;
14128UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14129f_int2 = CAST(f_char1 AS SIGNED INT),
14130f_charbig = 'just inserted'
14131   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14132DELETE FROM t0_aux
14133WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14134INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14135SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14136'just inserted' FROM t0_template
14137WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14138CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
14139BEGIN
14140UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14141f_charbig = 'updated by trigger'
14142      WHERE f_int1 = new.f_int1;
14143END|
14144UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
14145WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14146
14147# check trigger-3 success: 	1
14148DROP TRIGGER trg_1;
14149UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14150f_int2 = CAST(f_char1 AS SIGNED INT),
14151f_charbig = 'just inserted'
14152   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14153DELETE FROM t0_aux
14154WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14155INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14156SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14157'just inserted' FROM t0_template
14158WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14159CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
14160BEGIN
14161UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14162f_charbig = 'updated by trigger'
14163      WHERE f_int1 = - old.f_int1;
14164END|
14165UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
14166WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14167
14168# check trigger-4 success: 	1
14169DROP TRIGGER trg_1;
14170UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14171f_int2 = CAST(f_char1 AS SIGNED INT),
14172f_charbig = 'just inserted'
14173   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14174DELETE FROM t0_aux
14175WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14176INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14177SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14178'just inserted' FROM t0_template
14179WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14180CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
14181BEGIN
14182UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14183f_charbig = 'updated by trigger'
14184      WHERE f_int1 = new.f_int1;
14185END|
14186UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
14187WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14188
14189# check trigger-5 success: 	1
14190DROP TRIGGER trg_1;
14191UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14192f_int2 = CAST(f_char1 AS SIGNED INT),
14193f_charbig = 'just inserted'
14194   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14195DELETE FROM t0_aux
14196WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14197INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14198SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14199'just inserted' FROM t0_template
14200WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14201CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
14202BEGIN
14203UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14204f_charbig = 'updated by trigger'
14205      WHERE f_int1 = - old.f_int1;
14206END|
14207UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
14208WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14209
14210# check trigger-6 success: 	1
14211DROP TRIGGER trg_1;
14212UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14213f_int2 = CAST(f_char1 AS SIGNED INT),
14214f_charbig = 'just inserted'
14215   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14216DELETE FROM t0_aux
14217WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14218INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14219SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14220'just inserted' FROM t0_template
14221WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14222CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
14223BEGIN
14224UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14225f_charbig = 'updated by trigger'
14226      WHERE f_int1 = - old.f_int1;
14227END|
14228DELETE FROM t0_aux
14229WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14230
14231# check trigger-7 success: 	1
14232DROP TRIGGER trg_1;
14233UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14234f_int2 = CAST(f_char1 AS SIGNED INT),
14235f_charbig = 'just inserted'
14236   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14237DELETE FROM t0_aux
14238WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14239INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14240SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14241'just inserted' FROM t0_template
14242WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14243CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
14244BEGIN
14245UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14246f_charbig = 'updated by trigger'
14247      WHERE f_int1 = - old.f_int1;
14248END|
14249DELETE FROM t0_aux
14250WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14251
14252# check trigger-8 success: 	1
14253DROP TRIGGER trg_1;
14254UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14255f_int2 = CAST(f_char1 AS SIGNED INT),
14256f_charbig = 'just inserted'
14257   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14258DELETE FROM t0_aux
14259WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14260DELETE FROM t1
14261WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14262CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
14263BEGIN
14264SET new.f_int1 = old.f_int1 + @max_row,
14265new.f_int2 = old.f_int2 - @max_row,
14266new.f_charbig = '####updated per update trigger####';
14267END|
14268UPDATE t1
14269SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
14270f_charbig = '####updated per update statement itself####';
14271Warnings:
14272Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
14273
14274# check trigger-9 success: 	1
14275DROP TRIGGER trg_2;
14276UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14277f_int2 = CAST(f_char1 AS SIGNED INT),
14278f_charbig = CONCAT('===',f_char1,'===');
14279Warnings:
14280Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
14281CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
14282BEGIN
14283SET new.f_int1 = new.f_int1 + @max_row,
14284new.f_int2 = new.f_int2 - @max_row,
14285new.f_charbig = '####updated per update trigger####';
14286END|
14287UPDATE t1
14288SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
14289f_charbig = '####updated per update statement itself####';
14290Warnings:
14291Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
14292
14293# check trigger-10 success: 	1
14294DROP TRIGGER trg_2;
14295UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14296f_int2 = CAST(f_char1 AS SIGNED INT),
14297f_charbig = CONCAT('===',f_char1,'===');
14298Warnings:
14299Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
14300CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
14301BEGIN
14302SET new.f_int1 = @my_max1 + @counter,
14303new.f_int2 = @my_min2 - @counter,
14304new.f_charbig = '####updated per insert trigger####';
14305SET @counter = @counter + 1;
14306END|
14307SET @counter = 1;
14308SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
14309Warnings:
14310Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
14311INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14312SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
14313CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
14314WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
14315ORDER BY f_int1;
14316DROP TRIGGER trg_3;
14317
14318# check trigger-11 success: 	1
14319Warnings:
14320Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
14321DELETE FROM t1
14322WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
14323AND f_int2 <> CAST(f_char1 AS SIGNED INT)
14324AND f_charbig = '####updated per insert trigger####';
14325CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
14326BEGIN
14327SET new.f_int1 = @my_max1 + @counter,
14328new.f_int2 = @my_min2 - @counter,
14329new.f_charbig = '####updated per insert trigger####';
14330SET @counter = @counter + 1;
14331END|
14332SET @counter = 1;
14333SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
14334Warnings:
14335Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
14336INSERT INTO t1 (f_char1, f_char2, f_charbig)
14337SELECT CAST(f_int1 AS CHAR),
14338CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
14339WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
14340ORDER BY f_int1;
14341DROP TRIGGER trg_3;
14342
14343# check trigger-12 success: 	1
14344Warnings:
14345Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
14346DELETE FROM t1
14347WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
14348AND f_int2 <> CAST(f_char1 AS SIGNED INT)
14349AND f_charbig = '####updated per insert trigger####';
14350ANALYZE  TABLE t1;
14351Table	Op	Msg_type	Msg_text
14352test.t1	analyze	status	OK
14353test.t1	analyze	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
14354CHECK    TABLE t1 EXTENDED;
14355Table	Op	Msg_type	Msg_text
14356test.t1	check	status	OK
14357test.t1	check	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
14358CHECKSUM TABLE t1 EXTENDED;
14359Table	Checksum
14360test.t1	<some_value>
14361OPTIMIZE TABLE t1;
14362Table	Op	Msg_type	Msg_text
14363test.t1	optimize	status	OK
14364test.t1	optimize	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
14365# check layout success:    1
14366REPAIR   TABLE t1 EXTENDED;
14367Table	Op	Msg_type	Msg_text
14368test.t1	repair	status	OK
14369test.t1	repair	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
14370# check layout success:    1
14371TRUNCATE t1;
14372Warnings:
14373Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
14374
14375# check TRUNCATE success: 	1
14376# check layout success:    1
14377# End usability test (inc/partition_check.inc)
14378DROP TABLE t1;
14379CREATE TABLE t1 (
14380f_int1 INTEGER,
14381f_int2 INTEGER,
14382f_char1 CHAR(20),
14383f_char2 CHAR(20),
14384f_charbig VARCHAR(1000)
14385
14386)
14387PARTITION BY LIST(MOD(f_int1 + f_int2,4))
14388(PARTITION part_3 VALUES IN (-3),
14389PARTITION part_2 VALUES IN (-2),
14390PARTITION part_1 VALUES IN (-1),
14391PARTITION part_N VALUES IN (NULL),
14392PARTITION part0 VALUES IN (0),
14393PARTITION part1 VALUES IN (1),
14394PARTITION part2 VALUES IN (2),
14395PARTITION part3 VALUES IN (3));
14396Warnings:
14397Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
14398INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
14399SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
14400WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
14401Warnings:
14402Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
14403ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
14404Warnings:
14405Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
14406INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
14407SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
14408WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
14409Warnings:
14410Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
14411# Start usability test (inc/partition_check.inc)
14412create_command
14413SHOW CREATE TABLE t1;
14414Table	Create Table
14415t1	CREATE TABLE `t1` (
14416  `f_int1` mediumint(9) DEFAULT NULL,
14417  `f_int2` mediumint(9) DEFAULT NULL,
14418  `f_char1` char(20) DEFAULT NULL,
14419  `f_char2` char(20) DEFAULT NULL,
14420  `f_charbig` varchar(1000) DEFAULT NULL
14421) ENGINE=MyISAM DEFAULT CHARSET=latin1
14422/*!50100 PARTITION BY LIST (MOD(f_int1 + f_int2,4))
14423(PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM,
14424 PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM,
14425 PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM,
14426 PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM,
14427 PARTITION part0 VALUES IN (0) ENGINE = MyISAM,
14428 PARTITION part1 VALUES IN (1) ENGINE = MyISAM,
14429 PARTITION part2 VALUES IN (2) ENGINE = MyISAM,
14430 PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */
14431
14432unified filelist
14433t1#P#part0.MYD
14434t1#P#part0.MYI
14435t1#P#part1.MYD
14436t1#P#part1.MYI
14437t1#P#part2.MYD
14438t1#P#part2.MYI
14439t1#P#part3.MYD
14440t1#P#part3.MYI
14441t1#P#part_1.MYD
14442t1#P#part_1.MYI
14443t1#P#part_2.MYD
14444t1#P#part_2.MYI
14445t1#P#part_3.MYD
14446t1#P#part_3.MYI
14447t1#P#part_N.MYD
14448t1#P#part_N.MYI
14449t1.frm
14450t1.par
14451
14452# check prerequisites-1 success:    1
14453# check COUNT(*) success:    1
14454# check MIN/MAX(f_int1) success:    1
14455# check MIN/MAX(f_int2) success:    1
14456INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14457SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
14458CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
14459WHERE f_int1 IN (2,3);
14460# check prerequisites-3 success:    1
14461DELETE FROM t1 WHERE f_charbig = 'delete me';
14462# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
14463# check read via f_int1 success: 1
14464# check read via f_int2 success: 1
14465
14466# check multiple-1 success: 	1
14467DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
14468
14469# check multiple-2 success: 	1
14470INSERT INTO t1 SELECT * FROM t0_template
14471WHERE MOD(f_int1,3) = 0;
14472
14473# check multiple-3 success: 	1
14474UPDATE t1 SET f_int1 = f_int1 + @max_row
14475WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
14476AND @max_row_div2 + @max_row_div4;
14477
14478# check multiple-4 success: 	1
14479DELETE FROM t1
14480WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
14481AND @max_row_div2 + @max_row_div4 + @max_row;
14482
14483# check multiple-5 success: 	1
14484SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
14485INSERT INTO t1
14486SET f_int1 = @cur_value , f_int2 = @cur_value,
14487f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
14488f_charbig = '#SINGLE#';
14489
14490# check single-1 success: 	1
14491SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
14492INSERT INTO t1
14493SET f_int1 = @cur_value , f_int2 = @cur_value,
14494f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
14495f_charbig = '#SINGLE#';
14496
14497# check single-2 success: 	1
14498SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
14499SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
14500UPDATE t1 SET f_int1 = @cur_value2
14501WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
14502
14503# check single-3 success: 	1
14504SET @cur_value1= -1;
14505SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
14506UPDATE t1 SET f_int1 = @cur_value1
14507WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
14508
14509# check single-4 success: 	1
14510SELECT MAX(f_int1) INTO @cur_value FROM t1;
14511DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
14512
14513# check single-5 success: 	1
14514DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
14515
14516# check single-6 success: 	1
14517INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
14518Warnings:
14519Warning	1264	Out of range value for column 'f_int1' at row 1
14520Warning	1264	Out of range value for column 'f_int2' at row 1
14521
14522# check single-7 success: 	1
14523DELETE FROM t1 WHERE f_charbig = '#2147483647##';
14524DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
14525INSERT t1 SET f_int1 = 0 , f_int2 = 0,
14526f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
14527f_charbig = '#NULL#';
14528INSERT INTO t1
14529SET f_int1 = NULL , f_int2 = -@max_row,
14530f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
14531f_charbig = '#NULL#';
14532# check null success:    1
14533
14534# check null-1 success: 	1
14535UPDATE t1 SET f_int1 = -@max_row
14536WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
14537AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
14538
14539# check null-2 success: 	1
14540UPDATE t1 SET f_int1 = NULL
14541WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
14542AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
14543
14544# check null-3 success: 	1
14545DELETE FROM t1
14546WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
14547AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
14548
14549# check null-4 success: 	1
14550DELETE FROM t1
14551WHERE f_int1 = 0 AND f_int2 = 0
14552AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
14553AND f_charbig = '#NULL#';
14554SET AUTOCOMMIT= 0;
14555INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14556SELECT f_int1, f_int1, '', '', 'was inserted'
14557FROM t0_template source_tab
14558WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
14559
14560# check transactions-1 success: 	1
14561COMMIT WORK;
14562
14563# check transactions-2 success: 	1
14564ROLLBACK WORK;
14565
14566# check transactions-3 success: 	1
14567DELETE FROM t1 WHERE f_charbig = 'was inserted';
14568COMMIT WORK;
14569ROLLBACK WORK;
14570
14571# check transactions-4 success: 	1
14572INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14573SELECT f_int1, f_int1, '', '', 'was inserted'
14574FROM t0_template source_tab
14575WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
14576
14577# check transactions-5 success: 	1
14578ROLLBACK WORK;
14579Warnings:
14580Warning	1196	Some non-transactional changed tables couldn't be rolled back
14581
14582# check transactions-6 success: 	1
14583# INFO: Storage engine used for t1 seems to be not transactional.
14584COMMIT;
14585
14586# check transactions-7 success: 	1
14587DELETE FROM t1 WHERE f_charbig = 'was inserted';
14588COMMIT WORK;
14589SET @@session.sql_mode = 'traditional';
14590Warnings:
14591Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
14592SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
14593INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14594SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
14595'', '', 'was inserted' FROM t0_template
14596WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
14597ERROR 22012: Division by 0
14598COMMIT;
14599
14600# check transactions-8 success: 	1
14601# INFO: Storage engine used for t1 seems to be unable to revert
14602#       changes made by the failing statement.
14603SET @@session.sql_mode = '';
14604Warnings:
14605Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
14606SET AUTOCOMMIT= 1;
14607DELETE FROM t1 WHERE f_charbig = 'was inserted';
14608COMMIT WORK;
14609UPDATE t1 SET f_charbig = REPEAT('b', 1000);
14610
14611# check special-1 success: 	1
14612UPDATE t1 SET f_charbig = '';
14613
14614# check special-2 success: 	1
14615UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
14616INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
14617SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
14618WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14619INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14620SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14621'just inserted' FROM t0_template
14622WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14623CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
14624BEGIN
14625UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14626f_charbig = 'updated by trigger'
14627      WHERE f_int1 = new.f_int1;
14628END|
14629INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14630SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
14631WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14632
14633# check trigger-1 success: 	1
14634DROP TRIGGER trg_1;
14635UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14636f_int2 = CAST(f_char1 AS SIGNED INT),
14637f_charbig = 'just inserted'
14638   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14639DELETE FROM t0_aux
14640WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14641INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14642SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14643'just inserted' FROM t0_template
14644WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14645CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
14646BEGIN
14647UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14648f_charbig = 'updated by trigger'
14649      WHERE f_int1 = new.f_int1;
14650END|
14651INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14652SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
14653WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14654
14655# check trigger-2 success: 	1
14656DROP TRIGGER trg_1;
14657UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14658f_int2 = CAST(f_char1 AS SIGNED INT),
14659f_charbig = 'just inserted'
14660   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14661DELETE FROM t0_aux
14662WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14663INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14664SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14665'just inserted' FROM t0_template
14666WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14667CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
14668BEGIN
14669UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14670f_charbig = 'updated by trigger'
14671      WHERE f_int1 = new.f_int1;
14672END|
14673UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
14674WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14675
14676# check trigger-3 success: 	1
14677DROP TRIGGER trg_1;
14678UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14679f_int2 = CAST(f_char1 AS SIGNED INT),
14680f_charbig = 'just inserted'
14681   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14682DELETE FROM t0_aux
14683WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14684INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14685SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14686'just inserted' FROM t0_template
14687WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14688CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
14689BEGIN
14690UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14691f_charbig = 'updated by trigger'
14692      WHERE f_int1 = - old.f_int1;
14693END|
14694UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
14695WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14696
14697# check trigger-4 success: 	1
14698DROP TRIGGER trg_1;
14699UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14700f_int2 = CAST(f_char1 AS SIGNED INT),
14701f_charbig = 'just inserted'
14702   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14703DELETE FROM t0_aux
14704WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14705INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14706SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14707'just inserted' FROM t0_template
14708WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14709CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
14710BEGIN
14711UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14712f_charbig = 'updated by trigger'
14713      WHERE f_int1 = new.f_int1;
14714END|
14715UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
14716WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14717
14718# check trigger-5 success: 	1
14719DROP TRIGGER trg_1;
14720UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14721f_int2 = CAST(f_char1 AS SIGNED INT),
14722f_charbig = 'just inserted'
14723   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14724DELETE FROM t0_aux
14725WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14726INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14727SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14728'just inserted' FROM t0_template
14729WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14730CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
14731BEGIN
14732UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14733f_charbig = 'updated by trigger'
14734      WHERE f_int1 = - old.f_int1;
14735END|
14736UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
14737WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14738
14739# check trigger-6 success: 	1
14740DROP TRIGGER trg_1;
14741UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14742f_int2 = CAST(f_char1 AS SIGNED INT),
14743f_charbig = 'just inserted'
14744   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14745DELETE FROM t0_aux
14746WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14747INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14748SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14749'just inserted' FROM t0_template
14750WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14751CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
14752BEGIN
14753UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14754f_charbig = 'updated by trigger'
14755      WHERE f_int1 = - old.f_int1;
14756END|
14757DELETE FROM t0_aux
14758WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14759
14760# check trigger-7 success: 	1
14761DROP TRIGGER trg_1;
14762UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14763f_int2 = CAST(f_char1 AS SIGNED INT),
14764f_charbig = 'just inserted'
14765   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14766DELETE FROM t0_aux
14767WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14768INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14769SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14770'just inserted' FROM t0_template
14771WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14772CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
14773BEGIN
14774UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14775f_charbig = 'updated by trigger'
14776      WHERE f_int1 = - old.f_int1;
14777END|
14778DELETE FROM t0_aux
14779WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14780
14781# check trigger-8 success: 	1
14782DROP TRIGGER trg_1;
14783UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14784f_int2 = CAST(f_char1 AS SIGNED INT),
14785f_charbig = 'just inserted'
14786   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14787DELETE FROM t0_aux
14788WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14789DELETE FROM t1
14790WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14791CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
14792BEGIN
14793SET new.f_int1 = old.f_int1 + @max_row,
14794new.f_int2 = old.f_int2 - @max_row,
14795new.f_charbig = '####updated per update trigger####';
14796END|
14797UPDATE t1
14798SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
14799f_charbig = '####updated per update statement itself####';
14800Warnings:
14801Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
14802
14803# check trigger-9 success: 	1
14804DROP TRIGGER trg_2;
14805UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14806f_int2 = CAST(f_char1 AS SIGNED INT),
14807f_charbig = CONCAT('===',f_char1,'===');
14808Warnings:
14809Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
14810CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
14811BEGIN
14812SET new.f_int1 = new.f_int1 + @max_row,
14813new.f_int2 = new.f_int2 - @max_row,
14814new.f_charbig = '####updated per update trigger####';
14815END|
14816UPDATE t1
14817SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
14818f_charbig = '####updated per update statement itself####';
14819Warnings:
14820Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
14821
14822# check trigger-10 success: 	1
14823DROP TRIGGER trg_2;
14824UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14825f_int2 = CAST(f_char1 AS SIGNED INT),
14826f_charbig = CONCAT('===',f_char1,'===');
14827Warnings:
14828Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
14829CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
14830BEGIN
14831SET new.f_int1 = @my_max1 + @counter,
14832new.f_int2 = @my_min2 - @counter,
14833new.f_charbig = '####updated per insert trigger####';
14834SET @counter = @counter + 1;
14835END|
14836SET @counter = 1;
14837SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
14838Warnings:
14839Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
14840INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14841SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
14842CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
14843WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
14844ORDER BY f_int1;
14845DROP TRIGGER trg_3;
14846
14847# check trigger-11 success: 	1
14848Warnings:
14849Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
14850DELETE FROM t1
14851WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
14852AND f_int2 <> CAST(f_char1 AS SIGNED INT)
14853AND f_charbig = '####updated per insert trigger####';
14854CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
14855BEGIN
14856SET new.f_int1 = @my_max1 + @counter,
14857new.f_int2 = @my_min2 - @counter,
14858new.f_charbig = '####updated per insert trigger####';
14859SET @counter = @counter + 1;
14860END|
14861SET @counter = 1;
14862SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
14863Warnings:
14864Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
14865INSERT INTO t1 (f_char1, f_char2, f_charbig)
14866SELECT CAST(f_int1 AS CHAR),
14867CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
14868WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
14869ORDER BY f_int1;
14870DROP TRIGGER trg_3;
14871
14872# check trigger-12 success: 	1
14873Warnings:
14874Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
14875DELETE FROM t1
14876WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
14877AND f_int2 <> CAST(f_char1 AS SIGNED INT)
14878AND f_charbig = '####updated per insert trigger####';
14879ANALYZE  TABLE t1;
14880Table	Op	Msg_type	Msg_text
14881test.t1	analyze	status	OK
14882test.t1	analyze	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
14883CHECK    TABLE t1 EXTENDED;
14884Table	Op	Msg_type	Msg_text
14885test.t1	check	status	OK
14886test.t1	check	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
14887CHECKSUM TABLE t1 EXTENDED;
14888Table	Checksum
14889test.t1	<some_value>
14890OPTIMIZE TABLE t1;
14891Table	Op	Msg_type	Msg_text
14892test.t1	optimize	status	OK
14893test.t1	optimize	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
14894# check layout success:    1
14895REPAIR   TABLE t1 EXTENDED;
14896Table	Op	Msg_type	Msg_text
14897test.t1	repair	status	OK
14898test.t1	repair	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
14899# check layout success:    1
14900TRUNCATE t1;
14901Warnings:
14902Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
14903
14904# check TRUNCATE success: 	1
14905# check layout success:    1
14906# End usability test (inc/partition_check.inc)
14907DROP TABLE t1;
14908CREATE TABLE t1 (
14909f_int1 INTEGER,
14910f_int2 INTEGER,
14911f_char1 CHAR(20),
14912f_char2 CHAR(20),
14913f_charbig VARCHAR(1000)
14914
14915)
14916PARTITION BY RANGE((f_int1 + f_int2) DIV 2)
14917(PARTITION parta VALUES LESS THAN (0),
14918PARTITION partb VALUES LESS THAN (5),
14919PARTITION partc VALUES LESS THAN (10),
14920PARTITION partd VALUES LESS THAN (10 + 5),
14921PARTITION parte VALUES LESS THAN (20),
14922PARTITION partf VALUES LESS THAN (2147483646));
14923Warnings:
14924Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
14925INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
14926SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
14927WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
14928Warnings:
14929Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
14930ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
14931Warnings:
14932Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
14933INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
14934SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
14935WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
14936Warnings:
14937Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
14938# Start usability test (inc/partition_check.inc)
14939create_command
14940SHOW CREATE TABLE t1;
14941Table	Create Table
14942t1	CREATE TABLE `t1` (
14943  `f_int1` mediumint(9) DEFAULT NULL,
14944  `f_int2` mediumint(9) DEFAULT NULL,
14945  `f_char1` char(20) DEFAULT NULL,
14946  `f_char2` char(20) DEFAULT NULL,
14947  `f_charbig` varchar(1000) DEFAULT NULL
14948) ENGINE=MyISAM DEFAULT CHARSET=latin1
14949/*!50100 PARTITION BY RANGE ((f_int1 + f_int2) DIV 2)
14950(PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM,
14951 PARTITION partb VALUES LESS THAN (5) ENGINE = MyISAM,
14952 PARTITION partc VALUES LESS THAN (10) ENGINE = MyISAM,
14953 PARTITION partd VALUES LESS THAN (15) ENGINE = MyISAM,
14954 PARTITION parte VALUES LESS THAN (20) ENGINE = MyISAM,
14955 PARTITION partf VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
14956
14957unified filelist
14958t1#P#parta.MYD
14959t1#P#parta.MYI
14960t1#P#partb.MYD
14961t1#P#partb.MYI
14962t1#P#partc.MYD
14963t1#P#partc.MYI
14964t1#P#partd.MYD
14965t1#P#partd.MYI
14966t1#P#parte.MYD
14967t1#P#parte.MYI
14968t1#P#partf.MYD
14969t1#P#partf.MYI
14970t1.frm
14971t1.par
14972
14973# check prerequisites-1 success:    1
14974# check COUNT(*) success:    1
14975# check MIN/MAX(f_int1) success:    1
14976# check MIN/MAX(f_int2) success:    1
14977INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14978SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
14979CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
14980WHERE f_int1 IN (2,3);
14981# check prerequisites-3 success:    1
14982DELETE FROM t1 WHERE f_charbig = 'delete me';
14983# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
14984# check read via f_int1 success: 1
14985# check read via f_int2 success: 1
14986
14987# check multiple-1 success: 	1
14988DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
14989
14990# check multiple-2 success: 	1
14991INSERT INTO t1 SELECT * FROM t0_template
14992WHERE MOD(f_int1,3) = 0;
14993
14994# check multiple-3 success: 	1
14995UPDATE t1 SET f_int1 = f_int1 + @max_row
14996WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
14997AND @max_row_div2 + @max_row_div4;
14998
14999# check multiple-4 success: 	1
15000DELETE FROM t1
15001WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
15002AND @max_row_div2 + @max_row_div4 + @max_row;
15003
15004# check multiple-5 success: 	1
15005SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
15006INSERT INTO t1
15007SET f_int1 = @cur_value , f_int2 = @cur_value,
15008f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
15009f_charbig = '#SINGLE#';
15010
15011# check single-1 success: 	1
15012SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
15013INSERT INTO t1
15014SET f_int1 = @cur_value , f_int2 = @cur_value,
15015f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
15016f_charbig = '#SINGLE#';
15017
15018# check single-2 success: 	1
15019SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
15020SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
15021UPDATE t1 SET f_int1 = @cur_value2
15022WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
15023
15024# check single-3 success: 	1
15025SET @cur_value1= -1;
15026SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
15027UPDATE t1 SET f_int1 = @cur_value1
15028WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
15029
15030# check single-4 success: 	1
15031SELECT MAX(f_int1) INTO @cur_value FROM t1;
15032DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
15033
15034# check single-5 success: 	1
15035DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
15036
15037# check single-6 success: 	1
15038INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
15039Warnings:
15040Warning	1264	Out of range value for column 'f_int1' at row 1
15041Warning	1264	Out of range value for column 'f_int2' at row 1
15042
15043# check single-7 success: 	1
15044DELETE FROM t1 WHERE f_charbig = '#2147483647##';
15045DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
15046INSERT t1 SET f_int1 = 0 , f_int2 = 0,
15047f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
15048f_charbig = '#NULL#';
15049INSERT INTO t1
15050SET f_int1 = NULL , f_int2 = -@max_row,
15051f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
15052f_charbig = '#NULL#';
15053# check null success:    1
15054
15055# check null-1 success: 	1
15056UPDATE t1 SET f_int1 = -@max_row
15057WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
15058AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
15059
15060# check null-2 success: 	1
15061UPDATE t1 SET f_int1 = NULL
15062WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
15063AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
15064
15065# check null-3 success: 	1
15066DELETE FROM t1
15067WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
15068AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
15069
15070# check null-4 success: 	1
15071DELETE FROM t1
15072WHERE f_int1 = 0 AND f_int2 = 0
15073AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
15074AND f_charbig = '#NULL#';
15075SET AUTOCOMMIT= 0;
15076INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15077SELECT f_int1, f_int1, '', '', 'was inserted'
15078FROM t0_template source_tab
15079WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
15080
15081# check transactions-1 success: 	1
15082COMMIT WORK;
15083
15084# check transactions-2 success: 	1
15085ROLLBACK WORK;
15086
15087# check transactions-3 success: 	1
15088DELETE FROM t1 WHERE f_charbig = 'was inserted';
15089COMMIT WORK;
15090ROLLBACK WORK;
15091
15092# check transactions-4 success: 	1
15093INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15094SELECT f_int1, f_int1, '', '', 'was inserted'
15095FROM t0_template source_tab
15096WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
15097
15098# check transactions-5 success: 	1
15099ROLLBACK WORK;
15100Warnings:
15101Warning	1196	Some non-transactional changed tables couldn't be rolled back
15102
15103# check transactions-6 success: 	1
15104# INFO: Storage engine used for t1 seems to be not transactional.
15105COMMIT;
15106
15107# check transactions-7 success: 	1
15108DELETE FROM t1 WHERE f_charbig = 'was inserted';
15109COMMIT WORK;
15110SET @@session.sql_mode = 'traditional';
15111Warnings:
15112Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
15113SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
15114INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15115SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
15116'', '', 'was inserted' FROM t0_template
15117WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
15118ERROR 22012: Division by 0
15119COMMIT;
15120
15121# check transactions-8 success: 	1
15122# INFO: Storage engine used for t1 seems to be unable to revert
15123#       changes made by the failing statement.
15124SET @@session.sql_mode = '';
15125Warnings:
15126Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
15127SET AUTOCOMMIT= 1;
15128DELETE FROM t1 WHERE f_charbig = 'was inserted';
15129COMMIT WORK;
15130UPDATE t1 SET f_charbig = REPEAT('b', 1000);
15131
15132# check special-1 success: 	1
15133UPDATE t1 SET f_charbig = '';
15134
15135# check special-2 success: 	1
15136UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
15137INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15138SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
15139WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15140INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15141SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15142'just inserted' FROM t0_template
15143WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15144CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
15145BEGIN
15146UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15147f_charbig = 'updated by trigger'
15148      WHERE f_int1 = new.f_int1;
15149END|
15150INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15151SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
15152WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15153
15154# check trigger-1 success: 	1
15155DROP TRIGGER trg_1;
15156UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15157f_int2 = CAST(f_char1 AS SIGNED INT),
15158f_charbig = 'just inserted'
15159   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15160DELETE FROM t0_aux
15161WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15162INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15163SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15164'just inserted' FROM t0_template
15165WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15166CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
15167BEGIN
15168UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15169f_charbig = 'updated by trigger'
15170      WHERE f_int1 = new.f_int1;
15171END|
15172INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15173SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
15174WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15175
15176# check trigger-2 success: 	1
15177DROP TRIGGER trg_1;
15178UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15179f_int2 = CAST(f_char1 AS SIGNED INT),
15180f_charbig = 'just inserted'
15181   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15182DELETE FROM t0_aux
15183WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15184INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15185SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15186'just inserted' FROM t0_template
15187WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15188CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
15189BEGIN
15190UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15191f_charbig = 'updated by trigger'
15192      WHERE f_int1 = new.f_int1;
15193END|
15194UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
15195WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15196
15197# check trigger-3 success: 	1
15198DROP TRIGGER trg_1;
15199UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15200f_int2 = CAST(f_char1 AS SIGNED INT),
15201f_charbig = 'just inserted'
15202   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15203DELETE FROM t0_aux
15204WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15205INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15206SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15207'just inserted' FROM t0_template
15208WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15209CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
15210BEGIN
15211UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15212f_charbig = 'updated by trigger'
15213      WHERE f_int1 = - old.f_int1;
15214END|
15215UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
15216WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15217
15218# check trigger-4 success: 	1
15219DROP TRIGGER trg_1;
15220UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15221f_int2 = CAST(f_char1 AS SIGNED INT),
15222f_charbig = 'just inserted'
15223   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15224DELETE FROM t0_aux
15225WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15226INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15227SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15228'just inserted' FROM t0_template
15229WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15230CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
15231BEGIN
15232UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15233f_charbig = 'updated by trigger'
15234      WHERE f_int1 = new.f_int1;
15235END|
15236UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
15237WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15238
15239# check trigger-5 success: 	1
15240DROP TRIGGER trg_1;
15241UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15242f_int2 = CAST(f_char1 AS SIGNED INT),
15243f_charbig = 'just inserted'
15244   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15245DELETE FROM t0_aux
15246WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15247INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15248SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15249'just inserted' FROM t0_template
15250WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15251CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
15252BEGIN
15253UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15254f_charbig = 'updated by trigger'
15255      WHERE f_int1 = - old.f_int1;
15256END|
15257UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
15258WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15259
15260# check trigger-6 success: 	1
15261DROP TRIGGER trg_1;
15262UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15263f_int2 = CAST(f_char1 AS SIGNED INT),
15264f_charbig = 'just inserted'
15265   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15266DELETE FROM t0_aux
15267WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15268INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15269SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15270'just inserted' FROM t0_template
15271WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15272CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
15273BEGIN
15274UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15275f_charbig = 'updated by trigger'
15276      WHERE f_int1 = - old.f_int1;
15277END|
15278DELETE FROM t0_aux
15279WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15280
15281# check trigger-7 success: 	1
15282DROP TRIGGER trg_1;
15283UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15284f_int2 = CAST(f_char1 AS SIGNED INT),
15285f_charbig = 'just inserted'
15286   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15287DELETE FROM t0_aux
15288WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15289INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15290SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15291'just inserted' FROM t0_template
15292WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15293CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
15294BEGIN
15295UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15296f_charbig = 'updated by trigger'
15297      WHERE f_int1 = - old.f_int1;
15298END|
15299DELETE FROM t0_aux
15300WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15301
15302# check trigger-8 success: 	1
15303DROP TRIGGER trg_1;
15304UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15305f_int2 = CAST(f_char1 AS SIGNED INT),
15306f_charbig = 'just inserted'
15307   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15308DELETE FROM t0_aux
15309WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15310DELETE FROM t1
15311WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15312CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
15313BEGIN
15314SET new.f_int1 = old.f_int1 + @max_row,
15315new.f_int2 = old.f_int2 - @max_row,
15316new.f_charbig = '####updated per update trigger####';
15317END|
15318UPDATE t1
15319SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
15320f_charbig = '####updated per update statement itself####';
15321Warnings:
15322Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
15323
15324# check trigger-9 success: 	1
15325DROP TRIGGER trg_2;
15326UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15327f_int2 = CAST(f_char1 AS SIGNED INT),
15328f_charbig = CONCAT('===',f_char1,'===');
15329Warnings:
15330Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
15331CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
15332BEGIN
15333SET new.f_int1 = new.f_int1 + @max_row,
15334new.f_int2 = new.f_int2 - @max_row,
15335new.f_charbig = '####updated per update trigger####';
15336END|
15337UPDATE t1
15338SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
15339f_charbig = '####updated per update statement itself####';
15340Warnings:
15341Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
15342
15343# check trigger-10 success: 	1
15344DROP TRIGGER trg_2;
15345UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15346f_int2 = CAST(f_char1 AS SIGNED INT),
15347f_charbig = CONCAT('===',f_char1,'===');
15348Warnings:
15349Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
15350CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
15351BEGIN
15352SET new.f_int1 = @my_max1 + @counter,
15353new.f_int2 = @my_min2 - @counter,
15354new.f_charbig = '####updated per insert trigger####';
15355SET @counter = @counter + 1;
15356END|
15357SET @counter = 1;
15358SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
15359Warnings:
15360Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
15361INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15362SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
15363CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
15364WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
15365ORDER BY f_int1;
15366DROP TRIGGER trg_3;
15367
15368# check trigger-11 success: 	1
15369Warnings:
15370Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
15371DELETE FROM t1
15372WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
15373AND f_int2 <> CAST(f_char1 AS SIGNED INT)
15374AND f_charbig = '####updated per insert trigger####';
15375CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
15376BEGIN
15377SET new.f_int1 = @my_max1 + @counter,
15378new.f_int2 = @my_min2 - @counter,
15379new.f_charbig = '####updated per insert trigger####';
15380SET @counter = @counter + 1;
15381END|
15382SET @counter = 1;
15383SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
15384Warnings:
15385Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
15386INSERT INTO t1 (f_char1, f_char2, f_charbig)
15387SELECT CAST(f_int1 AS CHAR),
15388CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
15389WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
15390ORDER BY f_int1;
15391DROP TRIGGER trg_3;
15392
15393# check trigger-12 success: 	1
15394Warnings:
15395Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
15396DELETE FROM t1
15397WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
15398AND f_int2 <> CAST(f_char1 AS SIGNED INT)
15399AND f_charbig = '####updated per insert trigger####';
15400ANALYZE  TABLE t1;
15401Table	Op	Msg_type	Msg_text
15402test.t1	analyze	status	OK
15403test.t1	analyze	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
15404CHECK    TABLE t1 EXTENDED;
15405Table	Op	Msg_type	Msg_text
15406test.t1	check	status	OK
15407test.t1	check	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
15408CHECKSUM TABLE t1 EXTENDED;
15409Table	Checksum
15410test.t1	<some_value>
15411OPTIMIZE TABLE t1;
15412Table	Op	Msg_type	Msg_text
15413test.t1	optimize	status	OK
15414test.t1	optimize	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
15415# check layout success:    1
15416REPAIR   TABLE t1 EXTENDED;
15417Table	Op	Msg_type	Msg_text
15418test.t1	repair	status	OK
15419test.t1	repair	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
15420# check layout success:    1
15421TRUNCATE t1;
15422Warnings:
15423Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
15424
15425# check TRUNCATE success: 	1
15426# check layout success:    1
15427# End usability test (inc/partition_check.inc)
15428DROP TABLE t1;
15429CREATE TABLE t1 (
15430f_int1 INTEGER,
15431f_int2 INTEGER,
15432f_char1 CHAR(20),
15433f_char2 CHAR(20),
15434f_charbig VARCHAR(1000)
15435
15436)
15437PARTITION BY RANGE(f_int1) SUBPARTITION BY HASH(f_int2) SUBPARTITIONS 2
15438(PARTITION parta VALUES LESS THAN (0),
15439PARTITION partb VALUES LESS THAN (5),
15440PARTITION partc VALUES LESS THAN (10),
15441PARTITION partd VALUES LESS THAN (2147483646));
15442Warnings:
15443Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
15444INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15445SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
15446WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
15447Warnings:
15448Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
15449ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
15450Warnings:
15451Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
15452INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15453SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
15454WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
15455Warnings:
15456Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
15457# Start usability test (inc/partition_check.inc)
15458create_command
15459SHOW CREATE TABLE t1;
15460Table	Create Table
15461t1	CREATE TABLE `t1` (
15462  `f_int1` mediumint(9) DEFAULT NULL,
15463  `f_int2` mediumint(9) DEFAULT NULL,
15464  `f_char1` char(20) DEFAULT NULL,
15465  `f_char2` char(20) DEFAULT NULL,
15466  `f_charbig` varchar(1000) DEFAULT NULL
15467) ENGINE=MyISAM DEFAULT CHARSET=latin1
15468/*!50100 PARTITION BY RANGE (f_int1)
15469SUBPARTITION BY HASH (f_int2)
15470SUBPARTITIONS 2
15471(PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM,
15472 PARTITION partb VALUES LESS THAN (5) ENGINE = MyISAM,
15473 PARTITION partc VALUES LESS THAN (10) ENGINE = MyISAM,
15474 PARTITION partd VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
15475
15476unified filelist
15477t1#P#parta#SP#partasp0.MYD
15478t1#P#parta#SP#partasp0.MYI
15479t1#P#parta#SP#partasp1.MYD
15480t1#P#parta#SP#partasp1.MYI
15481t1#P#partb#SP#partbsp0.MYD
15482t1#P#partb#SP#partbsp0.MYI
15483t1#P#partb#SP#partbsp1.MYD
15484t1#P#partb#SP#partbsp1.MYI
15485t1#P#partc#SP#partcsp0.MYD
15486t1#P#partc#SP#partcsp0.MYI
15487t1#P#partc#SP#partcsp1.MYD
15488t1#P#partc#SP#partcsp1.MYI
15489t1#P#partd#SP#partdsp0.MYD
15490t1#P#partd#SP#partdsp0.MYI
15491t1#P#partd#SP#partdsp1.MYD
15492t1#P#partd#SP#partdsp1.MYI
15493t1.frm
15494t1.par
15495
15496# check prerequisites-1 success:    1
15497# check COUNT(*) success:    1
15498# check MIN/MAX(f_int1) success:    1
15499# check MIN/MAX(f_int2) success:    1
15500INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15501SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
15502CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
15503WHERE f_int1 IN (2,3);
15504# check prerequisites-3 success:    1
15505DELETE FROM t1 WHERE f_charbig = 'delete me';
15506# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
15507# check read via f_int1 success: 1
15508# check read via f_int2 success: 1
15509
15510# check multiple-1 success: 	1
15511DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
15512
15513# check multiple-2 success: 	1
15514INSERT INTO t1 SELECT * FROM t0_template
15515WHERE MOD(f_int1,3) = 0;
15516
15517# check multiple-3 success: 	1
15518UPDATE t1 SET f_int1 = f_int1 + @max_row
15519WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
15520AND @max_row_div2 + @max_row_div4;
15521
15522# check multiple-4 success: 	1
15523DELETE FROM t1
15524WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
15525AND @max_row_div2 + @max_row_div4 + @max_row;
15526
15527# check multiple-5 success: 	1
15528SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
15529INSERT INTO t1
15530SET f_int1 = @cur_value , f_int2 = @cur_value,
15531f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
15532f_charbig = '#SINGLE#';
15533
15534# check single-1 success: 	1
15535SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
15536INSERT INTO t1
15537SET f_int1 = @cur_value , f_int2 = @cur_value,
15538f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
15539f_charbig = '#SINGLE#';
15540
15541# check single-2 success: 	1
15542SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
15543SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
15544UPDATE t1 SET f_int1 = @cur_value2
15545WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
15546
15547# check single-3 success: 	1
15548SET @cur_value1= -1;
15549SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
15550UPDATE t1 SET f_int1 = @cur_value1
15551WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
15552
15553# check single-4 success: 	1
15554SELECT MAX(f_int1) INTO @cur_value FROM t1;
15555DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
15556
15557# check single-5 success: 	1
15558DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
15559
15560# check single-6 success: 	1
15561INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
15562Warnings:
15563Warning	1264	Out of range value for column 'f_int1' at row 1
15564Warning	1264	Out of range value for column 'f_int2' at row 1
15565
15566# check single-7 success: 	1
15567DELETE FROM t1 WHERE f_charbig = '#2147483647##';
15568DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
15569INSERT t1 SET f_int1 = 0 , f_int2 = 0,
15570f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
15571f_charbig = '#NULL#';
15572INSERT INTO t1
15573SET f_int1 = NULL , f_int2 = -@max_row,
15574f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
15575f_charbig = '#NULL#';
15576# check null success:    1
15577
15578# check null-1 success: 	1
15579UPDATE t1 SET f_int1 = -@max_row
15580WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
15581AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
15582
15583# check null-2 success: 	1
15584UPDATE t1 SET f_int1 = NULL
15585WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
15586AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
15587
15588# check null-3 success: 	1
15589DELETE FROM t1
15590WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
15591AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
15592
15593# check null-4 success: 	1
15594DELETE FROM t1
15595WHERE f_int1 = 0 AND f_int2 = 0
15596AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
15597AND f_charbig = '#NULL#';
15598SET AUTOCOMMIT= 0;
15599INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15600SELECT f_int1, f_int1, '', '', 'was inserted'
15601FROM t0_template source_tab
15602WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
15603
15604# check transactions-1 success: 	1
15605COMMIT WORK;
15606
15607# check transactions-2 success: 	1
15608ROLLBACK WORK;
15609
15610# check transactions-3 success: 	1
15611DELETE FROM t1 WHERE f_charbig = 'was inserted';
15612COMMIT WORK;
15613ROLLBACK WORK;
15614
15615# check transactions-4 success: 	1
15616INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15617SELECT f_int1, f_int1, '', '', 'was inserted'
15618FROM t0_template source_tab
15619WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
15620
15621# check transactions-5 success: 	1
15622ROLLBACK WORK;
15623Warnings:
15624Warning	1196	Some non-transactional changed tables couldn't be rolled back
15625
15626# check transactions-6 success: 	1
15627# INFO: Storage engine used for t1 seems to be not transactional.
15628COMMIT;
15629
15630# check transactions-7 success: 	1
15631DELETE FROM t1 WHERE f_charbig = 'was inserted';
15632COMMIT WORK;
15633SET @@session.sql_mode = 'traditional';
15634Warnings:
15635Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
15636SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
15637INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15638SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
15639'', '', 'was inserted' FROM t0_template
15640WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
15641ERROR 22012: Division by 0
15642COMMIT;
15643
15644# check transactions-8 success: 	1
15645# INFO: Storage engine used for t1 seems to be unable to revert
15646#       changes made by the failing statement.
15647SET @@session.sql_mode = '';
15648Warnings:
15649Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
15650SET AUTOCOMMIT= 1;
15651DELETE FROM t1 WHERE f_charbig = 'was inserted';
15652COMMIT WORK;
15653UPDATE t1 SET f_charbig = REPEAT('b', 1000);
15654
15655# check special-1 success: 	1
15656UPDATE t1 SET f_charbig = '';
15657
15658# check special-2 success: 	1
15659UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
15660INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15661SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
15662WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15663INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15664SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15665'just inserted' FROM t0_template
15666WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15667CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
15668BEGIN
15669UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15670f_charbig = 'updated by trigger'
15671      WHERE f_int1 = new.f_int1;
15672END|
15673INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15674SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
15675WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15676
15677# check trigger-1 success: 	1
15678DROP TRIGGER trg_1;
15679UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15680f_int2 = CAST(f_char1 AS SIGNED INT),
15681f_charbig = 'just inserted'
15682   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15683DELETE FROM t0_aux
15684WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15685INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15686SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15687'just inserted' FROM t0_template
15688WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15689CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
15690BEGIN
15691UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15692f_charbig = 'updated by trigger'
15693      WHERE f_int1 = new.f_int1;
15694END|
15695INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15696SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
15697WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15698
15699# check trigger-2 success: 	1
15700DROP TRIGGER trg_1;
15701UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15702f_int2 = CAST(f_char1 AS SIGNED INT),
15703f_charbig = 'just inserted'
15704   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15705DELETE FROM t0_aux
15706WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15707INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15708SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15709'just inserted' FROM t0_template
15710WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15711CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
15712BEGIN
15713UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15714f_charbig = 'updated by trigger'
15715      WHERE f_int1 = new.f_int1;
15716END|
15717UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
15718WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15719
15720# check trigger-3 success: 	1
15721DROP TRIGGER trg_1;
15722UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15723f_int2 = CAST(f_char1 AS SIGNED INT),
15724f_charbig = 'just inserted'
15725   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15726DELETE FROM t0_aux
15727WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15728INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15729SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15730'just inserted' FROM t0_template
15731WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15732CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
15733BEGIN
15734UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15735f_charbig = 'updated by trigger'
15736      WHERE f_int1 = - old.f_int1;
15737END|
15738UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
15739WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15740
15741# check trigger-4 success: 	1
15742DROP TRIGGER trg_1;
15743UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15744f_int2 = CAST(f_char1 AS SIGNED INT),
15745f_charbig = 'just inserted'
15746   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15747DELETE FROM t0_aux
15748WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15749INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15750SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15751'just inserted' FROM t0_template
15752WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15753CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
15754BEGIN
15755UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15756f_charbig = 'updated by trigger'
15757      WHERE f_int1 = new.f_int1;
15758END|
15759UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
15760WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15761
15762# check trigger-5 success: 	1
15763DROP TRIGGER trg_1;
15764UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15765f_int2 = CAST(f_char1 AS SIGNED INT),
15766f_charbig = 'just inserted'
15767   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15768DELETE FROM t0_aux
15769WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15770INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15771SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15772'just inserted' FROM t0_template
15773WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15774CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
15775BEGIN
15776UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15777f_charbig = 'updated by trigger'
15778      WHERE f_int1 = - old.f_int1;
15779END|
15780UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
15781WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15782
15783# check trigger-6 success: 	1
15784DROP TRIGGER trg_1;
15785UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15786f_int2 = CAST(f_char1 AS SIGNED INT),
15787f_charbig = 'just inserted'
15788   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15789DELETE FROM t0_aux
15790WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15791INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15792SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15793'just inserted' FROM t0_template
15794WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15795CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
15796BEGIN
15797UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15798f_charbig = 'updated by trigger'
15799      WHERE f_int1 = - old.f_int1;
15800END|
15801DELETE FROM t0_aux
15802WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15803
15804# check trigger-7 success: 	1
15805DROP TRIGGER trg_1;
15806UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15807f_int2 = CAST(f_char1 AS SIGNED INT),
15808f_charbig = 'just inserted'
15809   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15810DELETE FROM t0_aux
15811WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15812INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15813SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15814'just inserted' FROM t0_template
15815WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15816CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
15817BEGIN
15818UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15819f_charbig = 'updated by trigger'
15820      WHERE f_int1 = - old.f_int1;
15821END|
15822DELETE FROM t0_aux
15823WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15824
15825# check trigger-8 success: 	1
15826DROP TRIGGER trg_1;
15827UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15828f_int2 = CAST(f_char1 AS SIGNED INT),
15829f_charbig = 'just inserted'
15830   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15831DELETE FROM t0_aux
15832WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15833DELETE FROM t1
15834WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15835CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
15836BEGIN
15837SET new.f_int1 = old.f_int1 + @max_row,
15838new.f_int2 = old.f_int2 - @max_row,
15839new.f_charbig = '####updated per update trigger####';
15840END|
15841UPDATE t1
15842SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
15843f_charbig = '####updated per update statement itself####';
15844Warnings:
15845Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
15846
15847# check trigger-9 success: 	1
15848DROP TRIGGER trg_2;
15849UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15850f_int2 = CAST(f_char1 AS SIGNED INT),
15851f_charbig = CONCAT('===',f_char1,'===');
15852Warnings:
15853Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
15854CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
15855BEGIN
15856SET new.f_int1 = new.f_int1 + @max_row,
15857new.f_int2 = new.f_int2 - @max_row,
15858new.f_charbig = '####updated per update trigger####';
15859END|
15860UPDATE t1
15861SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
15862f_charbig = '####updated per update statement itself####';
15863Warnings:
15864Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
15865
15866# check trigger-10 success: 	1
15867DROP TRIGGER trg_2;
15868UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15869f_int2 = CAST(f_char1 AS SIGNED INT),
15870f_charbig = CONCAT('===',f_char1,'===');
15871Warnings:
15872Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
15873CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
15874BEGIN
15875SET new.f_int1 = @my_max1 + @counter,
15876new.f_int2 = @my_min2 - @counter,
15877new.f_charbig = '####updated per insert trigger####';
15878SET @counter = @counter + 1;
15879END|
15880SET @counter = 1;
15881SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
15882Warnings:
15883Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
15884INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15885SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
15886CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
15887WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
15888ORDER BY f_int1;
15889DROP TRIGGER trg_3;
15890
15891# check trigger-11 success: 	1
15892Warnings:
15893Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
15894DELETE FROM t1
15895WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
15896AND f_int2 <> CAST(f_char1 AS SIGNED INT)
15897AND f_charbig = '####updated per insert trigger####';
15898CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
15899BEGIN
15900SET new.f_int1 = @my_max1 + @counter,
15901new.f_int2 = @my_min2 - @counter,
15902new.f_charbig = '####updated per insert trigger####';
15903SET @counter = @counter + 1;
15904END|
15905SET @counter = 1;
15906SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
15907Warnings:
15908Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
15909INSERT INTO t1 (f_char1, f_char2, f_charbig)
15910SELECT CAST(f_int1 AS CHAR),
15911CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
15912WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
15913ORDER BY f_int1;
15914DROP TRIGGER trg_3;
15915
15916# check trigger-12 success: 	1
15917Warnings:
15918Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
15919DELETE FROM t1
15920WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
15921AND f_int2 <> CAST(f_char1 AS SIGNED INT)
15922AND f_charbig = '####updated per insert trigger####';
15923ANALYZE  TABLE t1;
15924Table	Op	Msg_type	Msg_text
15925test.t1	analyze	status	OK
15926test.t1	analyze	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
15927CHECK    TABLE t1 EXTENDED;
15928Table	Op	Msg_type	Msg_text
15929test.t1	check	status	OK
15930test.t1	check	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
15931CHECKSUM TABLE t1 EXTENDED;
15932Table	Checksum
15933test.t1	<some_value>
15934OPTIMIZE TABLE t1;
15935Table	Op	Msg_type	Msg_text
15936test.t1	optimize	status	OK
15937test.t1	optimize	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
15938# check layout success:    1
15939REPAIR   TABLE t1 EXTENDED;
15940Table	Op	Msg_type	Msg_text
15941test.t1	repair	status	OK
15942test.t1	repair	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
15943# check layout success:    1
15944TRUNCATE t1;
15945Warnings:
15946Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
15947
15948# check TRUNCATE success: 	1
15949# check layout success:    1
15950# End usability test (inc/partition_check.inc)
15951DROP TABLE t1;
15952CREATE TABLE t1 (
15953f_int1 INTEGER,
15954f_int2 INTEGER,
15955f_char1 CHAR(20),
15956f_char2 CHAR(20),
15957f_charbig VARCHAR(1000)
15958
15959)
15960PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int2)
15961(PARTITION part1 VALUES LESS THAN (0)
15962(SUBPARTITION subpart11, SUBPARTITION subpart12),
15963PARTITION part2 VALUES LESS THAN (5)
15964(SUBPARTITION subpart21, SUBPARTITION subpart22),
15965PARTITION part3 VALUES LESS THAN (10)
15966(SUBPARTITION subpart31, SUBPARTITION subpart32),
15967PARTITION part4 VALUES LESS THAN (2147483646)
15968(SUBPARTITION subpart41, SUBPARTITION subpart42));
15969Warnings:
15970Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
15971INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15972SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
15973WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
15974Warnings:
15975Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
15976ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
15977Warnings:
15978Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
15979INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15980SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
15981WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
15982Warnings:
15983Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
15984# Start usability test (inc/partition_check.inc)
15985create_command
15986SHOW CREATE TABLE t1;
15987Table	Create Table
15988t1	CREATE TABLE `t1` (
15989  `f_int1` mediumint(9) DEFAULT NULL,
15990  `f_int2` mediumint(9) DEFAULT NULL,
15991  `f_char1` char(20) DEFAULT NULL,
15992  `f_char2` char(20) DEFAULT NULL,
15993  `f_charbig` varchar(1000) DEFAULT NULL
15994) ENGINE=MyISAM DEFAULT CHARSET=latin1
15995/*!50100 PARTITION BY RANGE (f_int1)
15996SUBPARTITION BY KEY (f_int2)
15997(PARTITION part1 VALUES LESS THAN (0)
15998 (SUBPARTITION subpart11 ENGINE = MyISAM,
15999  SUBPARTITION subpart12 ENGINE = MyISAM),
16000 PARTITION part2 VALUES LESS THAN (5)
16001 (SUBPARTITION subpart21 ENGINE = MyISAM,
16002  SUBPARTITION subpart22 ENGINE = MyISAM),
16003 PARTITION part3 VALUES LESS THAN (10)
16004 (SUBPARTITION subpart31 ENGINE = MyISAM,
16005  SUBPARTITION subpart32 ENGINE = MyISAM),
16006 PARTITION part4 VALUES LESS THAN (2147483646)
16007 (SUBPARTITION subpart41 ENGINE = MyISAM,
16008  SUBPARTITION subpart42 ENGINE = MyISAM)) */
16009
16010unified filelist
16011t1#P#part1#SP#subpart11.MYD
16012t1#P#part1#SP#subpart11.MYI
16013t1#P#part1#SP#subpart12.MYD
16014t1#P#part1#SP#subpart12.MYI
16015t1#P#part2#SP#subpart21.MYD
16016t1#P#part2#SP#subpart21.MYI
16017t1#P#part2#SP#subpart22.MYD
16018t1#P#part2#SP#subpart22.MYI
16019t1#P#part3#SP#subpart31.MYD
16020t1#P#part3#SP#subpart31.MYI
16021t1#P#part3#SP#subpart32.MYD
16022t1#P#part3#SP#subpart32.MYI
16023t1#P#part4#SP#subpart41.MYD
16024t1#P#part4#SP#subpart41.MYI
16025t1#P#part4#SP#subpart42.MYD
16026t1#P#part4#SP#subpart42.MYI
16027t1.frm
16028t1.par
16029
16030# check prerequisites-1 success:    1
16031# check COUNT(*) success:    1
16032# check MIN/MAX(f_int1) success:    1
16033# check MIN/MAX(f_int2) success:    1
16034INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16035SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
16036CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
16037WHERE f_int1 IN (2,3);
16038# check prerequisites-3 success:    1
16039DELETE FROM t1 WHERE f_charbig = 'delete me';
16040# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
16041# check read via f_int1 success: 1
16042# check read via f_int2 success: 1
16043
16044# check multiple-1 success: 	1
16045DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
16046
16047# check multiple-2 success: 	1
16048INSERT INTO t1 SELECT * FROM t0_template
16049WHERE MOD(f_int1,3) = 0;
16050
16051# check multiple-3 success: 	1
16052UPDATE t1 SET f_int1 = f_int1 + @max_row
16053WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
16054AND @max_row_div2 + @max_row_div4;
16055
16056# check multiple-4 success: 	1
16057DELETE FROM t1
16058WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
16059AND @max_row_div2 + @max_row_div4 + @max_row;
16060
16061# check multiple-5 success: 	1
16062SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
16063INSERT INTO t1
16064SET f_int1 = @cur_value , f_int2 = @cur_value,
16065f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
16066f_charbig = '#SINGLE#';
16067
16068# check single-1 success: 	1
16069SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
16070INSERT INTO t1
16071SET f_int1 = @cur_value , f_int2 = @cur_value,
16072f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
16073f_charbig = '#SINGLE#';
16074
16075# check single-2 success: 	1
16076SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
16077SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
16078UPDATE t1 SET f_int1 = @cur_value2
16079WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
16080
16081# check single-3 success: 	1
16082SET @cur_value1= -1;
16083SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
16084UPDATE t1 SET f_int1 = @cur_value1
16085WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
16086
16087# check single-4 success: 	1
16088SELECT MAX(f_int1) INTO @cur_value FROM t1;
16089DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
16090
16091# check single-5 success: 	1
16092DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
16093
16094# check single-6 success: 	1
16095INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
16096Warnings:
16097Warning	1264	Out of range value for column 'f_int1' at row 1
16098Warning	1264	Out of range value for column 'f_int2' at row 1
16099
16100# check single-7 success: 	1
16101DELETE FROM t1 WHERE f_charbig = '#2147483647##';
16102DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
16103INSERT t1 SET f_int1 = 0 , f_int2 = 0,
16104f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
16105f_charbig = '#NULL#';
16106INSERT INTO t1
16107SET f_int1 = NULL , f_int2 = -@max_row,
16108f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
16109f_charbig = '#NULL#';
16110# check null success:    1
16111
16112# check null-1 success: 	1
16113UPDATE t1 SET f_int1 = -@max_row
16114WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
16115AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
16116
16117# check null-2 success: 	1
16118UPDATE t1 SET f_int1 = NULL
16119WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
16120AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
16121
16122# check null-3 success: 	1
16123DELETE FROM t1
16124WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
16125AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
16126
16127# check null-4 success: 	1
16128DELETE FROM t1
16129WHERE f_int1 = 0 AND f_int2 = 0
16130AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
16131AND f_charbig = '#NULL#';
16132SET AUTOCOMMIT= 0;
16133INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16134SELECT f_int1, f_int1, '', '', 'was inserted'
16135FROM t0_template source_tab
16136WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
16137
16138# check transactions-1 success: 	1
16139COMMIT WORK;
16140
16141# check transactions-2 success: 	1
16142ROLLBACK WORK;
16143
16144# check transactions-3 success: 	1
16145DELETE FROM t1 WHERE f_charbig = 'was inserted';
16146COMMIT WORK;
16147ROLLBACK WORK;
16148
16149# check transactions-4 success: 	1
16150INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16151SELECT f_int1, f_int1, '', '', 'was inserted'
16152FROM t0_template source_tab
16153WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
16154
16155# check transactions-5 success: 	1
16156ROLLBACK WORK;
16157Warnings:
16158Warning	1196	Some non-transactional changed tables couldn't be rolled back
16159
16160# check transactions-6 success: 	1
16161# INFO: Storage engine used for t1 seems to be not transactional.
16162COMMIT;
16163
16164# check transactions-7 success: 	1
16165DELETE FROM t1 WHERE f_charbig = 'was inserted';
16166COMMIT WORK;
16167SET @@session.sql_mode = 'traditional';
16168Warnings:
16169Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
16170SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
16171INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16172SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
16173'', '', 'was inserted' FROM t0_template
16174WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
16175ERROR 22012: Division by 0
16176COMMIT;
16177
16178# check transactions-8 success: 	1
16179# INFO: Storage engine used for t1 seems to be unable to revert
16180#       changes made by the failing statement.
16181SET @@session.sql_mode = '';
16182Warnings:
16183Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
16184SET AUTOCOMMIT= 1;
16185DELETE FROM t1 WHERE f_charbig = 'was inserted';
16186COMMIT WORK;
16187UPDATE t1 SET f_charbig = REPEAT('b', 1000);
16188
16189# check special-1 success: 	1
16190UPDATE t1 SET f_charbig = '';
16191
16192# check special-2 success: 	1
16193UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
16194INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
16195SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
16196WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16197INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16198SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16199'just inserted' FROM t0_template
16200WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16201CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
16202BEGIN
16203UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16204f_charbig = 'updated by trigger'
16205      WHERE f_int1 = new.f_int1;
16206END|
16207INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16208SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
16209WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16210
16211# check trigger-1 success: 	1
16212DROP TRIGGER trg_1;
16213UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16214f_int2 = CAST(f_char1 AS SIGNED INT),
16215f_charbig = 'just inserted'
16216   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16217DELETE FROM t0_aux
16218WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16219INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16220SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16221'just inserted' FROM t0_template
16222WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16223CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
16224BEGIN
16225UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16226f_charbig = 'updated by trigger'
16227      WHERE f_int1 = new.f_int1;
16228END|
16229INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16230SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
16231WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16232
16233# check trigger-2 success: 	1
16234DROP TRIGGER trg_1;
16235UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16236f_int2 = CAST(f_char1 AS SIGNED INT),
16237f_charbig = 'just inserted'
16238   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16239DELETE FROM t0_aux
16240WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16241INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16242SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16243'just inserted' FROM t0_template
16244WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16245CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
16246BEGIN
16247UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16248f_charbig = 'updated by trigger'
16249      WHERE f_int1 = new.f_int1;
16250END|
16251UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
16252WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16253
16254# check trigger-3 success: 	1
16255DROP TRIGGER trg_1;
16256UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16257f_int2 = CAST(f_char1 AS SIGNED INT),
16258f_charbig = 'just inserted'
16259   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16260DELETE FROM t0_aux
16261WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16262INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16263SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16264'just inserted' FROM t0_template
16265WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16266CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
16267BEGIN
16268UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16269f_charbig = 'updated by trigger'
16270      WHERE f_int1 = - old.f_int1;
16271END|
16272UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
16273WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16274
16275# check trigger-4 success: 	1
16276DROP TRIGGER trg_1;
16277UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16278f_int2 = CAST(f_char1 AS SIGNED INT),
16279f_charbig = 'just inserted'
16280   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16281DELETE FROM t0_aux
16282WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16283INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16284SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16285'just inserted' FROM t0_template
16286WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16287CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
16288BEGIN
16289UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16290f_charbig = 'updated by trigger'
16291      WHERE f_int1 = new.f_int1;
16292END|
16293UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
16294WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16295
16296# check trigger-5 success: 	1
16297DROP TRIGGER trg_1;
16298UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16299f_int2 = CAST(f_char1 AS SIGNED INT),
16300f_charbig = 'just inserted'
16301   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16302DELETE FROM t0_aux
16303WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16304INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16305SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16306'just inserted' FROM t0_template
16307WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16308CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
16309BEGIN
16310UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16311f_charbig = 'updated by trigger'
16312      WHERE f_int1 = - old.f_int1;
16313END|
16314UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
16315WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16316
16317# check trigger-6 success: 	1
16318DROP TRIGGER trg_1;
16319UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16320f_int2 = CAST(f_char1 AS SIGNED INT),
16321f_charbig = 'just inserted'
16322   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16323DELETE FROM t0_aux
16324WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16325INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16326SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16327'just inserted' FROM t0_template
16328WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16329CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
16330BEGIN
16331UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16332f_charbig = 'updated by trigger'
16333      WHERE f_int1 = - old.f_int1;
16334END|
16335DELETE FROM t0_aux
16336WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16337
16338# check trigger-7 success: 	1
16339DROP TRIGGER trg_1;
16340UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16341f_int2 = CAST(f_char1 AS SIGNED INT),
16342f_charbig = 'just inserted'
16343   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16344DELETE FROM t0_aux
16345WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16346INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16347SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16348'just inserted' FROM t0_template
16349WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16350CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
16351BEGIN
16352UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16353f_charbig = 'updated by trigger'
16354      WHERE f_int1 = - old.f_int1;
16355END|
16356DELETE FROM t0_aux
16357WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16358
16359# check trigger-8 success: 	1
16360DROP TRIGGER trg_1;
16361UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16362f_int2 = CAST(f_char1 AS SIGNED INT),
16363f_charbig = 'just inserted'
16364   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16365DELETE FROM t0_aux
16366WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16367DELETE FROM t1
16368WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16369CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
16370BEGIN
16371SET new.f_int1 = old.f_int1 + @max_row,
16372new.f_int2 = old.f_int2 - @max_row,
16373new.f_charbig = '####updated per update trigger####';
16374END|
16375UPDATE t1
16376SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
16377f_charbig = '####updated per update statement itself####';
16378Warnings:
16379Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
16380
16381# check trigger-9 success: 	1
16382DROP TRIGGER trg_2;
16383UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16384f_int2 = CAST(f_char1 AS SIGNED INT),
16385f_charbig = CONCAT('===',f_char1,'===');
16386Warnings:
16387Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
16388CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
16389BEGIN
16390SET new.f_int1 = new.f_int1 + @max_row,
16391new.f_int2 = new.f_int2 - @max_row,
16392new.f_charbig = '####updated per update trigger####';
16393END|
16394UPDATE t1
16395SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
16396f_charbig = '####updated per update statement itself####';
16397Warnings:
16398Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
16399
16400# check trigger-10 success: 	1
16401DROP TRIGGER trg_2;
16402UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16403f_int2 = CAST(f_char1 AS SIGNED INT),
16404f_charbig = CONCAT('===',f_char1,'===');
16405Warnings:
16406Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
16407CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
16408BEGIN
16409SET new.f_int1 = @my_max1 + @counter,
16410new.f_int2 = @my_min2 - @counter,
16411new.f_charbig = '####updated per insert trigger####';
16412SET @counter = @counter + 1;
16413END|
16414SET @counter = 1;
16415SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
16416Warnings:
16417Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
16418INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16419SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
16420CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
16421WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
16422ORDER BY f_int1;
16423DROP TRIGGER trg_3;
16424
16425# check trigger-11 success: 	1
16426Warnings:
16427Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
16428DELETE FROM t1
16429WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
16430AND f_int2 <> CAST(f_char1 AS SIGNED INT)
16431AND f_charbig = '####updated per insert trigger####';
16432CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
16433BEGIN
16434SET new.f_int1 = @my_max1 + @counter,
16435new.f_int2 = @my_min2 - @counter,
16436new.f_charbig = '####updated per insert trigger####';
16437SET @counter = @counter + 1;
16438END|
16439SET @counter = 1;
16440SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
16441Warnings:
16442Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
16443INSERT INTO t1 (f_char1, f_char2, f_charbig)
16444SELECT CAST(f_int1 AS CHAR),
16445CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
16446WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
16447ORDER BY f_int1;
16448DROP TRIGGER trg_3;
16449
16450# check trigger-12 success: 	1
16451Warnings:
16452Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
16453DELETE FROM t1
16454WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
16455AND f_int2 <> CAST(f_char1 AS SIGNED INT)
16456AND f_charbig = '####updated per insert trigger####';
16457ANALYZE  TABLE t1;
16458Table	Op	Msg_type	Msg_text
16459test.t1	analyze	status	OK
16460test.t1	analyze	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
16461CHECK    TABLE t1 EXTENDED;
16462Table	Op	Msg_type	Msg_text
16463test.t1	check	status	OK
16464test.t1	check	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
16465CHECKSUM TABLE t1 EXTENDED;
16466Table	Checksum
16467test.t1	<some_value>
16468OPTIMIZE TABLE t1;
16469Table	Op	Msg_type	Msg_text
16470test.t1	optimize	status	OK
16471test.t1	optimize	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
16472# check layout success:    1
16473REPAIR   TABLE t1 EXTENDED;
16474Table	Op	Msg_type	Msg_text
16475test.t1	repair	status	OK
16476test.t1	repair	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
16477# check layout success:    1
16478TRUNCATE t1;
16479Warnings:
16480Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
16481
16482# check TRUNCATE success: 	1
16483# check layout success:    1
16484# End usability test (inc/partition_check.inc)
16485DROP TABLE t1;
16486CREATE TABLE t1 (
16487f_int1 INTEGER,
16488f_int2 INTEGER,
16489f_char1 CHAR(20),
16490f_char2 CHAR(20),
16491f_charbig VARCHAR(1000)
16492
16493)
16494PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int2 + 1)
16495(PARTITION part1 VALUES IN (0)
16496(SUBPARTITION sp11, SUBPARTITION sp12),
16497PARTITION part2 VALUES IN (1)
16498(SUBPARTITION sp21, SUBPARTITION sp22),
16499PARTITION part3 VALUES IN (2)
16500(SUBPARTITION sp31, SUBPARTITION sp32),
16501PARTITION part4 VALUES IN (NULL)
16502(SUBPARTITION sp41, SUBPARTITION sp42));
16503Warnings:
16504Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
16505INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
16506SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
16507WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
16508Warnings:
16509Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
16510ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
16511Warnings:
16512Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
16513INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
16514SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
16515WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
16516Warnings:
16517Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
16518# Start usability test (inc/partition_check.inc)
16519create_command
16520SHOW CREATE TABLE t1;
16521Table	Create Table
16522t1	CREATE TABLE `t1` (
16523  `f_int1` mediumint(9) DEFAULT NULL,
16524  `f_int2` mediumint(9) DEFAULT NULL,
16525  `f_char1` char(20) DEFAULT NULL,
16526  `f_char2` char(20) DEFAULT NULL,
16527  `f_charbig` varchar(1000) DEFAULT NULL
16528) ENGINE=MyISAM DEFAULT CHARSET=latin1
16529/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
16530SUBPARTITION BY HASH (f_int2 + 1)
16531(PARTITION part1 VALUES IN (0)
16532 (SUBPARTITION sp11 ENGINE = MyISAM,
16533  SUBPARTITION sp12 ENGINE = MyISAM),
16534 PARTITION part2 VALUES IN (1)
16535 (SUBPARTITION sp21 ENGINE = MyISAM,
16536  SUBPARTITION sp22 ENGINE = MyISAM),
16537 PARTITION part3 VALUES IN (2)
16538 (SUBPARTITION sp31 ENGINE = MyISAM,
16539  SUBPARTITION sp32 ENGINE = MyISAM),
16540 PARTITION part4 VALUES IN (NULL)
16541 (SUBPARTITION sp41 ENGINE = MyISAM,
16542  SUBPARTITION sp42 ENGINE = MyISAM)) */
16543
16544unified filelist
16545t1#P#part1#SP#sp11.MYD
16546t1#P#part1#SP#sp11.MYI
16547t1#P#part1#SP#sp12.MYD
16548t1#P#part1#SP#sp12.MYI
16549t1#P#part2#SP#sp21.MYD
16550t1#P#part2#SP#sp21.MYI
16551t1#P#part2#SP#sp22.MYD
16552t1#P#part2#SP#sp22.MYI
16553t1#P#part3#SP#sp31.MYD
16554t1#P#part3#SP#sp31.MYI
16555t1#P#part3#SP#sp32.MYD
16556t1#P#part3#SP#sp32.MYI
16557t1#P#part4#SP#sp41.MYD
16558t1#P#part4#SP#sp41.MYI
16559t1#P#part4#SP#sp42.MYD
16560t1#P#part4#SP#sp42.MYI
16561t1.frm
16562t1.par
16563
16564# check prerequisites-1 success:    1
16565# check COUNT(*) success:    1
16566# check MIN/MAX(f_int1) success:    1
16567# check MIN/MAX(f_int2) success:    1
16568INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16569SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
16570CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
16571WHERE f_int1 IN (2,3);
16572# check prerequisites-3 success:    1
16573DELETE FROM t1 WHERE f_charbig = 'delete me';
16574# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
16575# check read via f_int1 success: 1
16576# check read via f_int2 success: 1
16577
16578# check multiple-1 success: 	1
16579DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
16580
16581# check multiple-2 success: 	1
16582INSERT INTO t1 SELECT * FROM t0_template
16583WHERE MOD(f_int1,3) = 0;
16584
16585# check multiple-3 success: 	1
16586UPDATE t1 SET f_int1 = f_int1 + @max_row
16587WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
16588AND @max_row_div2 + @max_row_div4;
16589
16590# check multiple-4 success: 	1
16591DELETE FROM t1
16592WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
16593AND @max_row_div2 + @max_row_div4 + @max_row;
16594
16595# check multiple-5 success: 	1
16596SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
16597INSERT INTO t1
16598SET f_int1 = @cur_value , f_int2 = @cur_value,
16599f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
16600f_charbig = '#SINGLE#';
16601
16602# check single-1 success: 	1
16603SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
16604INSERT INTO t1
16605SET f_int1 = @cur_value , f_int2 = @cur_value,
16606f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
16607f_charbig = '#SINGLE#';
16608
16609# check single-2 success: 	1
16610SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
16611SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
16612UPDATE t1 SET f_int1 = @cur_value2
16613WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
16614
16615# check single-3 success: 	1
16616SET @cur_value1= -1;
16617SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
16618UPDATE t1 SET f_int1 = @cur_value1
16619WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
16620
16621# check single-4 success: 	1
16622SELECT MAX(f_int1) INTO @cur_value FROM t1;
16623DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
16624
16625# check single-5 success: 	1
16626DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
16627
16628# check single-6 success: 	1
16629INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
16630Warnings:
16631Warning	1264	Out of range value for column 'f_int1' at row 1
16632Warning	1264	Out of range value for column 'f_int2' at row 1
16633
16634# check single-7 success: 	1
16635DELETE FROM t1 WHERE f_charbig = '#2147483647##';
16636DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
16637INSERT t1 SET f_int1 = 0 , f_int2 = 0,
16638f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
16639f_charbig = '#NULL#';
16640INSERT INTO t1
16641SET f_int1 = NULL , f_int2 = -@max_row,
16642f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
16643f_charbig = '#NULL#';
16644# check null success:    1
16645
16646# check null-1 success: 	1
16647UPDATE t1 SET f_int1 = -@max_row
16648WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
16649AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
16650
16651# check null-2 success: 	1
16652UPDATE t1 SET f_int1 = NULL
16653WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
16654AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
16655
16656# check null-3 success: 	1
16657DELETE FROM t1
16658WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
16659AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
16660
16661# check null-4 success: 	1
16662DELETE FROM t1
16663WHERE f_int1 = 0 AND f_int2 = 0
16664AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
16665AND f_charbig = '#NULL#';
16666SET AUTOCOMMIT= 0;
16667INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16668SELECT f_int1, f_int1, '', '', 'was inserted'
16669FROM t0_template source_tab
16670WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
16671
16672# check transactions-1 success: 	1
16673COMMIT WORK;
16674
16675# check transactions-2 success: 	1
16676ROLLBACK WORK;
16677
16678# check transactions-3 success: 	1
16679DELETE FROM t1 WHERE f_charbig = 'was inserted';
16680COMMIT WORK;
16681ROLLBACK WORK;
16682
16683# check transactions-4 success: 	1
16684INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16685SELECT f_int1, f_int1, '', '', 'was inserted'
16686FROM t0_template source_tab
16687WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
16688
16689# check transactions-5 success: 	1
16690ROLLBACK WORK;
16691Warnings:
16692Warning	1196	Some non-transactional changed tables couldn't be rolled back
16693
16694# check transactions-6 success: 	1
16695# INFO: Storage engine used for t1 seems to be not transactional.
16696COMMIT;
16697
16698# check transactions-7 success: 	1
16699DELETE FROM t1 WHERE f_charbig = 'was inserted';
16700COMMIT WORK;
16701SET @@session.sql_mode = 'traditional';
16702Warnings:
16703Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
16704SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
16705INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16706SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
16707'', '', 'was inserted' FROM t0_template
16708WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
16709ERROR 22012: Division by 0
16710COMMIT;
16711
16712# check transactions-8 success: 	1
16713# INFO: Storage engine used for t1 seems to be unable to revert
16714#       changes made by the failing statement.
16715SET @@session.sql_mode = '';
16716Warnings:
16717Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
16718SET AUTOCOMMIT= 1;
16719DELETE FROM t1 WHERE f_charbig = 'was inserted';
16720COMMIT WORK;
16721UPDATE t1 SET f_charbig = REPEAT('b', 1000);
16722
16723# check special-1 success: 	1
16724UPDATE t1 SET f_charbig = '';
16725
16726# check special-2 success: 	1
16727UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
16728INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
16729SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
16730WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16731INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16732SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16733'just inserted' FROM t0_template
16734WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16735CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
16736BEGIN
16737UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16738f_charbig = 'updated by trigger'
16739      WHERE f_int1 = new.f_int1;
16740END|
16741INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16742SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
16743WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16744
16745# check trigger-1 success: 	1
16746DROP TRIGGER trg_1;
16747UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16748f_int2 = CAST(f_char1 AS SIGNED INT),
16749f_charbig = 'just inserted'
16750   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16751DELETE FROM t0_aux
16752WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16753INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16754SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16755'just inserted' FROM t0_template
16756WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16757CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
16758BEGIN
16759UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16760f_charbig = 'updated by trigger'
16761      WHERE f_int1 = new.f_int1;
16762END|
16763INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16764SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
16765WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16766
16767# check trigger-2 success: 	1
16768DROP TRIGGER trg_1;
16769UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16770f_int2 = CAST(f_char1 AS SIGNED INT),
16771f_charbig = 'just inserted'
16772   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16773DELETE FROM t0_aux
16774WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16775INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16776SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16777'just inserted' FROM t0_template
16778WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16779CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
16780BEGIN
16781UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16782f_charbig = 'updated by trigger'
16783      WHERE f_int1 = new.f_int1;
16784END|
16785UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
16786WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16787
16788# check trigger-3 success: 	1
16789DROP TRIGGER trg_1;
16790UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16791f_int2 = CAST(f_char1 AS SIGNED INT),
16792f_charbig = 'just inserted'
16793   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16794DELETE FROM t0_aux
16795WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16796INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16797SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16798'just inserted' FROM t0_template
16799WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16800CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
16801BEGIN
16802UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16803f_charbig = 'updated by trigger'
16804      WHERE f_int1 = - old.f_int1;
16805END|
16806UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
16807WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16808
16809# check trigger-4 success: 	1
16810DROP TRIGGER trg_1;
16811UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16812f_int2 = CAST(f_char1 AS SIGNED INT),
16813f_charbig = 'just inserted'
16814   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16815DELETE FROM t0_aux
16816WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16817INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16818SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16819'just inserted' FROM t0_template
16820WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16821CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
16822BEGIN
16823UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16824f_charbig = 'updated by trigger'
16825      WHERE f_int1 = new.f_int1;
16826END|
16827UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
16828WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16829
16830# check trigger-5 success: 	1
16831DROP TRIGGER trg_1;
16832UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16833f_int2 = CAST(f_char1 AS SIGNED INT),
16834f_charbig = 'just inserted'
16835   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16836DELETE FROM t0_aux
16837WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16838INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16839SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16840'just inserted' FROM t0_template
16841WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16842CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
16843BEGIN
16844UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16845f_charbig = 'updated by trigger'
16846      WHERE f_int1 = - old.f_int1;
16847END|
16848UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
16849WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16850
16851# check trigger-6 success: 	1
16852DROP TRIGGER trg_1;
16853UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16854f_int2 = CAST(f_char1 AS SIGNED INT),
16855f_charbig = 'just inserted'
16856   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16857DELETE FROM t0_aux
16858WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16859INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16860SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16861'just inserted' FROM t0_template
16862WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16863CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
16864BEGIN
16865UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16866f_charbig = 'updated by trigger'
16867      WHERE f_int1 = - old.f_int1;
16868END|
16869DELETE FROM t0_aux
16870WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16871
16872# check trigger-7 success: 	1
16873DROP TRIGGER trg_1;
16874UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16875f_int2 = CAST(f_char1 AS SIGNED INT),
16876f_charbig = 'just inserted'
16877   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16878DELETE FROM t0_aux
16879WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16880INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16881SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16882'just inserted' FROM t0_template
16883WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16884CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
16885BEGIN
16886UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16887f_charbig = 'updated by trigger'
16888      WHERE f_int1 = - old.f_int1;
16889END|
16890DELETE FROM t0_aux
16891WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16892
16893# check trigger-8 success: 	1
16894DROP TRIGGER trg_1;
16895UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16896f_int2 = CAST(f_char1 AS SIGNED INT),
16897f_charbig = 'just inserted'
16898   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16899DELETE FROM t0_aux
16900WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16901DELETE FROM t1
16902WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16903CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
16904BEGIN
16905SET new.f_int1 = old.f_int1 + @max_row,
16906new.f_int2 = old.f_int2 - @max_row,
16907new.f_charbig = '####updated per update trigger####';
16908END|
16909UPDATE t1
16910SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
16911f_charbig = '####updated per update statement itself####';
16912Warnings:
16913Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
16914
16915# check trigger-9 success: 	1
16916DROP TRIGGER trg_2;
16917UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16918f_int2 = CAST(f_char1 AS SIGNED INT),
16919f_charbig = CONCAT('===',f_char1,'===');
16920Warnings:
16921Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
16922CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
16923BEGIN
16924SET new.f_int1 = new.f_int1 + @max_row,
16925new.f_int2 = new.f_int2 - @max_row,
16926new.f_charbig = '####updated per update trigger####';
16927END|
16928UPDATE t1
16929SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
16930f_charbig = '####updated per update statement itself####';
16931Warnings:
16932Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
16933
16934# check trigger-10 success: 	1
16935DROP TRIGGER trg_2;
16936UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16937f_int2 = CAST(f_char1 AS SIGNED INT),
16938f_charbig = CONCAT('===',f_char1,'===');
16939Warnings:
16940Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
16941CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
16942BEGIN
16943SET new.f_int1 = @my_max1 + @counter,
16944new.f_int2 = @my_min2 - @counter,
16945new.f_charbig = '####updated per insert trigger####';
16946SET @counter = @counter + 1;
16947END|
16948SET @counter = 1;
16949SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
16950Warnings:
16951Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
16952INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16953SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
16954CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
16955WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
16956ORDER BY f_int1;
16957DROP TRIGGER trg_3;
16958
16959# check trigger-11 success: 	1
16960Warnings:
16961Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
16962DELETE FROM t1
16963WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
16964AND f_int2 <> CAST(f_char1 AS SIGNED INT)
16965AND f_charbig = '####updated per insert trigger####';
16966CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
16967BEGIN
16968SET new.f_int1 = @my_max1 + @counter,
16969new.f_int2 = @my_min2 - @counter,
16970new.f_charbig = '####updated per insert trigger####';
16971SET @counter = @counter + 1;
16972END|
16973SET @counter = 1;
16974SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
16975Warnings:
16976Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
16977INSERT INTO t1 (f_char1, f_char2, f_charbig)
16978SELECT CAST(f_int1 AS CHAR),
16979CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
16980WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
16981ORDER BY f_int1;
16982DROP TRIGGER trg_3;
16983
16984# check trigger-12 success: 	1
16985Warnings:
16986Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
16987DELETE FROM t1
16988WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
16989AND f_int2 <> CAST(f_char1 AS SIGNED INT)
16990AND f_charbig = '####updated per insert trigger####';
16991ANALYZE  TABLE t1;
16992Table	Op	Msg_type	Msg_text
16993test.t1	analyze	status	OK
16994test.t1	analyze	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
16995CHECK    TABLE t1 EXTENDED;
16996Table	Op	Msg_type	Msg_text
16997test.t1	check	status	OK
16998test.t1	check	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
16999CHECKSUM TABLE t1 EXTENDED;
17000Table	Checksum
17001test.t1	<some_value>
17002OPTIMIZE TABLE t1;
17003Table	Op	Msg_type	Msg_text
17004test.t1	optimize	status	OK
17005test.t1	optimize	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
17006# check layout success:    1
17007REPAIR   TABLE t1 EXTENDED;
17008Table	Op	Msg_type	Msg_text
17009test.t1	repair	status	OK
17010test.t1	repair	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
17011# check layout success:    1
17012TRUNCATE t1;
17013Warnings:
17014Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
17015
17016# check TRUNCATE success: 	1
17017# check layout success:    1
17018# End usability test (inc/partition_check.inc)
17019DROP TABLE t1;
17020CREATE TABLE t1 (
17021f_int1 INTEGER,
17022f_int2 INTEGER,
17023f_char1 CHAR(20),
17024f_char2 CHAR(20),
17025f_charbig VARCHAR(1000)
17026
17027)
17028PARTITION BY LIST(ABS(MOD(f_int1,2)))
17029SUBPARTITION BY KEY(f_int2)  SUBPARTITIONS 3
17030(PARTITION part1 VALUES IN (0),
17031PARTITION part2 VALUES IN (1),
17032PARTITION part3 VALUES IN (NULL));
17033Warnings:
17034Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
17035INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
17036SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
17037WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
17038Warnings:
17039Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
17040ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
17041Warnings:
17042Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
17043INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
17044SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
17045WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
17046Warnings:
17047Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
17048# Start usability test (inc/partition_check.inc)
17049create_command
17050SHOW CREATE TABLE t1;
17051Table	Create Table
17052t1	CREATE TABLE `t1` (
17053  `f_int1` mediumint(9) DEFAULT NULL,
17054  `f_int2` mediumint(9) DEFAULT NULL,
17055  `f_char1` char(20) DEFAULT NULL,
17056  `f_char2` char(20) DEFAULT NULL,
17057  `f_charbig` varchar(1000) DEFAULT NULL
17058) ENGINE=MyISAM DEFAULT CHARSET=latin1
17059/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
17060SUBPARTITION BY KEY (f_int2)
17061SUBPARTITIONS 3
17062(PARTITION part1 VALUES IN (0) ENGINE = MyISAM,
17063 PARTITION part2 VALUES IN (1) ENGINE = MyISAM,
17064 PARTITION part3 VALUES IN (NULL) ENGINE = MyISAM) */
17065
17066unified filelist
17067t1#P#part1#SP#part1sp0.MYD
17068t1#P#part1#SP#part1sp0.MYI
17069t1#P#part1#SP#part1sp1.MYD
17070t1#P#part1#SP#part1sp1.MYI
17071t1#P#part1#SP#part1sp2.MYD
17072t1#P#part1#SP#part1sp2.MYI
17073t1#P#part2#SP#part2sp0.MYD
17074t1#P#part2#SP#part2sp0.MYI
17075t1#P#part2#SP#part2sp1.MYD
17076t1#P#part2#SP#part2sp1.MYI
17077t1#P#part2#SP#part2sp2.MYD
17078t1#P#part2#SP#part2sp2.MYI
17079t1#P#part3#SP#part3sp0.MYD
17080t1#P#part3#SP#part3sp0.MYI
17081t1#P#part3#SP#part3sp1.MYD
17082t1#P#part3#SP#part3sp1.MYI
17083t1#P#part3#SP#part3sp2.MYD
17084t1#P#part3#SP#part3sp2.MYI
17085t1.frm
17086t1.par
17087
17088# check prerequisites-1 success:    1
17089# check COUNT(*) success:    1
17090# check MIN/MAX(f_int1) success:    1
17091# check MIN/MAX(f_int2) success:    1
17092INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17093SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
17094CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
17095WHERE f_int1 IN (2,3);
17096# check prerequisites-3 success:    1
17097DELETE FROM t1 WHERE f_charbig = 'delete me';
17098# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
17099# check read via f_int1 success: 1
17100# check read via f_int2 success: 1
17101
17102# check multiple-1 success: 	1
17103DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
17104
17105# check multiple-2 success: 	1
17106INSERT INTO t1 SELECT * FROM t0_template
17107WHERE MOD(f_int1,3) = 0;
17108
17109# check multiple-3 success: 	1
17110UPDATE t1 SET f_int1 = f_int1 + @max_row
17111WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
17112AND @max_row_div2 + @max_row_div4;
17113
17114# check multiple-4 success: 	1
17115DELETE FROM t1
17116WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
17117AND @max_row_div2 + @max_row_div4 + @max_row;
17118
17119# check multiple-5 success: 	1
17120SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
17121INSERT INTO t1
17122SET f_int1 = @cur_value , f_int2 = @cur_value,
17123f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
17124f_charbig = '#SINGLE#';
17125
17126# check single-1 success: 	1
17127SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
17128INSERT INTO t1
17129SET f_int1 = @cur_value , f_int2 = @cur_value,
17130f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
17131f_charbig = '#SINGLE#';
17132
17133# check single-2 success: 	1
17134SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
17135SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
17136UPDATE t1 SET f_int1 = @cur_value2
17137WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
17138
17139# check single-3 success: 	1
17140SET @cur_value1= -1;
17141SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
17142UPDATE t1 SET f_int1 = @cur_value1
17143WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
17144
17145# check single-4 success: 	1
17146SELECT MAX(f_int1) INTO @cur_value FROM t1;
17147DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
17148
17149# check single-5 success: 	1
17150DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
17151
17152# check single-6 success: 	1
17153INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
17154Warnings:
17155Warning	1264	Out of range value for column 'f_int1' at row 1
17156Warning	1264	Out of range value for column 'f_int2' at row 1
17157
17158# check single-7 success: 	1
17159DELETE FROM t1 WHERE f_charbig = '#2147483647##';
17160DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
17161INSERT t1 SET f_int1 = 0 , f_int2 = 0,
17162f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
17163f_charbig = '#NULL#';
17164INSERT INTO t1
17165SET f_int1 = NULL , f_int2 = -@max_row,
17166f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
17167f_charbig = '#NULL#';
17168# check null success:    1
17169
17170# check null-1 success: 	1
17171UPDATE t1 SET f_int1 = -@max_row
17172WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
17173AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
17174
17175# check null-2 success: 	1
17176UPDATE t1 SET f_int1 = NULL
17177WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
17178AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
17179
17180# check null-3 success: 	1
17181DELETE FROM t1
17182WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
17183AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
17184
17185# check null-4 success: 	1
17186DELETE FROM t1
17187WHERE f_int1 = 0 AND f_int2 = 0
17188AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
17189AND f_charbig = '#NULL#';
17190SET AUTOCOMMIT= 0;
17191INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17192SELECT f_int1, f_int1, '', '', 'was inserted'
17193FROM t0_template source_tab
17194WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
17195
17196# check transactions-1 success: 	1
17197COMMIT WORK;
17198
17199# check transactions-2 success: 	1
17200ROLLBACK WORK;
17201
17202# check transactions-3 success: 	1
17203DELETE FROM t1 WHERE f_charbig = 'was inserted';
17204COMMIT WORK;
17205ROLLBACK WORK;
17206
17207# check transactions-4 success: 	1
17208INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17209SELECT f_int1, f_int1, '', '', 'was inserted'
17210FROM t0_template source_tab
17211WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
17212
17213# check transactions-5 success: 	1
17214ROLLBACK WORK;
17215Warnings:
17216Warning	1196	Some non-transactional changed tables couldn't be rolled back
17217
17218# check transactions-6 success: 	1
17219# INFO: Storage engine used for t1 seems to be not transactional.
17220COMMIT;
17221
17222# check transactions-7 success: 	1
17223DELETE FROM t1 WHERE f_charbig = 'was inserted';
17224COMMIT WORK;
17225SET @@session.sql_mode = 'traditional';
17226Warnings:
17227Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
17228SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
17229INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17230SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
17231'', '', 'was inserted' FROM t0_template
17232WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
17233ERROR 22012: Division by 0
17234COMMIT;
17235
17236# check transactions-8 success: 	1
17237# INFO: Storage engine used for t1 seems to be unable to revert
17238#       changes made by the failing statement.
17239SET @@session.sql_mode = '';
17240Warnings:
17241Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
17242SET AUTOCOMMIT= 1;
17243DELETE FROM t1 WHERE f_charbig = 'was inserted';
17244COMMIT WORK;
17245UPDATE t1 SET f_charbig = REPEAT('b', 1000);
17246
17247# check special-1 success: 	1
17248UPDATE t1 SET f_charbig = '';
17249
17250# check special-2 success: 	1
17251UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
17252INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
17253SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
17254WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17255INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17256SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17257'just inserted' FROM t0_template
17258WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17259CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
17260BEGIN
17261UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17262f_charbig = 'updated by trigger'
17263      WHERE f_int1 = new.f_int1;
17264END|
17265INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17266SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
17267WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17268
17269# check trigger-1 success: 	1
17270DROP TRIGGER trg_1;
17271UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17272f_int2 = CAST(f_char1 AS SIGNED INT),
17273f_charbig = 'just inserted'
17274   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17275DELETE FROM t0_aux
17276WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17277INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17278SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17279'just inserted' FROM t0_template
17280WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17281CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
17282BEGIN
17283UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17284f_charbig = 'updated by trigger'
17285      WHERE f_int1 = new.f_int1;
17286END|
17287INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17288SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
17289WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17290
17291# check trigger-2 success: 	1
17292DROP TRIGGER trg_1;
17293UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17294f_int2 = CAST(f_char1 AS SIGNED INT),
17295f_charbig = 'just inserted'
17296   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17297DELETE FROM t0_aux
17298WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17299INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17300SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17301'just inserted' FROM t0_template
17302WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17303CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
17304BEGIN
17305UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17306f_charbig = 'updated by trigger'
17307      WHERE f_int1 = new.f_int1;
17308END|
17309UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
17310WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17311
17312# check trigger-3 success: 	1
17313DROP TRIGGER trg_1;
17314UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17315f_int2 = CAST(f_char1 AS SIGNED INT),
17316f_charbig = 'just inserted'
17317   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17318DELETE FROM t0_aux
17319WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17320INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17321SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17322'just inserted' FROM t0_template
17323WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17324CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
17325BEGIN
17326UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17327f_charbig = 'updated by trigger'
17328      WHERE f_int1 = - old.f_int1;
17329END|
17330UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
17331WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17332
17333# check trigger-4 success: 	1
17334DROP TRIGGER trg_1;
17335UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17336f_int2 = CAST(f_char1 AS SIGNED INT),
17337f_charbig = 'just inserted'
17338   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17339DELETE FROM t0_aux
17340WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17341INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17342SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17343'just inserted' FROM t0_template
17344WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17345CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
17346BEGIN
17347UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17348f_charbig = 'updated by trigger'
17349      WHERE f_int1 = new.f_int1;
17350END|
17351UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
17352WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17353
17354# check trigger-5 success: 	1
17355DROP TRIGGER trg_1;
17356UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17357f_int2 = CAST(f_char1 AS SIGNED INT),
17358f_charbig = 'just inserted'
17359   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17360DELETE FROM t0_aux
17361WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17362INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17363SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17364'just inserted' FROM t0_template
17365WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17366CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
17367BEGIN
17368UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17369f_charbig = 'updated by trigger'
17370      WHERE f_int1 = - old.f_int1;
17371END|
17372UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
17373WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17374
17375# check trigger-6 success: 	1
17376DROP TRIGGER trg_1;
17377UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17378f_int2 = CAST(f_char1 AS SIGNED INT),
17379f_charbig = 'just inserted'
17380   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17381DELETE FROM t0_aux
17382WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17383INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17384SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17385'just inserted' FROM t0_template
17386WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17387CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
17388BEGIN
17389UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17390f_charbig = 'updated by trigger'
17391      WHERE f_int1 = - old.f_int1;
17392END|
17393DELETE FROM t0_aux
17394WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17395
17396# check trigger-7 success: 	1
17397DROP TRIGGER trg_1;
17398UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17399f_int2 = CAST(f_char1 AS SIGNED INT),
17400f_charbig = 'just inserted'
17401   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17402DELETE FROM t0_aux
17403WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17404INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17405SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17406'just inserted' FROM t0_template
17407WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17408CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
17409BEGIN
17410UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17411f_charbig = 'updated by trigger'
17412      WHERE f_int1 = - old.f_int1;
17413END|
17414DELETE FROM t0_aux
17415WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17416
17417# check trigger-8 success: 	1
17418DROP TRIGGER trg_1;
17419UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17420f_int2 = CAST(f_char1 AS SIGNED INT),
17421f_charbig = 'just inserted'
17422   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17423DELETE FROM t0_aux
17424WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17425DELETE FROM t1
17426WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17427CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
17428BEGIN
17429SET new.f_int1 = old.f_int1 + @max_row,
17430new.f_int2 = old.f_int2 - @max_row,
17431new.f_charbig = '####updated per update trigger####';
17432END|
17433UPDATE t1
17434SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
17435f_charbig = '####updated per update statement itself####';
17436Warnings:
17437Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
17438
17439# check trigger-9 success: 	1
17440DROP TRIGGER trg_2;
17441UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17442f_int2 = CAST(f_char1 AS SIGNED INT),
17443f_charbig = CONCAT('===',f_char1,'===');
17444Warnings:
17445Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
17446CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
17447BEGIN
17448SET new.f_int1 = new.f_int1 + @max_row,
17449new.f_int2 = new.f_int2 - @max_row,
17450new.f_charbig = '####updated per update trigger####';
17451END|
17452UPDATE t1
17453SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
17454f_charbig = '####updated per update statement itself####';
17455Warnings:
17456Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
17457
17458# check trigger-10 success: 	1
17459DROP TRIGGER trg_2;
17460UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17461f_int2 = CAST(f_char1 AS SIGNED INT),
17462f_charbig = CONCAT('===',f_char1,'===');
17463Warnings:
17464Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
17465CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
17466BEGIN
17467SET new.f_int1 = @my_max1 + @counter,
17468new.f_int2 = @my_min2 - @counter,
17469new.f_charbig = '####updated per insert trigger####';
17470SET @counter = @counter + 1;
17471END|
17472SET @counter = 1;
17473SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
17474Warnings:
17475Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
17476INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17477SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
17478CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
17479WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
17480ORDER BY f_int1;
17481DROP TRIGGER trg_3;
17482
17483# check trigger-11 success: 	1
17484Warnings:
17485Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
17486DELETE FROM t1
17487WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
17488AND f_int2 <> CAST(f_char1 AS SIGNED INT)
17489AND f_charbig = '####updated per insert trigger####';
17490CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
17491BEGIN
17492SET new.f_int1 = @my_max1 + @counter,
17493new.f_int2 = @my_min2 - @counter,
17494new.f_charbig = '####updated per insert trigger####';
17495SET @counter = @counter + 1;
17496END|
17497SET @counter = 1;
17498SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
17499Warnings:
17500Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
17501INSERT INTO t1 (f_char1, f_char2, f_charbig)
17502SELECT CAST(f_int1 AS CHAR),
17503CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
17504WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
17505ORDER BY f_int1;
17506DROP TRIGGER trg_3;
17507
17508# check trigger-12 success: 	1
17509Warnings:
17510Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
17511DELETE FROM t1
17512WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
17513AND f_int2 <> CAST(f_char1 AS SIGNED INT)
17514AND f_charbig = '####updated per insert trigger####';
17515ANALYZE  TABLE t1;
17516Table	Op	Msg_type	Msg_text
17517test.t1	analyze	status	OK
17518test.t1	analyze	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
17519CHECK    TABLE t1 EXTENDED;
17520Table	Op	Msg_type	Msg_text
17521test.t1	check	status	OK
17522test.t1	check	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
17523CHECKSUM TABLE t1 EXTENDED;
17524Table	Checksum
17525test.t1	<some_value>
17526OPTIMIZE TABLE t1;
17527Table	Op	Msg_type	Msg_text
17528test.t1	optimize	status	OK
17529test.t1	optimize	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
17530# check layout success:    1
17531REPAIR   TABLE t1 EXTENDED;
17532Table	Op	Msg_type	Msg_text
17533test.t1	repair	status	OK
17534test.t1	repair	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
17535# check layout success:    1
17536TRUNCATE t1;
17537Warnings:
17538Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
17539
17540# check TRUNCATE success: 	1
17541# check layout success:    1
17542# End usability test (inc/partition_check.inc)
17543DROP TABLE t1;
17544#  2.3.3 UNIQUE INDEX exists
17545DROP TABLE IF EXISTS t1;
17546CREATE TABLE t1 (
17547f_int1 INTEGER,
17548f_int2 INTEGER,
17549f_char1 CHAR(20),
17550f_char2 CHAR(20),
17551f_charbig VARCHAR(1000)
17552, UNIQUE INDEX uidx (f_int1,f_int2)
17553)
17554PARTITION BY HASH(f_int1 + f_int2) PARTITIONS 2;
17555Warnings:
17556Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
17557INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
17558SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
17559WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
17560Warnings:
17561Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
17562ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
17563Warnings:
17564Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
17565INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
17566SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
17567WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
17568Warnings:
17569Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
17570# Start usability test (inc/partition_check.inc)
17571create_command
17572SHOW CREATE TABLE t1;
17573Table	Create Table
17574t1	CREATE TABLE `t1` (
17575  `f_int1` mediumint(9) DEFAULT NULL,
17576  `f_int2` mediumint(9) DEFAULT NULL,
17577  `f_char1` char(20) DEFAULT NULL,
17578  `f_char2` char(20) DEFAULT NULL,
17579  `f_charbig` varchar(1000) DEFAULT NULL,
17580  UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
17581) ENGINE=MyISAM DEFAULT CHARSET=latin1
17582/*!50100 PARTITION BY HASH (f_int1 + f_int2)
17583PARTITIONS 2 */
17584
17585unified filelist
17586t1#P#p0.MYD
17587t1#P#p0.MYI
17588t1#P#p1.MYD
17589t1#P#p1.MYI
17590t1.frm
17591t1.par
17592
17593# check prerequisites-1 success:    1
17594# check COUNT(*) success:    1
17595# check MIN/MAX(f_int1) success:    1
17596# check MIN/MAX(f_int2) success:    1
17597INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17598SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
17599CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
17600WHERE f_int1 IN (2,3);
17601ERROR 23000: Duplicate entry '2-2' for key 'uidx'
17602# check prerequisites-3 success:    1
17603# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
17604INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17605SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
17606CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
17607WHERE f_int1 IN (2,3);
17608DELETE FROM t1 WHERE f_charbig = 'delete me';
17609INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17610SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
17611CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
17612WHERE f_int1 IN (2,3);
17613DELETE FROM t1 WHERE f_charbig = 'delete me';
17614# check read via f_int1 success: 1
17615# check read via f_int2 success: 1
17616
17617# check multiple-1 success: 	1
17618DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
17619
17620# check multiple-2 success: 	1
17621INSERT INTO t1 SELECT * FROM t0_template
17622WHERE MOD(f_int1,3) = 0;
17623
17624# check multiple-3 success: 	1
17625UPDATE t1 SET f_int1 = f_int1 + @max_row
17626WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
17627AND @max_row_div2 + @max_row_div4;
17628
17629# check multiple-4 success: 	1
17630DELETE FROM t1
17631WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
17632AND @max_row_div2 + @max_row_div4 + @max_row;
17633
17634# check multiple-5 success: 	1
17635SELECT COUNT(*) INTO @try_count FROM t0_template
17636WHERE MOD(f_int1,3) = 0
17637AND f_int1 BETWEEN @max_row_div2 AND @max_row;
17638SELECT COUNT(*) INTO @clash_count
17639FROM t1 INNER JOIN t0_template USING(f_int1)
17640WHERE MOD(f_int1,3) = 0
17641AND f_int1 BETWEEN @max_row_div2 AND @max_row;
17642SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
17643INSERT INTO t1
17644SET f_int1 = @cur_value , f_int2 = @cur_value,
17645f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
17646f_charbig = '#SINGLE#';
17647
17648# check single-1 success: 	1
17649SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
17650INSERT INTO t1
17651SET f_int1 = @cur_value , f_int2 = @cur_value,
17652f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
17653f_charbig = '#SINGLE#';
17654
17655# check single-2 success: 	1
17656SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
17657SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
17658UPDATE t1 SET f_int1 = @cur_value2
17659WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
17660
17661# check single-3 success: 	1
17662SET @cur_value1= -1;
17663SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
17664UPDATE t1 SET f_int1 = @cur_value1
17665WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
17666
17667# check single-4 success: 	1
17668SELECT MAX(f_int1) INTO @cur_value FROM t1;
17669DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
17670
17671# check single-5 success: 	1
17672DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
17673
17674# check single-6 success: 	1
17675INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
17676Warnings:
17677Warning	1264	Out of range value for column 'f_int1' at row 1
17678Warning	1264	Out of range value for column 'f_int2' at row 1
17679
17680# check single-7 success: 	1
17681DELETE FROM t1 WHERE f_charbig = '#2147483647##';
17682DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
17683INSERT t1 SET f_int1 = 0 , f_int2 = 0,
17684f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
17685f_charbig = '#NULL#';
17686INSERT INTO t1
17687SET f_int1 = NULL , f_int2 = -@max_row,
17688f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
17689f_charbig = '#NULL#';
17690# check null success:    1
17691
17692# check null-1 success: 	1
17693UPDATE t1 SET f_int1 = -@max_row
17694WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
17695AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
17696
17697# check null-2 success: 	1
17698UPDATE t1 SET f_int1 = NULL
17699WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
17700AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
17701
17702# check null-3 success: 	1
17703DELETE FROM t1
17704WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
17705AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
17706
17707# check null-4 success: 	1
17708DELETE FROM t1
17709WHERE f_int1 = 0 AND f_int2 = 0
17710AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
17711AND f_charbig = '#NULL#';
17712INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17713SELECT f_int1, f_int1, '', '', 'was inserted'
17714   FROM t0_template source_tab
17715WHERE MOD(f_int1,3) = 0
17716AND f_int1 BETWEEN @max_row_div2 AND @max_row
17717ON DUPLICATE KEY
17718UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
17719f_int2 = 2 * @max_row + source_tab.f_int1,
17720f_charbig = 'was updated';
17721
17722# check unique-1-a success: 	1
17723
17724# check unique-1-b success: 	1
17725DELETE FROM t1 WHERE f_charbig = 'was inserted';
17726UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17727f_int2 = CAST(f_char1 AS SIGNED INT),
17728f_charbig = CONCAT('===',f_char1,'===')
17729WHERE f_charbig = 'was updated';
17730REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17731SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
17732   FROM t0_template source_tab
17733WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
17734
17735# check replace success: 	1
17736DELETE FROM t1
17737WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
17738DELETE FROM t1
17739WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
17740f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
17741UPDATE t1 SET f_int2 = f_int1,
17742f_char1 = CAST(f_int1 AS CHAR),
17743f_char2 = CAST(f_int1 AS CHAR),
17744f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
17745WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
17746SET AUTOCOMMIT= 0;
17747INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17748SELECT f_int1, f_int1, '', '', 'was inserted'
17749FROM t0_template source_tab
17750WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
17751
17752# check transactions-1 success: 	1
17753COMMIT WORK;
17754
17755# check transactions-2 success: 	1
17756ROLLBACK WORK;
17757
17758# check transactions-3 success: 	1
17759DELETE FROM t1 WHERE f_charbig = 'was inserted';
17760COMMIT WORK;
17761ROLLBACK WORK;
17762
17763# check transactions-4 success: 	1
17764INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17765SELECT f_int1, f_int1, '', '', 'was inserted'
17766FROM t0_template source_tab
17767WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
17768
17769# check transactions-5 success: 	1
17770ROLLBACK WORK;
17771Warnings:
17772Warning	1196	Some non-transactional changed tables couldn't be rolled back
17773
17774# check transactions-6 success: 	1
17775# INFO: Storage engine used for t1 seems to be not transactional.
17776COMMIT;
17777
17778# check transactions-7 success: 	1
17779DELETE FROM t1 WHERE f_charbig = 'was inserted';
17780COMMIT WORK;
17781SET @@session.sql_mode = 'traditional';
17782Warnings:
17783Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
17784SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
17785INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17786SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
17787'', '', 'was inserted' FROM t0_template
17788WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
17789ERROR 22012: Division by 0
17790COMMIT;
17791
17792# check transactions-8 success: 	1
17793# INFO: Storage engine used for t1 seems to be unable to revert
17794#       changes made by the failing statement.
17795SET @@session.sql_mode = '';
17796Warnings:
17797Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
17798SET AUTOCOMMIT= 1;
17799DELETE FROM t1 WHERE f_charbig = 'was inserted';
17800COMMIT WORK;
17801UPDATE t1 SET f_charbig = REPEAT('b', 1000);
17802
17803# check special-1 success: 	1
17804UPDATE t1 SET f_charbig = '';
17805
17806# check special-2 success: 	1
17807UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
17808INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
17809SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
17810WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17811INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17812SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17813'just inserted' FROM t0_template
17814WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17815CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
17816BEGIN
17817UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17818f_charbig = 'updated by trigger'
17819      WHERE f_int1 = new.f_int1;
17820END|
17821INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17822SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
17823WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17824
17825# check trigger-1 success: 	1
17826DROP TRIGGER trg_1;
17827UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17828f_int2 = CAST(f_char1 AS SIGNED INT),
17829f_charbig = 'just inserted'
17830   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17831DELETE FROM t0_aux
17832WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17833INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17834SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17835'just inserted' FROM t0_template
17836WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17837CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
17838BEGIN
17839UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17840f_charbig = 'updated by trigger'
17841      WHERE f_int1 = new.f_int1;
17842END|
17843INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17844SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
17845WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17846
17847# check trigger-2 success: 	1
17848DROP TRIGGER trg_1;
17849UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17850f_int2 = CAST(f_char1 AS SIGNED INT),
17851f_charbig = 'just inserted'
17852   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17853DELETE FROM t0_aux
17854WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17855INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17856SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17857'just inserted' FROM t0_template
17858WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17859CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
17860BEGIN
17861UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17862f_charbig = 'updated by trigger'
17863      WHERE f_int1 = new.f_int1;
17864END|
17865UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
17866WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17867
17868# check trigger-3 success: 	1
17869DROP TRIGGER trg_1;
17870UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17871f_int2 = CAST(f_char1 AS SIGNED INT),
17872f_charbig = 'just inserted'
17873   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17874DELETE FROM t0_aux
17875WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17876INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17877SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17878'just inserted' FROM t0_template
17879WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17880CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
17881BEGIN
17882UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17883f_charbig = 'updated by trigger'
17884      WHERE f_int1 = - old.f_int1;
17885END|
17886UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
17887WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17888
17889# check trigger-4 success: 	1
17890DROP TRIGGER trg_1;
17891UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17892f_int2 = CAST(f_char1 AS SIGNED INT),
17893f_charbig = 'just inserted'
17894   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17895DELETE FROM t0_aux
17896WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17897INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17898SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17899'just inserted' FROM t0_template
17900WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17901CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
17902BEGIN
17903UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17904f_charbig = 'updated by trigger'
17905      WHERE f_int1 = new.f_int1;
17906END|
17907UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
17908WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17909
17910# check trigger-5 success: 	1
17911DROP TRIGGER trg_1;
17912UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17913f_int2 = CAST(f_char1 AS SIGNED INT),
17914f_charbig = 'just inserted'
17915   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17916DELETE FROM t0_aux
17917WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17918INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17919SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17920'just inserted' FROM t0_template
17921WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17922CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
17923BEGIN
17924UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17925f_charbig = 'updated by trigger'
17926      WHERE f_int1 = - old.f_int1;
17927END|
17928UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
17929WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17930
17931# check trigger-6 success: 	1
17932DROP TRIGGER trg_1;
17933UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17934f_int2 = CAST(f_char1 AS SIGNED INT),
17935f_charbig = 'just inserted'
17936   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17937DELETE FROM t0_aux
17938WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17939INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17940SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17941'just inserted' FROM t0_template
17942WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17943CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
17944BEGIN
17945UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17946f_charbig = 'updated by trigger'
17947      WHERE f_int1 = - old.f_int1;
17948END|
17949DELETE FROM t0_aux
17950WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17951
17952# check trigger-7 success: 	1
17953DROP TRIGGER trg_1;
17954UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17955f_int2 = CAST(f_char1 AS SIGNED INT),
17956f_charbig = 'just inserted'
17957   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17958DELETE FROM t0_aux
17959WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17960INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17961SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17962'just inserted' FROM t0_template
17963WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17964CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
17965BEGIN
17966UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17967f_charbig = 'updated by trigger'
17968      WHERE f_int1 = - old.f_int1;
17969END|
17970DELETE FROM t0_aux
17971WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17972
17973# check trigger-8 success: 	1
17974DROP TRIGGER trg_1;
17975UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17976f_int2 = CAST(f_char1 AS SIGNED INT),
17977f_charbig = 'just inserted'
17978   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17979DELETE FROM t0_aux
17980WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17981DELETE FROM t1
17982WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17983CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
17984BEGIN
17985SET new.f_int1 = old.f_int1 + @max_row,
17986new.f_int2 = old.f_int2 - @max_row,
17987new.f_charbig = '####updated per update trigger####';
17988END|
17989UPDATE t1
17990SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
17991f_charbig = '####updated per update statement itself####';
17992Warnings:
17993Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
17994
17995# check trigger-9 success: 	1
17996DROP TRIGGER trg_2;
17997UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17998f_int2 = CAST(f_char1 AS SIGNED INT),
17999f_charbig = CONCAT('===',f_char1,'===');
18000Warnings:
18001Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
18002CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
18003BEGIN
18004SET new.f_int1 = new.f_int1 + @max_row,
18005new.f_int2 = new.f_int2 - @max_row,
18006new.f_charbig = '####updated per update trigger####';
18007END|
18008UPDATE t1
18009SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
18010f_charbig = '####updated per update statement itself####';
18011Warnings:
18012Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
18013
18014# check trigger-10 success: 	1
18015DROP TRIGGER trg_2;
18016UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18017f_int2 = CAST(f_char1 AS SIGNED INT),
18018f_charbig = CONCAT('===',f_char1,'===');
18019Warnings:
18020Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
18021CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
18022BEGIN
18023SET new.f_int1 = @my_max1 + @counter,
18024new.f_int2 = @my_min2 - @counter,
18025new.f_charbig = '####updated per insert trigger####';
18026SET @counter = @counter + 1;
18027END|
18028SET @counter = 1;
18029SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
18030Warnings:
18031Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
18032INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18033SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
18034CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
18035WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
18036ORDER BY f_int1;
18037DROP TRIGGER trg_3;
18038
18039# check trigger-11 success: 	1
18040Warnings:
18041Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
18042DELETE FROM t1
18043WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
18044AND f_int2 <> CAST(f_char1 AS SIGNED INT)
18045AND f_charbig = '####updated per insert trigger####';
18046CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
18047BEGIN
18048SET new.f_int1 = @my_max1 + @counter,
18049new.f_int2 = @my_min2 - @counter,
18050new.f_charbig = '####updated per insert trigger####';
18051SET @counter = @counter + 1;
18052END|
18053SET @counter = 1;
18054SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
18055Warnings:
18056Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
18057INSERT INTO t1 (f_char1, f_char2, f_charbig)
18058SELECT CAST(f_int1 AS CHAR),
18059CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
18060WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
18061ORDER BY f_int1;
18062DROP TRIGGER trg_3;
18063
18064# check trigger-12 success: 	1
18065Warnings:
18066Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
18067DELETE FROM t1
18068WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
18069AND f_int2 <> CAST(f_char1 AS SIGNED INT)
18070AND f_charbig = '####updated per insert trigger####';
18071ANALYZE  TABLE t1;
18072Table	Op	Msg_type	Msg_text
18073test.t1	analyze	status	OK
18074test.t1	analyze	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
18075CHECK    TABLE t1 EXTENDED;
18076Table	Op	Msg_type	Msg_text
18077test.t1	check	status	OK
18078test.t1	check	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
18079CHECKSUM TABLE t1 EXTENDED;
18080Table	Checksum
18081test.t1	<some_value>
18082OPTIMIZE TABLE t1;
18083Table	Op	Msg_type	Msg_text
18084test.t1	optimize	status	OK
18085test.t1	optimize	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
18086# check layout success:    1
18087REPAIR   TABLE t1 EXTENDED;
18088Table	Op	Msg_type	Msg_text
18089test.t1	repair	status	OK
18090test.t1	repair	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
18091# check layout success:    1
18092TRUNCATE t1;
18093Warnings:
18094Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
18095
18096# check TRUNCATE success: 	1
18097# check layout success:    1
18098# End usability test (inc/partition_check.inc)
18099DROP TABLE t1;
18100CREATE TABLE t1 (
18101f_int1 INTEGER,
18102f_int2 INTEGER,
18103f_char1 CHAR(20),
18104f_char2 CHAR(20),
18105f_charbig VARCHAR(1000)
18106, UNIQUE INDEX uidx (f_int1,f_int2)
18107)
18108PARTITION BY KEY(f_int1,f_int2) PARTITIONS 5;
18109Warnings:
18110Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
18111INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
18112SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
18113WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
18114Warnings:
18115Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
18116ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
18117Warnings:
18118Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
18119INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
18120SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
18121WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
18122Warnings:
18123Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
18124# Start usability test (inc/partition_check.inc)
18125create_command
18126SHOW CREATE TABLE t1;
18127Table	Create Table
18128t1	CREATE TABLE `t1` (
18129  `f_int1` mediumint(9) DEFAULT NULL,
18130  `f_int2` mediumint(9) DEFAULT NULL,
18131  `f_char1` char(20) DEFAULT NULL,
18132  `f_char2` char(20) DEFAULT NULL,
18133  `f_charbig` varchar(1000) DEFAULT NULL,
18134  UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
18135) ENGINE=MyISAM DEFAULT CHARSET=latin1
18136/*!50100 PARTITION BY KEY (f_int1,f_int2)
18137PARTITIONS 5 */
18138
18139unified filelist
18140t1#P#p0.MYD
18141t1#P#p0.MYI
18142t1#P#p1.MYD
18143t1#P#p1.MYI
18144t1#P#p2.MYD
18145t1#P#p2.MYI
18146t1#P#p3.MYD
18147t1#P#p3.MYI
18148t1#P#p4.MYD
18149t1#P#p4.MYI
18150t1.frm
18151t1.par
18152
18153# check prerequisites-1 success:    1
18154# check COUNT(*) success:    1
18155# check MIN/MAX(f_int1) success:    1
18156# check MIN/MAX(f_int2) success:    1
18157INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18158SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
18159CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
18160WHERE f_int1 IN (2,3);
18161ERROR 23000: Duplicate entry '2-2' for key 'uidx'
18162# check prerequisites-3 success:    1
18163# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
18164INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18165SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
18166CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
18167WHERE f_int1 IN (2,3);
18168DELETE FROM t1 WHERE f_charbig = 'delete me';
18169INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18170SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
18171CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
18172WHERE f_int1 IN (2,3);
18173DELETE FROM t1 WHERE f_charbig = 'delete me';
18174# check read via f_int1 success: 1
18175# check read via f_int2 success: 1
18176
18177# check multiple-1 success: 	1
18178DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
18179
18180# check multiple-2 success: 	1
18181INSERT INTO t1 SELECT * FROM t0_template
18182WHERE MOD(f_int1,3) = 0;
18183
18184# check multiple-3 success: 	1
18185UPDATE t1 SET f_int1 = f_int1 + @max_row
18186WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
18187AND @max_row_div2 + @max_row_div4;
18188
18189# check multiple-4 success: 	1
18190DELETE FROM t1
18191WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
18192AND @max_row_div2 + @max_row_div4 + @max_row;
18193
18194# check multiple-5 success: 	1
18195SELECT COUNT(*) INTO @try_count FROM t0_template
18196WHERE MOD(f_int1,3) = 0
18197AND f_int1 BETWEEN @max_row_div2 AND @max_row;
18198SELECT COUNT(*) INTO @clash_count
18199FROM t1 INNER JOIN t0_template USING(f_int1)
18200WHERE MOD(f_int1,3) = 0
18201AND f_int1 BETWEEN @max_row_div2 AND @max_row;
18202SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
18203INSERT INTO t1
18204SET f_int1 = @cur_value , f_int2 = @cur_value,
18205f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
18206f_charbig = '#SINGLE#';
18207
18208# check single-1 success: 	1
18209SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
18210INSERT INTO t1
18211SET f_int1 = @cur_value , f_int2 = @cur_value,
18212f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
18213f_charbig = '#SINGLE#';
18214
18215# check single-2 success: 	1
18216SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
18217SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
18218UPDATE t1 SET f_int1 = @cur_value2
18219WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
18220
18221# check single-3 success: 	1
18222SET @cur_value1= -1;
18223SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
18224UPDATE t1 SET f_int1 = @cur_value1
18225WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
18226
18227# check single-4 success: 	1
18228SELECT MAX(f_int1) INTO @cur_value FROM t1;
18229DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
18230
18231# check single-5 success: 	1
18232DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
18233
18234# check single-6 success: 	1
18235INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
18236Warnings:
18237Warning	1264	Out of range value for column 'f_int1' at row 1
18238Warning	1264	Out of range value for column 'f_int2' at row 1
18239
18240# check single-7 success: 	1
18241DELETE FROM t1 WHERE f_charbig = '#2147483647##';
18242DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
18243INSERT t1 SET f_int1 = 0 , f_int2 = 0,
18244f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
18245f_charbig = '#NULL#';
18246INSERT INTO t1
18247SET f_int1 = NULL , f_int2 = -@max_row,
18248f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
18249f_charbig = '#NULL#';
18250# check null success:    1
18251
18252# check null-1 success: 	1
18253UPDATE t1 SET f_int1 = -@max_row
18254WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
18255AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
18256
18257# check null-2 success: 	1
18258UPDATE t1 SET f_int1 = NULL
18259WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
18260AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
18261
18262# check null-3 success: 	1
18263DELETE FROM t1
18264WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
18265AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
18266
18267# check null-4 success: 	1
18268DELETE FROM t1
18269WHERE f_int1 = 0 AND f_int2 = 0
18270AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
18271AND f_charbig = '#NULL#';
18272INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18273SELECT f_int1, f_int1, '', '', 'was inserted'
18274   FROM t0_template source_tab
18275WHERE MOD(f_int1,3) = 0
18276AND f_int1 BETWEEN @max_row_div2 AND @max_row
18277ON DUPLICATE KEY
18278UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
18279f_int2 = 2 * @max_row + source_tab.f_int1,
18280f_charbig = 'was updated';
18281
18282# check unique-1-a success: 	1
18283
18284# check unique-1-b success: 	1
18285DELETE FROM t1 WHERE f_charbig = 'was inserted';
18286UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18287f_int2 = CAST(f_char1 AS SIGNED INT),
18288f_charbig = CONCAT('===',f_char1,'===')
18289WHERE f_charbig = 'was updated';
18290REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18291SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
18292   FROM t0_template source_tab
18293WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
18294
18295# check replace success: 	1
18296DELETE FROM t1
18297WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
18298DELETE FROM t1
18299WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
18300f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
18301UPDATE t1 SET f_int2 = f_int1,
18302f_char1 = CAST(f_int1 AS CHAR),
18303f_char2 = CAST(f_int1 AS CHAR),
18304f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
18305WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
18306SET AUTOCOMMIT= 0;
18307INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18308SELECT f_int1, f_int1, '', '', 'was inserted'
18309FROM t0_template source_tab
18310WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
18311
18312# check transactions-1 success: 	1
18313COMMIT WORK;
18314
18315# check transactions-2 success: 	1
18316ROLLBACK WORK;
18317
18318# check transactions-3 success: 	1
18319DELETE FROM t1 WHERE f_charbig = 'was inserted';
18320COMMIT WORK;
18321ROLLBACK WORK;
18322
18323# check transactions-4 success: 	1
18324INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18325SELECT f_int1, f_int1, '', '', 'was inserted'
18326FROM t0_template source_tab
18327WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
18328
18329# check transactions-5 success: 	1
18330ROLLBACK WORK;
18331Warnings:
18332Warning	1196	Some non-transactional changed tables couldn't be rolled back
18333
18334# check transactions-6 success: 	1
18335# INFO: Storage engine used for t1 seems to be not transactional.
18336COMMIT;
18337
18338# check transactions-7 success: 	1
18339DELETE FROM t1 WHERE f_charbig = 'was inserted';
18340COMMIT WORK;
18341SET @@session.sql_mode = 'traditional';
18342Warnings:
18343Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
18344SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
18345INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18346SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
18347'', '', 'was inserted' FROM t0_template
18348WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
18349ERROR 22012: Division by 0
18350COMMIT;
18351
18352# check transactions-8 success: 	1
18353# INFO: Storage engine used for t1 seems to be unable to revert
18354#       changes made by the failing statement.
18355SET @@session.sql_mode = '';
18356Warnings:
18357Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
18358SET AUTOCOMMIT= 1;
18359DELETE FROM t1 WHERE f_charbig = 'was inserted';
18360COMMIT WORK;
18361UPDATE t1 SET f_charbig = REPEAT('b', 1000);
18362
18363# check special-1 success: 	1
18364UPDATE t1 SET f_charbig = '';
18365
18366# check special-2 success: 	1
18367UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
18368INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
18369SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
18370WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18371INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18372SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18373'just inserted' FROM t0_template
18374WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18375CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
18376BEGIN
18377UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18378f_charbig = 'updated by trigger'
18379      WHERE f_int1 = new.f_int1;
18380END|
18381INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18382SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
18383WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18384
18385# check trigger-1 success: 	1
18386DROP TRIGGER trg_1;
18387UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18388f_int2 = CAST(f_char1 AS SIGNED INT),
18389f_charbig = 'just inserted'
18390   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18391DELETE FROM t0_aux
18392WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18393INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18394SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18395'just inserted' FROM t0_template
18396WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18397CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
18398BEGIN
18399UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18400f_charbig = 'updated by trigger'
18401      WHERE f_int1 = new.f_int1;
18402END|
18403INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18404SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
18405WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18406
18407# check trigger-2 success: 	1
18408DROP TRIGGER trg_1;
18409UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18410f_int2 = CAST(f_char1 AS SIGNED INT),
18411f_charbig = 'just inserted'
18412   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18413DELETE FROM t0_aux
18414WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18415INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18416SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18417'just inserted' FROM t0_template
18418WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18419CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
18420BEGIN
18421UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18422f_charbig = 'updated by trigger'
18423      WHERE f_int1 = new.f_int1;
18424END|
18425UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
18426WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18427
18428# check trigger-3 success: 	1
18429DROP TRIGGER trg_1;
18430UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18431f_int2 = CAST(f_char1 AS SIGNED INT),
18432f_charbig = 'just inserted'
18433   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18434DELETE FROM t0_aux
18435WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18436INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18437SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18438'just inserted' FROM t0_template
18439WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18440CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
18441BEGIN
18442UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18443f_charbig = 'updated by trigger'
18444      WHERE f_int1 = - old.f_int1;
18445END|
18446UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
18447WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18448
18449# check trigger-4 success: 	1
18450DROP TRIGGER trg_1;
18451UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18452f_int2 = CAST(f_char1 AS SIGNED INT),
18453f_charbig = 'just inserted'
18454   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18455DELETE FROM t0_aux
18456WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18457INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18458SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18459'just inserted' FROM t0_template
18460WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18461CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
18462BEGIN
18463UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18464f_charbig = 'updated by trigger'
18465      WHERE f_int1 = new.f_int1;
18466END|
18467UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
18468WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18469
18470# check trigger-5 success: 	1
18471DROP TRIGGER trg_1;
18472UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18473f_int2 = CAST(f_char1 AS SIGNED INT),
18474f_charbig = 'just inserted'
18475   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18476DELETE FROM t0_aux
18477WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18478INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18479SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18480'just inserted' FROM t0_template
18481WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18482CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
18483BEGIN
18484UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18485f_charbig = 'updated by trigger'
18486      WHERE f_int1 = - old.f_int1;
18487END|
18488UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
18489WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18490
18491# check trigger-6 success: 	1
18492DROP TRIGGER trg_1;
18493UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18494f_int2 = CAST(f_char1 AS SIGNED INT),
18495f_charbig = 'just inserted'
18496   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18497DELETE FROM t0_aux
18498WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18499INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18500SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18501'just inserted' FROM t0_template
18502WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18503CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
18504BEGIN
18505UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18506f_charbig = 'updated by trigger'
18507      WHERE f_int1 = - old.f_int1;
18508END|
18509DELETE FROM t0_aux
18510WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18511
18512# check trigger-7 success: 	1
18513DROP TRIGGER trg_1;
18514UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18515f_int2 = CAST(f_char1 AS SIGNED INT),
18516f_charbig = 'just inserted'
18517   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18518DELETE FROM t0_aux
18519WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18520INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18521SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18522'just inserted' FROM t0_template
18523WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18524CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
18525BEGIN
18526UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18527f_charbig = 'updated by trigger'
18528      WHERE f_int1 = - old.f_int1;
18529END|
18530DELETE FROM t0_aux
18531WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18532
18533# check trigger-8 success: 	1
18534DROP TRIGGER trg_1;
18535UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18536f_int2 = CAST(f_char1 AS SIGNED INT),
18537f_charbig = 'just inserted'
18538   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18539DELETE FROM t0_aux
18540WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18541DELETE FROM t1
18542WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18543CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
18544BEGIN
18545SET new.f_int1 = old.f_int1 + @max_row,
18546new.f_int2 = old.f_int2 - @max_row,
18547new.f_charbig = '####updated per update trigger####';
18548END|
18549UPDATE t1
18550SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
18551f_charbig = '####updated per update statement itself####';
18552Warnings:
18553Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
18554
18555# check trigger-9 success: 	1
18556DROP TRIGGER trg_2;
18557UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18558f_int2 = CAST(f_char1 AS SIGNED INT),
18559f_charbig = CONCAT('===',f_char1,'===');
18560Warnings:
18561Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
18562CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
18563BEGIN
18564SET new.f_int1 = new.f_int1 + @max_row,
18565new.f_int2 = new.f_int2 - @max_row,
18566new.f_charbig = '####updated per update trigger####';
18567END|
18568UPDATE t1
18569SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
18570f_charbig = '####updated per update statement itself####';
18571Warnings:
18572Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
18573
18574# check trigger-10 success: 	1
18575DROP TRIGGER trg_2;
18576UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18577f_int2 = CAST(f_char1 AS SIGNED INT),
18578f_charbig = CONCAT('===',f_char1,'===');
18579Warnings:
18580Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
18581CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
18582BEGIN
18583SET new.f_int1 = @my_max1 + @counter,
18584new.f_int2 = @my_min2 - @counter,
18585new.f_charbig = '####updated per insert trigger####';
18586SET @counter = @counter + 1;
18587END|
18588SET @counter = 1;
18589SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
18590Warnings:
18591Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
18592INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18593SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
18594CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
18595WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
18596ORDER BY f_int1;
18597DROP TRIGGER trg_3;
18598
18599# check trigger-11 success: 	1
18600Warnings:
18601Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
18602DELETE FROM t1
18603WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
18604AND f_int2 <> CAST(f_char1 AS SIGNED INT)
18605AND f_charbig = '####updated per insert trigger####';
18606CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
18607BEGIN
18608SET new.f_int1 = @my_max1 + @counter,
18609new.f_int2 = @my_min2 - @counter,
18610new.f_charbig = '####updated per insert trigger####';
18611SET @counter = @counter + 1;
18612END|
18613SET @counter = 1;
18614SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
18615Warnings:
18616Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
18617INSERT INTO t1 (f_char1, f_char2, f_charbig)
18618SELECT CAST(f_int1 AS CHAR),
18619CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
18620WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
18621ORDER BY f_int1;
18622DROP TRIGGER trg_3;
18623
18624# check trigger-12 success: 	1
18625Warnings:
18626Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
18627DELETE FROM t1
18628WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
18629AND f_int2 <> CAST(f_char1 AS SIGNED INT)
18630AND f_charbig = '####updated per insert trigger####';
18631ANALYZE  TABLE t1;
18632Table	Op	Msg_type	Msg_text
18633test.t1	analyze	status	OK
18634test.t1	analyze	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
18635CHECK    TABLE t1 EXTENDED;
18636Table	Op	Msg_type	Msg_text
18637test.t1	check	status	OK
18638test.t1	check	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
18639CHECKSUM TABLE t1 EXTENDED;
18640Table	Checksum
18641test.t1	<some_value>
18642OPTIMIZE TABLE t1;
18643Table	Op	Msg_type	Msg_text
18644test.t1	optimize	status	OK
18645test.t1	optimize	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
18646# check layout success:    1
18647REPAIR   TABLE t1 EXTENDED;
18648Table	Op	Msg_type	Msg_text
18649test.t1	repair	status	OK
18650test.t1	repair	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
18651# check layout success:    1
18652TRUNCATE t1;
18653Warnings:
18654Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
18655
18656# check TRUNCATE success: 	1
18657# check layout success:    1
18658# End usability test (inc/partition_check.inc)
18659DROP TABLE t1;
18660CREATE TABLE t1 (
18661f_int1 INTEGER,
18662f_int2 INTEGER,
18663f_char1 CHAR(20),
18664f_char2 CHAR(20),
18665f_charbig VARCHAR(1000)
18666, UNIQUE INDEX uidx (f_int1,f_int2)
18667)
18668PARTITION BY LIST(MOD(f_int1 + f_int2,4))
18669(PARTITION part_3 VALUES IN (-3),
18670PARTITION part_2 VALUES IN (-2),
18671PARTITION part_1 VALUES IN (-1),
18672PARTITION part_N VALUES IN (NULL),
18673PARTITION part0 VALUES IN (0),
18674PARTITION part1 VALUES IN (1),
18675PARTITION part2 VALUES IN (2),
18676PARTITION part3 VALUES IN (3));
18677Warnings:
18678Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
18679INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
18680SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
18681WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
18682Warnings:
18683Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
18684ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
18685Warnings:
18686Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
18687INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
18688SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
18689WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
18690Warnings:
18691Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
18692# Start usability test (inc/partition_check.inc)
18693create_command
18694SHOW CREATE TABLE t1;
18695Table	Create Table
18696t1	CREATE TABLE `t1` (
18697  `f_int1` mediumint(9) DEFAULT NULL,
18698  `f_int2` mediumint(9) DEFAULT NULL,
18699  `f_char1` char(20) DEFAULT NULL,
18700  `f_char2` char(20) DEFAULT NULL,
18701  `f_charbig` varchar(1000) DEFAULT NULL,
18702  UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
18703) ENGINE=MyISAM DEFAULT CHARSET=latin1
18704/*!50100 PARTITION BY LIST (MOD(f_int1 + f_int2,4))
18705(PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM,
18706 PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM,
18707 PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM,
18708 PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM,
18709 PARTITION part0 VALUES IN (0) ENGINE = MyISAM,
18710 PARTITION part1 VALUES IN (1) ENGINE = MyISAM,
18711 PARTITION part2 VALUES IN (2) ENGINE = MyISAM,
18712 PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */
18713
18714unified filelist
18715t1#P#part0.MYD
18716t1#P#part0.MYI
18717t1#P#part1.MYD
18718t1#P#part1.MYI
18719t1#P#part2.MYD
18720t1#P#part2.MYI
18721t1#P#part3.MYD
18722t1#P#part3.MYI
18723t1#P#part_1.MYD
18724t1#P#part_1.MYI
18725t1#P#part_2.MYD
18726t1#P#part_2.MYI
18727t1#P#part_3.MYD
18728t1#P#part_3.MYI
18729t1#P#part_N.MYD
18730t1#P#part_N.MYI
18731t1.frm
18732t1.par
18733
18734# check prerequisites-1 success:    1
18735# check COUNT(*) success:    1
18736# check MIN/MAX(f_int1) success:    1
18737# check MIN/MAX(f_int2) success:    1
18738INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18739SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
18740CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
18741WHERE f_int1 IN (2,3);
18742ERROR 23000: Duplicate entry '2-2' for key 'uidx'
18743# check prerequisites-3 success:    1
18744# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
18745INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18746SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
18747CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
18748WHERE f_int1 IN (2,3);
18749DELETE FROM t1 WHERE f_charbig = 'delete me';
18750INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18751SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
18752CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
18753WHERE f_int1 IN (2,3);
18754DELETE FROM t1 WHERE f_charbig = 'delete me';
18755# check read via f_int1 success: 1
18756# check read via f_int2 success: 1
18757
18758# check multiple-1 success: 	1
18759DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
18760
18761# check multiple-2 success: 	1
18762INSERT INTO t1 SELECT * FROM t0_template
18763WHERE MOD(f_int1,3) = 0;
18764
18765# check multiple-3 success: 	1
18766UPDATE t1 SET f_int1 = f_int1 + @max_row
18767WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
18768AND @max_row_div2 + @max_row_div4;
18769
18770# check multiple-4 success: 	1
18771DELETE FROM t1
18772WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
18773AND @max_row_div2 + @max_row_div4 + @max_row;
18774
18775# check multiple-5 success: 	1
18776SELECT COUNT(*) INTO @try_count FROM t0_template
18777WHERE MOD(f_int1,3) = 0
18778AND f_int1 BETWEEN @max_row_div2 AND @max_row;
18779SELECT COUNT(*) INTO @clash_count
18780FROM t1 INNER JOIN t0_template USING(f_int1)
18781WHERE MOD(f_int1,3) = 0
18782AND f_int1 BETWEEN @max_row_div2 AND @max_row;
18783SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
18784INSERT INTO t1
18785SET f_int1 = @cur_value , f_int2 = @cur_value,
18786f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
18787f_charbig = '#SINGLE#';
18788
18789# check single-1 success: 	1
18790SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
18791INSERT INTO t1
18792SET f_int1 = @cur_value , f_int2 = @cur_value,
18793f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
18794f_charbig = '#SINGLE#';
18795
18796# check single-2 success: 	1
18797SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
18798SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
18799UPDATE t1 SET f_int1 = @cur_value2
18800WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
18801
18802# check single-3 success: 	1
18803SET @cur_value1= -1;
18804SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
18805UPDATE t1 SET f_int1 = @cur_value1
18806WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
18807
18808# check single-4 success: 	1
18809SELECT MAX(f_int1) INTO @cur_value FROM t1;
18810DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
18811
18812# check single-5 success: 	1
18813DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
18814
18815# check single-6 success: 	1
18816INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
18817Warnings:
18818Warning	1264	Out of range value for column 'f_int1' at row 1
18819Warning	1264	Out of range value for column 'f_int2' at row 1
18820
18821# check single-7 success: 	1
18822DELETE FROM t1 WHERE f_charbig = '#2147483647##';
18823DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
18824INSERT t1 SET f_int1 = 0 , f_int2 = 0,
18825f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
18826f_charbig = '#NULL#';
18827INSERT INTO t1
18828SET f_int1 = NULL , f_int2 = -@max_row,
18829f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
18830f_charbig = '#NULL#';
18831# check null success:    1
18832
18833# check null-1 success: 	1
18834UPDATE t1 SET f_int1 = -@max_row
18835WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
18836AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
18837
18838# check null-2 success: 	1
18839UPDATE t1 SET f_int1 = NULL
18840WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
18841AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
18842
18843# check null-3 success: 	1
18844DELETE FROM t1
18845WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
18846AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
18847
18848# check null-4 success: 	1
18849DELETE FROM t1
18850WHERE f_int1 = 0 AND f_int2 = 0
18851AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
18852AND f_charbig = '#NULL#';
18853INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18854SELECT f_int1, f_int1, '', '', 'was inserted'
18855   FROM t0_template source_tab
18856WHERE MOD(f_int1,3) = 0
18857AND f_int1 BETWEEN @max_row_div2 AND @max_row
18858ON DUPLICATE KEY
18859UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
18860f_int2 = 2 * @max_row + source_tab.f_int1,
18861f_charbig = 'was updated';
18862
18863# check unique-1-a success: 	1
18864
18865# check unique-1-b success: 	1
18866DELETE FROM t1 WHERE f_charbig = 'was inserted';
18867UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18868f_int2 = CAST(f_char1 AS SIGNED INT),
18869f_charbig = CONCAT('===',f_char1,'===')
18870WHERE f_charbig = 'was updated';
18871REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18872SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
18873   FROM t0_template source_tab
18874WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
18875
18876# check replace success: 	1
18877DELETE FROM t1
18878WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
18879DELETE FROM t1
18880WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
18881f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
18882UPDATE t1 SET f_int2 = f_int1,
18883f_char1 = CAST(f_int1 AS CHAR),
18884f_char2 = CAST(f_int1 AS CHAR),
18885f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
18886WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
18887SET AUTOCOMMIT= 0;
18888INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18889SELECT f_int1, f_int1, '', '', 'was inserted'
18890FROM t0_template source_tab
18891WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
18892
18893# check transactions-1 success: 	1
18894COMMIT WORK;
18895
18896# check transactions-2 success: 	1
18897ROLLBACK WORK;
18898
18899# check transactions-3 success: 	1
18900DELETE FROM t1 WHERE f_charbig = 'was inserted';
18901COMMIT WORK;
18902ROLLBACK WORK;
18903
18904# check transactions-4 success: 	1
18905INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18906SELECT f_int1, f_int1, '', '', 'was inserted'
18907FROM t0_template source_tab
18908WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
18909
18910# check transactions-5 success: 	1
18911ROLLBACK WORK;
18912Warnings:
18913Warning	1196	Some non-transactional changed tables couldn't be rolled back
18914
18915# check transactions-6 success: 	1
18916# INFO: Storage engine used for t1 seems to be not transactional.
18917COMMIT;
18918
18919# check transactions-7 success: 	1
18920DELETE FROM t1 WHERE f_charbig = 'was inserted';
18921COMMIT WORK;
18922SET @@session.sql_mode = 'traditional';
18923Warnings:
18924Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
18925SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
18926INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18927SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
18928'', '', 'was inserted' FROM t0_template
18929WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
18930ERROR 22012: Division by 0
18931COMMIT;
18932
18933# check transactions-8 success: 	1
18934# INFO: Storage engine used for t1 seems to be unable to revert
18935#       changes made by the failing statement.
18936SET @@session.sql_mode = '';
18937Warnings:
18938Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
18939SET AUTOCOMMIT= 1;
18940DELETE FROM t1 WHERE f_charbig = 'was inserted';
18941COMMIT WORK;
18942UPDATE t1 SET f_charbig = REPEAT('b', 1000);
18943
18944# check special-1 success: 	1
18945UPDATE t1 SET f_charbig = '';
18946
18947# check special-2 success: 	1
18948UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
18949INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
18950SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
18951WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18952INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18953SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18954'just inserted' FROM t0_template
18955WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18956CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
18957BEGIN
18958UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18959f_charbig = 'updated by trigger'
18960      WHERE f_int1 = new.f_int1;
18961END|
18962INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18963SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
18964WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18965
18966# check trigger-1 success: 	1
18967DROP TRIGGER trg_1;
18968UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18969f_int2 = CAST(f_char1 AS SIGNED INT),
18970f_charbig = 'just inserted'
18971   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18972DELETE FROM t0_aux
18973WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18974INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18975SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18976'just inserted' FROM t0_template
18977WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18978CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
18979BEGIN
18980UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18981f_charbig = 'updated by trigger'
18982      WHERE f_int1 = new.f_int1;
18983END|
18984INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18985SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
18986WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18987
18988# check trigger-2 success: 	1
18989DROP TRIGGER trg_1;
18990UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18991f_int2 = CAST(f_char1 AS SIGNED INT),
18992f_charbig = 'just inserted'
18993   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18994DELETE FROM t0_aux
18995WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18996INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18997SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18998'just inserted' FROM t0_template
18999WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19000CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
19001BEGIN
19002UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19003f_charbig = 'updated by trigger'
19004      WHERE f_int1 = new.f_int1;
19005END|
19006UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
19007WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19008
19009# check trigger-3 success: 	1
19010DROP TRIGGER trg_1;
19011UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19012f_int2 = CAST(f_char1 AS SIGNED INT),
19013f_charbig = 'just inserted'
19014   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19015DELETE FROM t0_aux
19016WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19017INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19018SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19019'just inserted' FROM t0_template
19020WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19021CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
19022BEGIN
19023UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19024f_charbig = 'updated by trigger'
19025      WHERE f_int1 = - old.f_int1;
19026END|
19027UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
19028WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19029
19030# check trigger-4 success: 	1
19031DROP TRIGGER trg_1;
19032UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19033f_int2 = CAST(f_char1 AS SIGNED INT),
19034f_charbig = 'just inserted'
19035   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19036DELETE FROM t0_aux
19037WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19038INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19039SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19040'just inserted' FROM t0_template
19041WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19042CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
19043BEGIN
19044UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19045f_charbig = 'updated by trigger'
19046      WHERE f_int1 = new.f_int1;
19047END|
19048UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
19049WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19050
19051# check trigger-5 success: 	1
19052DROP TRIGGER trg_1;
19053UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19054f_int2 = CAST(f_char1 AS SIGNED INT),
19055f_charbig = 'just inserted'
19056   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19057DELETE FROM t0_aux
19058WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19059INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19060SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19061'just inserted' FROM t0_template
19062WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19063CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
19064BEGIN
19065UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19066f_charbig = 'updated by trigger'
19067      WHERE f_int1 = - old.f_int1;
19068END|
19069UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
19070WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19071
19072# check trigger-6 success: 	1
19073DROP TRIGGER trg_1;
19074UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19075f_int2 = CAST(f_char1 AS SIGNED INT),
19076f_charbig = 'just inserted'
19077   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19078DELETE FROM t0_aux
19079WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19080INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19081SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19082'just inserted' FROM t0_template
19083WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19084CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
19085BEGIN
19086UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19087f_charbig = 'updated by trigger'
19088      WHERE f_int1 = - old.f_int1;
19089END|
19090DELETE FROM t0_aux
19091WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19092
19093# check trigger-7 success: 	1
19094DROP TRIGGER trg_1;
19095UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19096f_int2 = CAST(f_char1 AS SIGNED INT),
19097f_charbig = 'just inserted'
19098   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19099DELETE FROM t0_aux
19100WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19101INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19102SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19103'just inserted' FROM t0_template
19104WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19105CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
19106BEGIN
19107UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19108f_charbig = 'updated by trigger'
19109      WHERE f_int1 = - old.f_int1;
19110END|
19111DELETE FROM t0_aux
19112WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19113
19114# check trigger-8 success: 	1
19115DROP TRIGGER trg_1;
19116UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19117f_int2 = CAST(f_char1 AS SIGNED INT),
19118f_charbig = 'just inserted'
19119   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19120DELETE FROM t0_aux
19121WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19122DELETE FROM t1
19123WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19124CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
19125BEGIN
19126SET new.f_int1 = old.f_int1 + @max_row,
19127new.f_int2 = old.f_int2 - @max_row,
19128new.f_charbig = '####updated per update trigger####';
19129END|
19130UPDATE t1
19131SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
19132f_charbig = '####updated per update statement itself####';
19133Warnings:
19134Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
19135
19136# check trigger-9 success: 	1
19137DROP TRIGGER trg_2;
19138UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19139f_int2 = CAST(f_char1 AS SIGNED INT),
19140f_charbig = CONCAT('===',f_char1,'===');
19141Warnings:
19142Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
19143CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
19144BEGIN
19145SET new.f_int1 = new.f_int1 + @max_row,
19146new.f_int2 = new.f_int2 - @max_row,
19147new.f_charbig = '####updated per update trigger####';
19148END|
19149UPDATE t1
19150SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
19151f_charbig = '####updated per update statement itself####';
19152Warnings:
19153Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
19154
19155# check trigger-10 success: 	1
19156DROP TRIGGER trg_2;
19157UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19158f_int2 = CAST(f_char1 AS SIGNED INT),
19159f_charbig = CONCAT('===',f_char1,'===');
19160Warnings:
19161Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
19162CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
19163BEGIN
19164SET new.f_int1 = @my_max1 + @counter,
19165new.f_int2 = @my_min2 - @counter,
19166new.f_charbig = '####updated per insert trigger####';
19167SET @counter = @counter + 1;
19168END|
19169SET @counter = 1;
19170SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
19171Warnings:
19172Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
19173INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19174SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
19175CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
19176WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
19177ORDER BY f_int1;
19178DROP TRIGGER trg_3;
19179
19180# check trigger-11 success: 	1
19181Warnings:
19182Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
19183DELETE FROM t1
19184WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
19185AND f_int2 <> CAST(f_char1 AS SIGNED INT)
19186AND f_charbig = '####updated per insert trigger####';
19187CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
19188BEGIN
19189SET new.f_int1 = @my_max1 + @counter,
19190new.f_int2 = @my_min2 - @counter,
19191new.f_charbig = '####updated per insert trigger####';
19192SET @counter = @counter + 1;
19193END|
19194SET @counter = 1;
19195SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
19196Warnings:
19197Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
19198INSERT INTO t1 (f_char1, f_char2, f_charbig)
19199SELECT CAST(f_int1 AS CHAR),
19200CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
19201WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
19202ORDER BY f_int1;
19203DROP TRIGGER trg_3;
19204
19205# check trigger-12 success: 	1
19206Warnings:
19207Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
19208DELETE FROM t1
19209WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
19210AND f_int2 <> CAST(f_char1 AS SIGNED INT)
19211AND f_charbig = '####updated per insert trigger####';
19212ANALYZE  TABLE t1;
19213Table	Op	Msg_type	Msg_text
19214test.t1	analyze	status	OK
19215test.t1	analyze	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
19216CHECK    TABLE t1 EXTENDED;
19217Table	Op	Msg_type	Msg_text
19218test.t1	check	status	OK
19219test.t1	check	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
19220CHECKSUM TABLE t1 EXTENDED;
19221Table	Checksum
19222test.t1	<some_value>
19223OPTIMIZE TABLE t1;
19224Table	Op	Msg_type	Msg_text
19225test.t1	optimize	status	OK
19226test.t1	optimize	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
19227# check layout success:    1
19228REPAIR   TABLE t1 EXTENDED;
19229Table	Op	Msg_type	Msg_text
19230test.t1	repair	status	OK
19231test.t1	repair	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
19232# check layout success:    1
19233TRUNCATE t1;
19234Warnings:
19235Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
19236
19237# check TRUNCATE success: 	1
19238# check layout success:    1
19239# End usability test (inc/partition_check.inc)
19240DROP TABLE t1;
19241CREATE TABLE t1 (
19242f_int1 INTEGER,
19243f_int2 INTEGER,
19244f_char1 CHAR(20),
19245f_char2 CHAR(20),
19246f_charbig VARCHAR(1000)
19247, UNIQUE INDEX uidx (f_int1,f_int2)
19248)
19249PARTITION BY RANGE((f_int1 + f_int2) DIV 2)
19250(PARTITION parta VALUES LESS THAN (0),
19251PARTITION partb VALUES LESS THAN (5),
19252PARTITION partc VALUES LESS THAN (10),
19253PARTITION partd VALUES LESS THAN (10 + 5),
19254PARTITION parte VALUES LESS THAN (20),
19255PARTITION partf VALUES LESS THAN (2147483646));
19256Warnings:
19257Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
19258INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
19259SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
19260WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
19261Warnings:
19262Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
19263ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
19264Warnings:
19265Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
19266INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
19267SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
19268WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
19269Warnings:
19270Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
19271# Start usability test (inc/partition_check.inc)
19272create_command
19273SHOW CREATE TABLE t1;
19274Table	Create Table
19275t1	CREATE TABLE `t1` (
19276  `f_int1` mediumint(9) DEFAULT NULL,
19277  `f_int2` mediumint(9) DEFAULT NULL,
19278  `f_char1` char(20) DEFAULT NULL,
19279  `f_char2` char(20) DEFAULT NULL,
19280  `f_charbig` varchar(1000) DEFAULT NULL,
19281  UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
19282) ENGINE=MyISAM DEFAULT CHARSET=latin1
19283/*!50100 PARTITION BY RANGE ((f_int1 + f_int2) DIV 2)
19284(PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM,
19285 PARTITION partb VALUES LESS THAN (5) ENGINE = MyISAM,
19286 PARTITION partc VALUES LESS THAN (10) ENGINE = MyISAM,
19287 PARTITION partd VALUES LESS THAN (15) ENGINE = MyISAM,
19288 PARTITION parte VALUES LESS THAN (20) ENGINE = MyISAM,
19289 PARTITION partf VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
19290
19291unified filelist
19292t1#P#parta.MYD
19293t1#P#parta.MYI
19294t1#P#partb.MYD
19295t1#P#partb.MYI
19296t1#P#partc.MYD
19297t1#P#partc.MYI
19298t1#P#partd.MYD
19299t1#P#partd.MYI
19300t1#P#parte.MYD
19301t1#P#parte.MYI
19302t1#P#partf.MYD
19303t1#P#partf.MYI
19304t1.frm
19305t1.par
19306
19307# check prerequisites-1 success:    1
19308# check COUNT(*) success:    1
19309# check MIN/MAX(f_int1) success:    1
19310# check MIN/MAX(f_int2) success:    1
19311INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19312SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
19313CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
19314WHERE f_int1 IN (2,3);
19315ERROR 23000: Duplicate entry '2-2' for key 'uidx'
19316# check prerequisites-3 success:    1
19317# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
19318INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19319SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
19320CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
19321WHERE f_int1 IN (2,3);
19322DELETE FROM t1 WHERE f_charbig = 'delete me';
19323INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19324SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
19325CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
19326WHERE f_int1 IN (2,3);
19327DELETE FROM t1 WHERE f_charbig = 'delete me';
19328# check read via f_int1 success: 1
19329# check read via f_int2 success: 1
19330
19331# check multiple-1 success: 	1
19332DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
19333
19334# check multiple-2 success: 	1
19335INSERT INTO t1 SELECT * FROM t0_template
19336WHERE MOD(f_int1,3) = 0;
19337
19338# check multiple-3 success: 	1
19339UPDATE t1 SET f_int1 = f_int1 + @max_row
19340WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
19341AND @max_row_div2 + @max_row_div4;
19342
19343# check multiple-4 success: 	1
19344DELETE FROM t1
19345WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
19346AND @max_row_div2 + @max_row_div4 + @max_row;
19347
19348# check multiple-5 success: 	1
19349SELECT COUNT(*) INTO @try_count FROM t0_template
19350WHERE MOD(f_int1,3) = 0
19351AND f_int1 BETWEEN @max_row_div2 AND @max_row;
19352SELECT COUNT(*) INTO @clash_count
19353FROM t1 INNER JOIN t0_template USING(f_int1)
19354WHERE MOD(f_int1,3) = 0
19355AND f_int1 BETWEEN @max_row_div2 AND @max_row;
19356SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
19357INSERT INTO t1
19358SET f_int1 = @cur_value , f_int2 = @cur_value,
19359f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
19360f_charbig = '#SINGLE#';
19361
19362# check single-1 success: 	1
19363SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
19364INSERT INTO t1
19365SET f_int1 = @cur_value , f_int2 = @cur_value,
19366f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
19367f_charbig = '#SINGLE#';
19368
19369# check single-2 success: 	1
19370SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
19371SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
19372UPDATE t1 SET f_int1 = @cur_value2
19373WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
19374
19375# check single-3 success: 	1
19376SET @cur_value1= -1;
19377SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
19378UPDATE t1 SET f_int1 = @cur_value1
19379WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
19380
19381# check single-4 success: 	1
19382SELECT MAX(f_int1) INTO @cur_value FROM t1;
19383DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
19384
19385# check single-5 success: 	1
19386DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
19387
19388# check single-6 success: 	1
19389INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
19390Warnings:
19391Warning	1264	Out of range value for column 'f_int1' at row 1
19392Warning	1264	Out of range value for column 'f_int2' at row 1
19393
19394# check single-7 success: 	1
19395DELETE FROM t1 WHERE f_charbig = '#2147483647##';
19396DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
19397INSERT t1 SET f_int1 = 0 , f_int2 = 0,
19398f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
19399f_charbig = '#NULL#';
19400INSERT INTO t1
19401SET f_int1 = NULL , f_int2 = -@max_row,
19402f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
19403f_charbig = '#NULL#';
19404# check null success:    1
19405
19406# check null-1 success: 	1
19407UPDATE t1 SET f_int1 = -@max_row
19408WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
19409AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
19410
19411# check null-2 success: 	1
19412UPDATE t1 SET f_int1 = NULL
19413WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
19414AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
19415
19416# check null-3 success: 	1
19417DELETE FROM t1
19418WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
19419AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
19420
19421# check null-4 success: 	1
19422DELETE FROM t1
19423WHERE f_int1 = 0 AND f_int2 = 0
19424AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
19425AND f_charbig = '#NULL#';
19426INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19427SELECT f_int1, f_int1, '', '', 'was inserted'
19428   FROM t0_template source_tab
19429WHERE MOD(f_int1,3) = 0
19430AND f_int1 BETWEEN @max_row_div2 AND @max_row
19431ON DUPLICATE KEY
19432UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
19433f_int2 = 2 * @max_row + source_tab.f_int1,
19434f_charbig = 'was updated';
19435
19436# check unique-1-a success: 	1
19437
19438# check unique-1-b success: 	1
19439DELETE FROM t1 WHERE f_charbig = 'was inserted';
19440UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19441f_int2 = CAST(f_char1 AS SIGNED INT),
19442f_charbig = CONCAT('===',f_char1,'===')
19443WHERE f_charbig = 'was updated';
19444REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19445SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
19446   FROM t0_template source_tab
19447WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
19448
19449# check replace success: 	1
19450DELETE FROM t1
19451WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
19452DELETE FROM t1
19453WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
19454f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
19455UPDATE t1 SET f_int2 = f_int1,
19456f_char1 = CAST(f_int1 AS CHAR),
19457f_char2 = CAST(f_int1 AS CHAR),
19458f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
19459WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
19460SET AUTOCOMMIT= 0;
19461INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19462SELECT f_int1, f_int1, '', '', 'was inserted'
19463FROM t0_template source_tab
19464WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
19465
19466# check transactions-1 success: 	1
19467COMMIT WORK;
19468
19469# check transactions-2 success: 	1
19470ROLLBACK WORK;
19471
19472# check transactions-3 success: 	1
19473DELETE FROM t1 WHERE f_charbig = 'was inserted';
19474COMMIT WORK;
19475ROLLBACK WORK;
19476
19477# check transactions-4 success: 	1
19478INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19479SELECT f_int1, f_int1, '', '', 'was inserted'
19480FROM t0_template source_tab
19481WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
19482
19483# check transactions-5 success: 	1
19484ROLLBACK WORK;
19485Warnings:
19486Warning	1196	Some non-transactional changed tables couldn't be rolled back
19487
19488# check transactions-6 success: 	1
19489# INFO: Storage engine used for t1 seems to be not transactional.
19490COMMIT;
19491
19492# check transactions-7 success: 	1
19493DELETE FROM t1 WHERE f_charbig = 'was inserted';
19494COMMIT WORK;
19495SET @@session.sql_mode = 'traditional';
19496Warnings:
19497Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
19498SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
19499INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19500SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
19501'', '', 'was inserted' FROM t0_template
19502WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
19503ERROR 22012: Division by 0
19504COMMIT;
19505
19506# check transactions-8 success: 	1
19507# INFO: Storage engine used for t1 seems to be unable to revert
19508#       changes made by the failing statement.
19509SET @@session.sql_mode = '';
19510Warnings:
19511Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
19512SET AUTOCOMMIT= 1;
19513DELETE FROM t1 WHERE f_charbig = 'was inserted';
19514COMMIT WORK;
19515UPDATE t1 SET f_charbig = REPEAT('b', 1000);
19516
19517# check special-1 success: 	1
19518UPDATE t1 SET f_charbig = '';
19519
19520# check special-2 success: 	1
19521UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
19522INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
19523SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
19524WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19525INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19526SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19527'just inserted' FROM t0_template
19528WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19529CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
19530BEGIN
19531UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19532f_charbig = 'updated by trigger'
19533      WHERE f_int1 = new.f_int1;
19534END|
19535INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19536SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
19537WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19538
19539# check trigger-1 success: 	1
19540DROP TRIGGER trg_1;
19541UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19542f_int2 = CAST(f_char1 AS SIGNED INT),
19543f_charbig = 'just inserted'
19544   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19545DELETE FROM t0_aux
19546WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19547INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19548SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19549'just inserted' FROM t0_template
19550WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19551CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
19552BEGIN
19553UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19554f_charbig = 'updated by trigger'
19555      WHERE f_int1 = new.f_int1;
19556END|
19557INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19558SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
19559WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19560
19561# check trigger-2 success: 	1
19562DROP TRIGGER trg_1;
19563UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19564f_int2 = CAST(f_char1 AS SIGNED INT),
19565f_charbig = 'just inserted'
19566   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19567DELETE FROM t0_aux
19568WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19569INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19570SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19571'just inserted' FROM t0_template
19572WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19573CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
19574BEGIN
19575UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19576f_charbig = 'updated by trigger'
19577      WHERE f_int1 = new.f_int1;
19578END|
19579UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
19580WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19581
19582# check trigger-3 success: 	1
19583DROP TRIGGER trg_1;
19584UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19585f_int2 = CAST(f_char1 AS SIGNED INT),
19586f_charbig = 'just inserted'
19587   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19588DELETE FROM t0_aux
19589WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19590INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19591SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19592'just inserted' FROM t0_template
19593WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19594CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
19595BEGIN
19596UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19597f_charbig = 'updated by trigger'
19598      WHERE f_int1 = - old.f_int1;
19599END|
19600UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
19601WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19602
19603# check trigger-4 success: 	1
19604DROP TRIGGER trg_1;
19605UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19606f_int2 = CAST(f_char1 AS SIGNED INT),
19607f_charbig = 'just inserted'
19608   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19609DELETE FROM t0_aux
19610WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19611INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19612SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19613'just inserted' FROM t0_template
19614WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19615CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
19616BEGIN
19617UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19618f_charbig = 'updated by trigger'
19619      WHERE f_int1 = new.f_int1;
19620END|
19621UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
19622WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19623
19624# check trigger-5 success: 	1
19625DROP TRIGGER trg_1;
19626UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19627f_int2 = CAST(f_char1 AS SIGNED INT),
19628f_charbig = 'just inserted'
19629   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19630DELETE FROM t0_aux
19631WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19632INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19633SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19634'just inserted' FROM t0_template
19635WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19636CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
19637BEGIN
19638UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19639f_charbig = 'updated by trigger'
19640      WHERE f_int1 = - old.f_int1;
19641END|
19642UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
19643WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19644
19645# check trigger-6 success: 	1
19646DROP TRIGGER trg_1;
19647UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19648f_int2 = CAST(f_char1 AS SIGNED INT),
19649f_charbig = 'just inserted'
19650   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19651DELETE FROM t0_aux
19652WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19653INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19654SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19655'just inserted' FROM t0_template
19656WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19657CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
19658BEGIN
19659UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19660f_charbig = 'updated by trigger'
19661      WHERE f_int1 = - old.f_int1;
19662END|
19663DELETE FROM t0_aux
19664WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19665
19666# check trigger-7 success: 	1
19667DROP TRIGGER trg_1;
19668UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19669f_int2 = CAST(f_char1 AS SIGNED INT),
19670f_charbig = 'just inserted'
19671   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19672DELETE FROM t0_aux
19673WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19674INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19675SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19676'just inserted' FROM t0_template
19677WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19678CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
19679BEGIN
19680UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19681f_charbig = 'updated by trigger'
19682      WHERE f_int1 = - old.f_int1;
19683END|
19684DELETE FROM t0_aux
19685WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19686
19687# check trigger-8 success: 	1
19688DROP TRIGGER trg_1;
19689UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19690f_int2 = CAST(f_char1 AS SIGNED INT),
19691f_charbig = 'just inserted'
19692   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19693DELETE FROM t0_aux
19694WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19695DELETE FROM t1
19696WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19697CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
19698BEGIN
19699SET new.f_int1 = old.f_int1 + @max_row,
19700new.f_int2 = old.f_int2 - @max_row,
19701new.f_charbig = '####updated per update trigger####';
19702END|
19703UPDATE t1
19704SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
19705f_charbig = '####updated per update statement itself####';
19706Warnings:
19707Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
19708
19709# check trigger-9 success: 	1
19710DROP TRIGGER trg_2;
19711UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19712f_int2 = CAST(f_char1 AS SIGNED INT),
19713f_charbig = CONCAT('===',f_char1,'===');
19714Warnings:
19715Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
19716CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
19717BEGIN
19718SET new.f_int1 = new.f_int1 + @max_row,
19719new.f_int2 = new.f_int2 - @max_row,
19720new.f_charbig = '####updated per update trigger####';
19721END|
19722UPDATE t1
19723SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
19724f_charbig = '####updated per update statement itself####';
19725Warnings:
19726Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
19727
19728# check trigger-10 success: 	1
19729DROP TRIGGER trg_2;
19730UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19731f_int2 = CAST(f_char1 AS SIGNED INT),
19732f_charbig = CONCAT('===',f_char1,'===');
19733Warnings:
19734Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
19735CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
19736BEGIN
19737SET new.f_int1 = @my_max1 + @counter,
19738new.f_int2 = @my_min2 - @counter,
19739new.f_charbig = '####updated per insert trigger####';
19740SET @counter = @counter + 1;
19741END|
19742SET @counter = 1;
19743SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
19744Warnings:
19745Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
19746INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19747SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
19748CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
19749WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
19750ORDER BY f_int1;
19751DROP TRIGGER trg_3;
19752
19753# check trigger-11 success: 	1
19754Warnings:
19755Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
19756DELETE FROM t1
19757WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
19758AND f_int2 <> CAST(f_char1 AS SIGNED INT)
19759AND f_charbig = '####updated per insert trigger####';
19760CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
19761BEGIN
19762SET new.f_int1 = @my_max1 + @counter,
19763new.f_int2 = @my_min2 - @counter,
19764new.f_charbig = '####updated per insert trigger####';
19765SET @counter = @counter + 1;
19766END|
19767SET @counter = 1;
19768SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
19769Warnings:
19770Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
19771INSERT INTO t1 (f_char1, f_char2, f_charbig)
19772SELECT CAST(f_int1 AS CHAR),
19773CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
19774WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
19775ORDER BY f_int1;
19776DROP TRIGGER trg_3;
19777
19778# check trigger-12 success: 	1
19779Warnings:
19780Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
19781DELETE FROM t1
19782WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
19783AND f_int2 <> CAST(f_char1 AS SIGNED INT)
19784AND f_charbig = '####updated per insert trigger####';
19785ANALYZE  TABLE t1;
19786Table	Op	Msg_type	Msg_text
19787test.t1	analyze	status	OK
19788test.t1	analyze	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
19789CHECK    TABLE t1 EXTENDED;
19790Table	Op	Msg_type	Msg_text
19791test.t1	check	status	OK
19792test.t1	check	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
19793CHECKSUM TABLE t1 EXTENDED;
19794Table	Checksum
19795test.t1	<some_value>
19796OPTIMIZE TABLE t1;
19797Table	Op	Msg_type	Msg_text
19798test.t1	optimize	status	OK
19799test.t1	optimize	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
19800# check layout success:    1
19801REPAIR   TABLE t1 EXTENDED;
19802Table	Op	Msg_type	Msg_text
19803test.t1	repair	status	OK
19804test.t1	repair	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
19805# check layout success:    1
19806TRUNCATE t1;
19807Warnings:
19808Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
19809
19810# check TRUNCATE success: 	1
19811# check layout success:    1
19812# End usability test (inc/partition_check.inc)
19813DROP TABLE t1;
19814CREATE TABLE t1 (
19815f_int1 INTEGER,
19816f_int2 INTEGER,
19817f_char1 CHAR(20),
19818f_char2 CHAR(20),
19819f_charbig VARCHAR(1000)
19820, UNIQUE INDEX uidx (f_int1,f_int2)
19821)
19822PARTITION BY RANGE(f_int1) SUBPARTITION BY HASH(f_int2) SUBPARTITIONS 2
19823(PARTITION parta VALUES LESS THAN (0),
19824PARTITION partb VALUES LESS THAN (5),
19825PARTITION partc VALUES LESS THAN (10),
19826PARTITION partd VALUES LESS THAN (2147483646));
19827Warnings:
19828Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
19829INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
19830SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
19831WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
19832Warnings:
19833Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
19834ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
19835Warnings:
19836Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
19837INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
19838SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
19839WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
19840Warnings:
19841Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
19842# Start usability test (inc/partition_check.inc)
19843create_command
19844SHOW CREATE TABLE t1;
19845Table	Create Table
19846t1	CREATE TABLE `t1` (
19847  `f_int1` mediumint(9) DEFAULT NULL,
19848  `f_int2` mediumint(9) DEFAULT NULL,
19849  `f_char1` char(20) DEFAULT NULL,
19850  `f_char2` char(20) DEFAULT NULL,
19851  `f_charbig` varchar(1000) DEFAULT NULL,
19852  UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
19853) ENGINE=MyISAM DEFAULT CHARSET=latin1
19854/*!50100 PARTITION BY RANGE (f_int1)
19855SUBPARTITION BY HASH (f_int2)
19856SUBPARTITIONS 2
19857(PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM,
19858 PARTITION partb VALUES LESS THAN (5) ENGINE = MyISAM,
19859 PARTITION partc VALUES LESS THAN (10) ENGINE = MyISAM,
19860 PARTITION partd VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
19861
19862unified filelist
19863t1#P#parta#SP#partasp0.MYD
19864t1#P#parta#SP#partasp0.MYI
19865t1#P#parta#SP#partasp1.MYD
19866t1#P#parta#SP#partasp1.MYI
19867t1#P#partb#SP#partbsp0.MYD
19868t1#P#partb#SP#partbsp0.MYI
19869t1#P#partb#SP#partbsp1.MYD
19870t1#P#partb#SP#partbsp1.MYI
19871t1#P#partc#SP#partcsp0.MYD
19872t1#P#partc#SP#partcsp0.MYI
19873t1#P#partc#SP#partcsp1.MYD
19874t1#P#partc#SP#partcsp1.MYI
19875t1#P#partd#SP#partdsp0.MYD
19876t1#P#partd#SP#partdsp0.MYI
19877t1#P#partd#SP#partdsp1.MYD
19878t1#P#partd#SP#partdsp1.MYI
19879t1.frm
19880t1.par
19881
19882# check prerequisites-1 success:    1
19883# check COUNT(*) success:    1
19884# check MIN/MAX(f_int1) success:    1
19885# check MIN/MAX(f_int2) success:    1
19886INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19887SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
19888CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
19889WHERE f_int1 IN (2,3);
19890ERROR 23000: Duplicate entry '2-2' for key 'uidx'
19891# check prerequisites-3 success:    1
19892# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
19893INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19894SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
19895CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
19896WHERE f_int1 IN (2,3);
19897DELETE FROM t1 WHERE f_charbig = 'delete me';
19898INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19899SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
19900CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
19901WHERE f_int1 IN (2,3);
19902DELETE FROM t1 WHERE f_charbig = 'delete me';
19903# check read via f_int1 success: 1
19904# check read via f_int2 success: 1
19905
19906# check multiple-1 success: 	1
19907DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
19908
19909# check multiple-2 success: 	1
19910INSERT INTO t1 SELECT * FROM t0_template
19911WHERE MOD(f_int1,3) = 0;
19912
19913# check multiple-3 success: 	1
19914UPDATE t1 SET f_int1 = f_int1 + @max_row
19915WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
19916AND @max_row_div2 + @max_row_div4;
19917
19918# check multiple-4 success: 	1
19919DELETE FROM t1
19920WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
19921AND @max_row_div2 + @max_row_div4 + @max_row;
19922
19923# check multiple-5 success: 	1
19924SELECT COUNT(*) INTO @try_count FROM t0_template
19925WHERE MOD(f_int1,3) = 0
19926AND f_int1 BETWEEN @max_row_div2 AND @max_row;
19927SELECT COUNT(*) INTO @clash_count
19928FROM t1 INNER JOIN t0_template USING(f_int1)
19929WHERE MOD(f_int1,3) = 0
19930AND f_int1 BETWEEN @max_row_div2 AND @max_row;
19931SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
19932INSERT INTO t1
19933SET f_int1 = @cur_value , f_int2 = @cur_value,
19934f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
19935f_charbig = '#SINGLE#';
19936
19937# check single-1 success: 	1
19938SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
19939INSERT INTO t1
19940SET f_int1 = @cur_value , f_int2 = @cur_value,
19941f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
19942f_charbig = '#SINGLE#';
19943
19944# check single-2 success: 	1
19945SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
19946SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
19947UPDATE t1 SET f_int1 = @cur_value2
19948WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
19949
19950# check single-3 success: 	1
19951SET @cur_value1= -1;
19952SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
19953UPDATE t1 SET f_int1 = @cur_value1
19954WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
19955
19956# check single-4 success: 	1
19957SELECT MAX(f_int1) INTO @cur_value FROM t1;
19958DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
19959
19960# check single-5 success: 	1
19961DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
19962
19963# check single-6 success: 	1
19964INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
19965Warnings:
19966Warning	1264	Out of range value for column 'f_int1' at row 1
19967Warning	1264	Out of range value for column 'f_int2' at row 1
19968
19969# check single-7 success: 	1
19970DELETE FROM t1 WHERE f_charbig = '#2147483647##';
19971DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
19972INSERT t1 SET f_int1 = 0 , f_int2 = 0,
19973f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
19974f_charbig = '#NULL#';
19975INSERT INTO t1
19976SET f_int1 = NULL , f_int2 = -@max_row,
19977f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
19978f_charbig = '#NULL#';
19979# check null success:    1
19980
19981# check null-1 success: 	1
19982UPDATE t1 SET f_int1 = -@max_row
19983WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
19984AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
19985
19986# check null-2 success: 	1
19987UPDATE t1 SET f_int1 = NULL
19988WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
19989AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
19990
19991# check null-3 success: 	1
19992DELETE FROM t1
19993WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
19994AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
19995
19996# check null-4 success: 	1
19997DELETE FROM t1
19998WHERE f_int1 = 0 AND f_int2 = 0
19999AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
20000AND f_charbig = '#NULL#';
20001INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20002SELECT f_int1, f_int1, '', '', 'was inserted'
20003   FROM t0_template source_tab
20004WHERE MOD(f_int1,3) = 0
20005AND f_int1 BETWEEN @max_row_div2 AND @max_row
20006ON DUPLICATE KEY
20007UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
20008f_int2 = 2 * @max_row + source_tab.f_int1,
20009f_charbig = 'was updated';
20010
20011# check unique-1-a success: 	1
20012
20013# check unique-1-b success: 	1
20014DELETE FROM t1 WHERE f_charbig = 'was inserted';
20015UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20016f_int2 = CAST(f_char1 AS SIGNED INT),
20017f_charbig = CONCAT('===',f_char1,'===')
20018WHERE f_charbig = 'was updated';
20019REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20020SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
20021   FROM t0_template source_tab
20022WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
20023
20024# check replace success: 	1
20025DELETE FROM t1
20026WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
20027DELETE FROM t1
20028WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
20029f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
20030UPDATE t1 SET f_int2 = f_int1,
20031f_char1 = CAST(f_int1 AS CHAR),
20032f_char2 = CAST(f_int1 AS CHAR),
20033f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
20034WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
20035SET AUTOCOMMIT= 0;
20036INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20037SELECT f_int1, f_int1, '', '', 'was inserted'
20038FROM t0_template source_tab
20039WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
20040
20041# check transactions-1 success: 	1
20042COMMIT WORK;
20043
20044# check transactions-2 success: 	1
20045ROLLBACK WORK;
20046
20047# check transactions-3 success: 	1
20048DELETE FROM t1 WHERE f_charbig = 'was inserted';
20049COMMIT WORK;
20050ROLLBACK WORK;
20051
20052# check transactions-4 success: 	1
20053INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20054SELECT f_int1, f_int1, '', '', 'was inserted'
20055FROM t0_template source_tab
20056WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
20057
20058# check transactions-5 success: 	1
20059ROLLBACK WORK;
20060Warnings:
20061Warning	1196	Some non-transactional changed tables couldn't be rolled back
20062
20063# check transactions-6 success: 	1
20064# INFO: Storage engine used for t1 seems to be not transactional.
20065COMMIT;
20066
20067# check transactions-7 success: 	1
20068DELETE FROM t1 WHERE f_charbig = 'was inserted';
20069COMMIT WORK;
20070SET @@session.sql_mode = 'traditional';
20071Warnings:
20072Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
20073SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
20074INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20075SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
20076'', '', 'was inserted' FROM t0_template
20077WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
20078ERROR 22012: Division by 0
20079COMMIT;
20080
20081# check transactions-8 success: 	1
20082# INFO: Storage engine used for t1 seems to be unable to revert
20083#       changes made by the failing statement.
20084SET @@session.sql_mode = '';
20085Warnings:
20086Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
20087SET AUTOCOMMIT= 1;
20088DELETE FROM t1 WHERE f_charbig = 'was inserted';
20089COMMIT WORK;
20090UPDATE t1 SET f_charbig = REPEAT('b', 1000);
20091
20092# check special-1 success: 	1
20093UPDATE t1 SET f_charbig = '';
20094
20095# check special-2 success: 	1
20096UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
20097INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
20098SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
20099WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20100INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20101SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20102'just inserted' FROM t0_template
20103WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20104CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
20105BEGIN
20106UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20107f_charbig = 'updated by trigger'
20108      WHERE f_int1 = new.f_int1;
20109END|
20110INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20111SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
20112WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20113
20114# check trigger-1 success: 	1
20115DROP TRIGGER trg_1;
20116UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20117f_int2 = CAST(f_char1 AS SIGNED INT),
20118f_charbig = 'just inserted'
20119   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20120DELETE FROM t0_aux
20121WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20122INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20123SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20124'just inserted' FROM t0_template
20125WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20126CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
20127BEGIN
20128UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20129f_charbig = 'updated by trigger'
20130      WHERE f_int1 = new.f_int1;
20131END|
20132INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20133SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
20134WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20135
20136# check trigger-2 success: 	1
20137DROP TRIGGER trg_1;
20138UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20139f_int2 = CAST(f_char1 AS SIGNED INT),
20140f_charbig = 'just inserted'
20141   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20142DELETE FROM t0_aux
20143WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20144INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20145SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20146'just inserted' FROM t0_template
20147WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20148CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
20149BEGIN
20150UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20151f_charbig = 'updated by trigger'
20152      WHERE f_int1 = new.f_int1;
20153END|
20154UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
20155WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20156
20157# check trigger-3 success: 	1
20158DROP TRIGGER trg_1;
20159UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20160f_int2 = CAST(f_char1 AS SIGNED INT),
20161f_charbig = 'just inserted'
20162   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20163DELETE FROM t0_aux
20164WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20165INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20166SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20167'just inserted' FROM t0_template
20168WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20169CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
20170BEGIN
20171UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20172f_charbig = 'updated by trigger'
20173      WHERE f_int1 = - old.f_int1;
20174END|
20175UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
20176WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20177
20178# check trigger-4 success: 	1
20179DROP TRIGGER trg_1;
20180UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20181f_int2 = CAST(f_char1 AS SIGNED INT),
20182f_charbig = 'just inserted'
20183   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20184DELETE FROM t0_aux
20185WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20186INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20187SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20188'just inserted' FROM t0_template
20189WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20190CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
20191BEGIN
20192UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20193f_charbig = 'updated by trigger'
20194      WHERE f_int1 = new.f_int1;
20195END|
20196UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
20197WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20198
20199# check trigger-5 success: 	1
20200DROP TRIGGER trg_1;
20201UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20202f_int2 = CAST(f_char1 AS SIGNED INT),
20203f_charbig = 'just inserted'
20204   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20205DELETE FROM t0_aux
20206WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20207INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20208SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20209'just inserted' FROM t0_template
20210WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20211CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
20212BEGIN
20213UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20214f_charbig = 'updated by trigger'
20215      WHERE f_int1 = - old.f_int1;
20216END|
20217UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
20218WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20219
20220# check trigger-6 success: 	1
20221DROP TRIGGER trg_1;
20222UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20223f_int2 = CAST(f_char1 AS SIGNED INT),
20224f_charbig = 'just inserted'
20225   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20226DELETE FROM t0_aux
20227WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20228INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20229SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20230'just inserted' FROM t0_template
20231WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20232CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
20233BEGIN
20234UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20235f_charbig = 'updated by trigger'
20236      WHERE f_int1 = - old.f_int1;
20237END|
20238DELETE FROM t0_aux
20239WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20240
20241# check trigger-7 success: 	1
20242DROP TRIGGER trg_1;
20243UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20244f_int2 = CAST(f_char1 AS SIGNED INT),
20245f_charbig = 'just inserted'
20246   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20247DELETE FROM t0_aux
20248WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20249INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20250SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20251'just inserted' FROM t0_template
20252WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20253CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
20254BEGIN
20255UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20256f_charbig = 'updated by trigger'
20257      WHERE f_int1 = - old.f_int1;
20258END|
20259DELETE FROM t0_aux
20260WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20261
20262# check trigger-8 success: 	1
20263DROP TRIGGER trg_1;
20264UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20265f_int2 = CAST(f_char1 AS SIGNED INT),
20266f_charbig = 'just inserted'
20267   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20268DELETE FROM t0_aux
20269WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20270DELETE FROM t1
20271WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20272CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
20273BEGIN
20274SET new.f_int1 = old.f_int1 + @max_row,
20275new.f_int2 = old.f_int2 - @max_row,
20276new.f_charbig = '####updated per update trigger####';
20277END|
20278UPDATE t1
20279SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
20280f_charbig = '####updated per update statement itself####';
20281Warnings:
20282Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
20283
20284# check trigger-9 success: 	1
20285DROP TRIGGER trg_2;
20286UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20287f_int2 = CAST(f_char1 AS SIGNED INT),
20288f_charbig = CONCAT('===',f_char1,'===');
20289Warnings:
20290Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
20291CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
20292BEGIN
20293SET new.f_int1 = new.f_int1 + @max_row,
20294new.f_int2 = new.f_int2 - @max_row,
20295new.f_charbig = '####updated per update trigger####';
20296END|
20297UPDATE t1
20298SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
20299f_charbig = '####updated per update statement itself####';
20300Warnings:
20301Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
20302
20303# check trigger-10 success: 	1
20304DROP TRIGGER trg_2;
20305UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20306f_int2 = CAST(f_char1 AS SIGNED INT),
20307f_charbig = CONCAT('===',f_char1,'===');
20308Warnings:
20309Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
20310CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
20311BEGIN
20312SET new.f_int1 = @my_max1 + @counter,
20313new.f_int2 = @my_min2 - @counter,
20314new.f_charbig = '####updated per insert trigger####';
20315SET @counter = @counter + 1;
20316END|
20317SET @counter = 1;
20318SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
20319Warnings:
20320Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
20321INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20322SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
20323CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
20324WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
20325ORDER BY f_int1;
20326DROP TRIGGER trg_3;
20327
20328# check trigger-11 success: 	1
20329Warnings:
20330Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
20331DELETE FROM t1
20332WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
20333AND f_int2 <> CAST(f_char1 AS SIGNED INT)
20334AND f_charbig = '####updated per insert trigger####';
20335CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
20336BEGIN
20337SET new.f_int1 = @my_max1 + @counter,
20338new.f_int2 = @my_min2 - @counter,
20339new.f_charbig = '####updated per insert trigger####';
20340SET @counter = @counter + 1;
20341END|
20342SET @counter = 1;
20343SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
20344Warnings:
20345Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
20346INSERT INTO t1 (f_char1, f_char2, f_charbig)
20347SELECT CAST(f_int1 AS CHAR),
20348CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
20349WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
20350ORDER BY f_int1;
20351DROP TRIGGER trg_3;
20352
20353# check trigger-12 success: 	1
20354Warnings:
20355Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
20356DELETE FROM t1
20357WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
20358AND f_int2 <> CAST(f_char1 AS SIGNED INT)
20359AND f_charbig = '####updated per insert trigger####';
20360ANALYZE  TABLE t1;
20361Table	Op	Msg_type	Msg_text
20362test.t1	analyze	status	OK
20363test.t1	analyze	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
20364CHECK    TABLE t1 EXTENDED;
20365Table	Op	Msg_type	Msg_text
20366test.t1	check	status	OK
20367test.t1	check	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
20368CHECKSUM TABLE t1 EXTENDED;
20369Table	Checksum
20370test.t1	<some_value>
20371OPTIMIZE TABLE t1;
20372Table	Op	Msg_type	Msg_text
20373test.t1	optimize	status	OK
20374test.t1	optimize	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
20375# check layout success:    1
20376REPAIR   TABLE t1 EXTENDED;
20377Table	Op	Msg_type	Msg_text
20378test.t1	repair	status	OK
20379test.t1	repair	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
20380# check layout success:    1
20381TRUNCATE t1;
20382Warnings:
20383Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
20384
20385# check TRUNCATE success: 	1
20386# check layout success:    1
20387# End usability test (inc/partition_check.inc)
20388DROP TABLE t1;
20389CREATE TABLE t1 (
20390f_int1 INTEGER,
20391f_int2 INTEGER,
20392f_char1 CHAR(20),
20393f_char2 CHAR(20),
20394f_charbig VARCHAR(1000)
20395, UNIQUE INDEX uidx (f_int1,f_int2)
20396)
20397PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int2)
20398(PARTITION part1 VALUES LESS THAN (0)
20399(SUBPARTITION subpart11, SUBPARTITION subpart12),
20400PARTITION part2 VALUES LESS THAN (5)
20401(SUBPARTITION subpart21, SUBPARTITION subpart22),
20402PARTITION part3 VALUES LESS THAN (10)
20403(SUBPARTITION subpart31, SUBPARTITION subpart32),
20404PARTITION part4 VALUES LESS THAN (2147483646)
20405(SUBPARTITION subpart41, SUBPARTITION subpart42));
20406Warnings:
20407Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
20408INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
20409SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
20410WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
20411Warnings:
20412Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
20413ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
20414Warnings:
20415Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
20416INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
20417SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
20418WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
20419Warnings:
20420Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
20421# Start usability test (inc/partition_check.inc)
20422create_command
20423SHOW CREATE TABLE t1;
20424Table	Create Table
20425t1	CREATE TABLE `t1` (
20426  `f_int1` mediumint(9) DEFAULT NULL,
20427  `f_int2` mediumint(9) DEFAULT NULL,
20428  `f_char1` char(20) DEFAULT NULL,
20429  `f_char2` char(20) DEFAULT NULL,
20430  `f_charbig` varchar(1000) DEFAULT NULL,
20431  UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
20432) ENGINE=MyISAM DEFAULT CHARSET=latin1
20433/*!50100 PARTITION BY RANGE (f_int1)
20434SUBPARTITION BY KEY (f_int2)
20435(PARTITION part1 VALUES LESS THAN (0)
20436 (SUBPARTITION subpart11 ENGINE = MyISAM,
20437  SUBPARTITION subpart12 ENGINE = MyISAM),
20438 PARTITION part2 VALUES LESS THAN (5)
20439 (SUBPARTITION subpart21 ENGINE = MyISAM,
20440  SUBPARTITION subpart22 ENGINE = MyISAM),
20441 PARTITION part3 VALUES LESS THAN (10)
20442 (SUBPARTITION subpart31 ENGINE = MyISAM,
20443  SUBPARTITION subpart32 ENGINE = MyISAM),
20444 PARTITION part4 VALUES LESS THAN (2147483646)
20445 (SUBPARTITION subpart41 ENGINE = MyISAM,
20446  SUBPARTITION subpart42 ENGINE = MyISAM)) */
20447
20448unified filelist
20449t1#P#part1#SP#subpart11.MYD
20450t1#P#part1#SP#subpart11.MYI
20451t1#P#part1#SP#subpart12.MYD
20452t1#P#part1#SP#subpart12.MYI
20453t1#P#part2#SP#subpart21.MYD
20454t1#P#part2#SP#subpart21.MYI
20455t1#P#part2#SP#subpart22.MYD
20456t1#P#part2#SP#subpart22.MYI
20457t1#P#part3#SP#subpart31.MYD
20458t1#P#part3#SP#subpart31.MYI
20459t1#P#part3#SP#subpart32.MYD
20460t1#P#part3#SP#subpart32.MYI
20461t1#P#part4#SP#subpart41.MYD
20462t1#P#part4#SP#subpart41.MYI
20463t1#P#part4#SP#subpart42.MYD
20464t1#P#part4#SP#subpart42.MYI
20465t1.frm
20466t1.par
20467
20468# check prerequisites-1 success:    1
20469# check COUNT(*) success:    1
20470# check MIN/MAX(f_int1) success:    1
20471# check MIN/MAX(f_int2) success:    1
20472INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20473SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
20474CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
20475WHERE f_int1 IN (2,3);
20476ERROR 23000: Duplicate entry '2-2' for key 'uidx'
20477# check prerequisites-3 success:    1
20478# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
20479INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20480SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
20481CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
20482WHERE f_int1 IN (2,3);
20483DELETE FROM t1 WHERE f_charbig = 'delete me';
20484INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20485SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
20486CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
20487WHERE f_int1 IN (2,3);
20488DELETE FROM t1 WHERE f_charbig = 'delete me';
20489# check read via f_int1 success: 1
20490# check read via f_int2 success: 1
20491
20492# check multiple-1 success: 	1
20493DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
20494
20495# check multiple-2 success: 	1
20496INSERT INTO t1 SELECT * FROM t0_template
20497WHERE MOD(f_int1,3) = 0;
20498
20499# check multiple-3 success: 	1
20500UPDATE t1 SET f_int1 = f_int1 + @max_row
20501WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
20502AND @max_row_div2 + @max_row_div4;
20503
20504# check multiple-4 success: 	1
20505DELETE FROM t1
20506WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
20507AND @max_row_div2 + @max_row_div4 + @max_row;
20508
20509# check multiple-5 success: 	1
20510SELECT COUNT(*) INTO @try_count FROM t0_template
20511WHERE MOD(f_int1,3) = 0
20512AND f_int1 BETWEEN @max_row_div2 AND @max_row;
20513SELECT COUNT(*) INTO @clash_count
20514FROM t1 INNER JOIN t0_template USING(f_int1)
20515WHERE MOD(f_int1,3) = 0
20516AND f_int1 BETWEEN @max_row_div2 AND @max_row;
20517SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
20518INSERT INTO t1
20519SET f_int1 = @cur_value , f_int2 = @cur_value,
20520f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
20521f_charbig = '#SINGLE#';
20522
20523# check single-1 success: 	1
20524SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
20525INSERT INTO t1
20526SET f_int1 = @cur_value , f_int2 = @cur_value,
20527f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
20528f_charbig = '#SINGLE#';
20529
20530# check single-2 success: 	1
20531SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
20532SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
20533UPDATE t1 SET f_int1 = @cur_value2
20534WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
20535
20536# check single-3 success: 	1
20537SET @cur_value1= -1;
20538SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
20539UPDATE t1 SET f_int1 = @cur_value1
20540WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
20541
20542# check single-4 success: 	1
20543SELECT MAX(f_int1) INTO @cur_value FROM t1;
20544DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
20545
20546# check single-5 success: 	1
20547DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
20548
20549# check single-6 success: 	1
20550INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
20551Warnings:
20552Warning	1264	Out of range value for column 'f_int1' at row 1
20553Warning	1264	Out of range value for column 'f_int2' at row 1
20554
20555# check single-7 success: 	1
20556DELETE FROM t1 WHERE f_charbig = '#2147483647##';
20557DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
20558INSERT t1 SET f_int1 = 0 , f_int2 = 0,
20559f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
20560f_charbig = '#NULL#';
20561INSERT INTO t1
20562SET f_int1 = NULL , f_int2 = -@max_row,
20563f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
20564f_charbig = '#NULL#';
20565# check null success:    1
20566
20567# check null-1 success: 	1
20568UPDATE t1 SET f_int1 = -@max_row
20569WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
20570AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
20571
20572# check null-2 success: 	1
20573UPDATE t1 SET f_int1 = NULL
20574WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
20575AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
20576
20577# check null-3 success: 	1
20578DELETE FROM t1
20579WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
20580AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
20581
20582# check null-4 success: 	1
20583DELETE FROM t1
20584WHERE f_int1 = 0 AND f_int2 = 0
20585AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
20586AND f_charbig = '#NULL#';
20587INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20588SELECT f_int1, f_int1, '', '', 'was inserted'
20589   FROM t0_template source_tab
20590WHERE MOD(f_int1,3) = 0
20591AND f_int1 BETWEEN @max_row_div2 AND @max_row
20592ON DUPLICATE KEY
20593UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
20594f_int2 = 2 * @max_row + source_tab.f_int1,
20595f_charbig = 'was updated';
20596
20597# check unique-1-a success: 	1
20598
20599# check unique-1-b success: 	1
20600DELETE FROM t1 WHERE f_charbig = 'was inserted';
20601UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20602f_int2 = CAST(f_char1 AS SIGNED INT),
20603f_charbig = CONCAT('===',f_char1,'===')
20604WHERE f_charbig = 'was updated';
20605REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20606SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
20607   FROM t0_template source_tab
20608WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
20609
20610# check replace success: 	1
20611DELETE FROM t1
20612WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
20613DELETE FROM t1
20614WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
20615f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
20616UPDATE t1 SET f_int2 = f_int1,
20617f_char1 = CAST(f_int1 AS CHAR),
20618f_char2 = CAST(f_int1 AS CHAR),
20619f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
20620WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
20621SET AUTOCOMMIT= 0;
20622INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20623SELECT f_int1, f_int1, '', '', 'was inserted'
20624FROM t0_template source_tab
20625WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
20626
20627# check transactions-1 success: 	1
20628COMMIT WORK;
20629
20630# check transactions-2 success: 	1
20631ROLLBACK WORK;
20632
20633# check transactions-3 success: 	1
20634DELETE FROM t1 WHERE f_charbig = 'was inserted';
20635COMMIT WORK;
20636ROLLBACK WORK;
20637
20638# check transactions-4 success: 	1
20639INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20640SELECT f_int1, f_int1, '', '', 'was inserted'
20641FROM t0_template source_tab
20642WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
20643
20644# check transactions-5 success: 	1
20645ROLLBACK WORK;
20646Warnings:
20647Warning	1196	Some non-transactional changed tables couldn't be rolled back
20648
20649# check transactions-6 success: 	1
20650# INFO: Storage engine used for t1 seems to be not transactional.
20651COMMIT;
20652
20653# check transactions-7 success: 	1
20654DELETE FROM t1 WHERE f_charbig = 'was inserted';
20655COMMIT WORK;
20656SET @@session.sql_mode = 'traditional';
20657Warnings:
20658Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
20659SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
20660INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20661SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
20662'', '', 'was inserted' FROM t0_template
20663WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
20664ERROR 22012: Division by 0
20665COMMIT;
20666
20667# check transactions-8 success: 	1
20668# INFO: Storage engine used for t1 seems to be unable to revert
20669#       changes made by the failing statement.
20670SET @@session.sql_mode = '';
20671Warnings:
20672Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
20673SET AUTOCOMMIT= 1;
20674DELETE FROM t1 WHERE f_charbig = 'was inserted';
20675COMMIT WORK;
20676UPDATE t1 SET f_charbig = REPEAT('b', 1000);
20677
20678# check special-1 success: 	1
20679UPDATE t1 SET f_charbig = '';
20680
20681# check special-2 success: 	1
20682UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
20683INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
20684SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
20685WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20686INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20687SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20688'just inserted' FROM t0_template
20689WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20690CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
20691BEGIN
20692UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20693f_charbig = 'updated by trigger'
20694      WHERE f_int1 = new.f_int1;
20695END|
20696INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20697SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
20698WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20699
20700# check trigger-1 success: 	1
20701DROP TRIGGER trg_1;
20702UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20703f_int2 = CAST(f_char1 AS SIGNED INT),
20704f_charbig = 'just inserted'
20705   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20706DELETE FROM t0_aux
20707WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20708INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20709SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20710'just inserted' FROM t0_template
20711WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20712CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
20713BEGIN
20714UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20715f_charbig = 'updated by trigger'
20716      WHERE f_int1 = new.f_int1;
20717END|
20718INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20719SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
20720WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20721
20722# check trigger-2 success: 	1
20723DROP TRIGGER trg_1;
20724UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20725f_int2 = CAST(f_char1 AS SIGNED INT),
20726f_charbig = 'just inserted'
20727   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20728DELETE FROM t0_aux
20729WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20730INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20731SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20732'just inserted' FROM t0_template
20733WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20734CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
20735BEGIN
20736UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20737f_charbig = 'updated by trigger'
20738      WHERE f_int1 = new.f_int1;
20739END|
20740UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
20741WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20742
20743# check trigger-3 success: 	1
20744DROP TRIGGER trg_1;
20745UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20746f_int2 = CAST(f_char1 AS SIGNED INT),
20747f_charbig = 'just inserted'
20748   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20749DELETE FROM t0_aux
20750WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20751INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20752SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20753'just inserted' FROM t0_template
20754WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20755CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
20756BEGIN
20757UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20758f_charbig = 'updated by trigger'
20759      WHERE f_int1 = - old.f_int1;
20760END|
20761UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
20762WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20763
20764# check trigger-4 success: 	1
20765DROP TRIGGER trg_1;
20766UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20767f_int2 = CAST(f_char1 AS SIGNED INT),
20768f_charbig = 'just inserted'
20769   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20770DELETE FROM t0_aux
20771WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20772INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20773SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20774'just inserted' FROM t0_template
20775WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20776CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
20777BEGIN
20778UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20779f_charbig = 'updated by trigger'
20780      WHERE f_int1 = new.f_int1;
20781END|
20782UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
20783WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20784
20785# check trigger-5 success: 	1
20786DROP TRIGGER trg_1;
20787UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20788f_int2 = CAST(f_char1 AS SIGNED INT),
20789f_charbig = 'just inserted'
20790   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20791DELETE FROM t0_aux
20792WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20793INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20794SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20795'just inserted' FROM t0_template
20796WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20797CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
20798BEGIN
20799UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20800f_charbig = 'updated by trigger'
20801      WHERE f_int1 = - old.f_int1;
20802END|
20803UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
20804WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20805
20806# check trigger-6 success: 	1
20807DROP TRIGGER trg_1;
20808UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20809f_int2 = CAST(f_char1 AS SIGNED INT),
20810f_charbig = 'just inserted'
20811   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20812DELETE FROM t0_aux
20813WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20814INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20815SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20816'just inserted' FROM t0_template
20817WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20818CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
20819BEGIN
20820UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20821f_charbig = 'updated by trigger'
20822      WHERE f_int1 = - old.f_int1;
20823END|
20824DELETE FROM t0_aux
20825WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20826
20827# check trigger-7 success: 	1
20828DROP TRIGGER trg_1;
20829UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20830f_int2 = CAST(f_char1 AS SIGNED INT),
20831f_charbig = 'just inserted'
20832   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20833DELETE FROM t0_aux
20834WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20835INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20836SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20837'just inserted' FROM t0_template
20838WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20839CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
20840BEGIN
20841UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20842f_charbig = 'updated by trigger'
20843      WHERE f_int1 = - old.f_int1;
20844END|
20845DELETE FROM t0_aux
20846WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20847
20848# check trigger-8 success: 	1
20849DROP TRIGGER trg_1;
20850UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20851f_int2 = CAST(f_char1 AS SIGNED INT),
20852f_charbig = 'just inserted'
20853   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20854DELETE FROM t0_aux
20855WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20856DELETE FROM t1
20857WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20858CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
20859BEGIN
20860SET new.f_int1 = old.f_int1 + @max_row,
20861new.f_int2 = old.f_int2 - @max_row,
20862new.f_charbig = '####updated per update trigger####';
20863END|
20864UPDATE t1
20865SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
20866f_charbig = '####updated per update statement itself####';
20867Warnings:
20868Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
20869
20870# check trigger-9 success: 	1
20871DROP TRIGGER trg_2;
20872UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20873f_int2 = CAST(f_char1 AS SIGNED INT),
20874f_charbig = CONCAT('===',f_char1,'===');
20875Warnings:
20876Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
20877CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
20878BEGIN
20879SET new.f_int1 = new.f_int1 + @max_row,
20880new.f_int2 = new.f_int2 - @max_row,
20881new.f_charbig = '####updated per update trigger####';
20882END|
20883UPDATE t1
20884SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
20885f_charbig = '####updated per update statement itself####';
20886Warnings:
20887Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
20888
20889# check trigger-10 success: 	1
20890DROP TRIGGER trg_2;
20891UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20892f_int2 = CAST(f_char1 AS SIGNED INT),
20893f_charbig = CONCAT('===',f_char1,'===');
20894Warnings:
20895Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
20896CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
20897BEGIN
20898SET new.f_int1 = @my_max1 + @counter,
20899new.f_int2 = @my_min2 - @counter,
20900new.f_charbig = '####updated per insert trigger####';
20901SET @counter = @counter + 1;
20902END|
20903SET @counter = 1;
20904SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
20905Warnings:
20906Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
20907INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20908SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
20909CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
20910WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
20911ORDER BY f_int1;
20912DROP TRIGGER trg_3;
20913
20914# check trigger-11 success: 	1
20915Warnings:
20916Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
20917DELETE FROM t1
20918WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
20919AND f_int2 <> CAST(f_char1 AS SIGNED INT)
20920AND f_charbig = '####updated per insert trigger####';
20921CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
20922BEGIN
20923SET new.f_int1 = @my_max1 + @counter,
20924new.f_int2 = @my_min2 - @counter,
20925new.f_charbig = '####updated per insert trigger####';
20926SET @counter = @counter + 1;
20927END|
20928SET @counter = 1;
20929SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
20930Warnings:
20931Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
20932INSERT INTO t1 (f_char1, f_char2, f_charbig)
20933SELECT CAST(f_int1 AS CHAR),
20934CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
20935WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
20936ORDER BY f_int1;
20937DROP TRIGGER trg_3;
20938
20939# check trigger-12 success: 	1
20940Warnings:
20941Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
20942DELETE FROM t1
20943WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
20944AND f_int2 <> CAST(f_char1 AS SIGNED INT)
20945AND f_charbig = '####updated per insert trigger####';
20946ANALYZE  TABLE t1;
20947Table	Op	Msg_type	Msg_text
20948test.t1	analyze	status	OK
20949test.t1	analyze	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
20950CHECK    TABLE t1 EXTENDED;
20951Table	Op	Msg_type	Msg_text
20952test.t1	check	status	OK
20953test.t1	check	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
20954CHECKSUM TABLE t1 EXTENDED;
20955Table	Checksum
20956test.t1	<some_value>
20957OPTIMIZE TABLE t1;
20958Table	Op	Msg_type	Msg_text
20959test.t1	optimize	status	OK
20960test.t1	optimize	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
20961# check layout success:    1
20962REPAIR   TABLE t1 EXTENDED;
20963Table	Op	Msg_type	Msg_text
20964test.t1	repair	status	OK
20965test.t1	repair	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
20966# check layout success:    1
20967TRUNCATE t1;
20968Warnings:
20969Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
20970
20971# check TRUNCATE success: 	1
20972# check layout success:    1
20973# End usability test (inc/partition_check.inc)
20974DROP TABLE t1;
20975CREATE TABLE t1 (
20976f_int1 INTEGER,
20977f_int2 INTEGER,
20978f_char1 CHAR(20),
20979f_char2 CHAR(20),
20980f_charbig VARCHAR(1000)
20981, UNIQUE INDEX uidx (f_int1,f_int2)
20982)
20983PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int2 + 1)
20984(PARTITION part1 VALUES IN (0)
20985(SUBPARTITION sp11, SUBPARTITION sp12),
20986PARTITION part2 VALUES IN (1)
20987(SUBPARTITION sp21, SUBPARTITION sp22),
20988PARTITION part3 VALUES IN (2)
20989(SUBPARTITION sp31, SUBPARTITION sp32),
20990PARTITION part4 VALUES IN (NULL)
20991(SUBPARTITION sp41, SUBPARTITION sp42));
20992Warnings:
20993Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
20994INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
20995SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
20996WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
20997Warnings:
20998Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
20999ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
21000Warnings:
21001Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
21002INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
21003SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
21004WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
21005Warnings:
21006Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
21007# Start usability test (inc/partition_check.inc)
21008create_command
21009SHOW CREATE TABLE t1;
21010Table	Create Table
21011t1	CREATE TABLE `t1` (
21012  `f_int1` mediumint(9) DEFAULT NULL,
21013  `f_int2` mediumint(9) DEFAULT NULL,
21014  `f_char1` char(20) DEFAULT NULL,
21015  `f_char2` char(20) DEFAULT NULL,
21016  `f_charbig` varchar(1000) DEFAULT NULL,
21017  UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
21018) ENGINE=MyISAM DEFAULT CHARSET=latin1
21019/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
21020SUBPARTITION BY HASH (f_int2 + 1)
21021(PARTITION part1 VALUES IN (0)
21022 (SUBPARTITION sp11 ENGINE = MyISAM,
21023  SUBPARTITION sp12 ENGINE = MyISAM),
21024 PARTITION part2 VALUES IN (1)
21025 (SUBPARTITION sp21 ENGINE = MyISAM,
21026  SUBPARTITION sp22 ENGINE = MyISAM),
21027 PARTITION part3 VALUES IN (2)
21028 (SUBPARTITION sp31 ENGINE = MyISAM,
21029  SUBPARTITION sp32 ENGINE = MyISAM),
21030 PARTITION part4 VALUES IN (NULL)
21031 (SUBPARTITION sp41 ENGINE = MyISAM,
21032  SUBPARTITION sp42 ENGINE = MyISAM)) */
21033
21034unified filelist
21035t1#P#part1#SP#sp11.MYD
21036t1#P#part1#SP#sp11.MYI
21037t1#P#part1#SP#sp12.MYD
21038t1#P#part1#SP#sp12.MYI
21039t1#P#part2#SP#sp21.MYD
21040t1#P#part2#SP#sp21.MYI
21041t1#P#part2#SP#sp22.MYD
21042t1#P#part2#SP#sp22.MYI
21043t1#P#part3#SP#sp31.MYD
21044t1#P#part3#SP#sp31.MYI
21045t1#P#part3#SP#sp32.MYD
21046t1#P#part3#SP#sp32.MYI
21047t1#P#part4#SP#sp41.MYD
21048t1#P#part4#SP#sp41.MYI
21049t1#P#part4#SP#sp42.MYD
21050t1#P#part4#SP#sp42.MYI
21051t1.frm
21052t1.par
21053
21054# check prerequisites-1 success:    1
21055# check COUNT(*) success:    1
21056# check MIN/MAX(f_int1) success:    1
21057# check MIN/MAX(f_int2) success:    1
21058INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21059SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
21060CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
21061WHERE f_int1 IN (2,3);
21062ERROR 23000: Duplicate entry '2-2' for key 'uidx'
21063# check prerequisites-3 success:    1
21064# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
21065INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21066SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
21067CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
21068WHERE f_int1 IN (2,3);
21069DELETE FROM t1 WHERE f_charbig = 'delete me';
21070INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21071SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
21072CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
21073WHERE f_int1 IN (2,3);
21074DELETE FROM t1 WHERE f_charbig = 'delete me';
21075# check read via f_int1 success: 1
21076# check read via f_int2 success: 1
21077
21078# check multiple-1 success: 	1
21079DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
21080
21081# check multiple-2 success: 	1
21082INSERT INTO t1 SELECT * FROM t0_template
21083WHERE MOD(f_int1,3) = 0;
21084
21085# check multiple-3 success: 	1
21086UPDATE t1 SET f_int1 = f_int1 + @max_row
21087WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
21088AND @max_row_div2 + @max_row_div4;
21089
21090# check multiple-4 success: 	1
21091DELETE FROM t1
21092WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
21093AND @max_row_div2 + @max_row_div4 + @max_row;
21094
21095# check multiple-5 success: 	1
21096SELECT COUNT(*) INTO @try_count FROM t0_template
21097WHERE MOD(f_int1,3) = 0
21098AND f_int1 BETWEEN @max_row_div2 AND @max_row;
21099SELECT COUNT(*) INTO @clash_count
21100FROM t1 INNER JOIN t0_template USING(f_int1)
21101WHERE MOD(f_int1,3) = 0
21102AND f_int1 BETWEEN @max_row_div2 AND @max_row;
21103SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
21104INSERT INTO t1
21105SET f_int1 = @cur_value , f_int2 = @cur_value,
21106f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
21107f_charbig = '#SINGLE#';
21108
21109# check single-1 success: 	1
21110SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
21111INSERT INTO t1
21112SET f_int1 = @cur_value , f_int2 = @cur_value,
21113f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
21114f_charbig = '#SINGLE#';
21115
21116# check single-2 success: 	1
21117SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
21118SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
21119UPDATE t1 SET f_int1 = @cur_value2
21120WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
21121
21122# check single-3 success: 	1
21123SET @cur_value1= -1;
21124SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
21125UPDATE t1 SET f_int1 = @cur_value1
21126WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
21127
21128# check single-4 success: 	1
21129SELECT MAX(f_int1) INTO @cur_value FROM t1;
21130DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
21131
21132# check single-5 success: 	1
21133DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
21134
21135# check single-6 success: 	1
21136INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
21137Warnings:
21138Warning	1264	Out of range value for column 'f_int1' at row 1
21139Warning	1264	Out of range value for column 'f_int2' at row 1
21140
21141# check single-7 success: 	1
21142DELETE FROM t1 WHERE f_charbig = '#2147483647##';
21143DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
21144INSERT t1 SET f_int1 = 0 , f_int2 = 0,
21145f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
21146f_charbig = '#NULL#';
21147INSERT INTO t1
21148SET f_int1 = NULL , f_int2 = -@max_row,
21149f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
21150f_charbig = '#NULL#';
21151# check null success:    1
21152
21153# check null-1 success: 	1
21154UPDATE t1 SET f_int1 = -@max_row
21155WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
21156AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
21157
21158# check null-2 success: 	1
21159UPDATE t1 SET f_int1 = NULL
21160WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
21161AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
21162
21163# check null-3 success: 	1
21164DELETE FROM t1
21165WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
21166AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
21167
21168# check null-4 success: 	1
21169DELETE FROM t1
21170WHERE f_int1 = 0 AND f_int2 = 0
21171AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
21172AND f_charbig = '#NULL#';
21173INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21174SELECT f_int1, f_int1, '', '', 'was inserted'
21175   FROM t0_template source_tab
21176WHERE MOD(f_int1,3) = 0
21177AND f_int1 BETWEEN @max_row_div2 AND @max_row
21178ON DUPLICATE KEY
21179UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
21180f_int2 = 2 * @max_row + source_tab.f_int1,
21181f_charbig = 'was updated';
21182
21183# check unique-1-a success: 	1
21184
21185# check unique-1-b success: 	1
21186DELETE FROM t1 WHERE f_charbig = 'was inserted';
21187UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21188f_int2 = CAST(f_char1 AS SIGNED INT),
21189f_charbig = CONCAT('===',f_char1,'===')
21190WHERE f_charbig = 'was updated';
21191REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21192SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
21193   FROM t0_template source_tab
21194WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
21195
21196# check replace success: 	1
21197DELETE FROM t1
21198WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
21199DELETE FROM t1
21200WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
21201f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
21202UPDATE t1 SET f_int2 = f_int1,
21203f_char1 = CAST(f_int1 AS CHAR),
21204f_char2 = CAST(f_int1 AS CHAR),
21205f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
21206WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
21207SET AUTOCOMMIT= 0;
21208INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21209SELECT f_int1, f_int1, '', '', 'was inserted'
21210FROM t0_template source_tab
21211WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
21212
21213# check transactions-1 success: 	1
21214COMMIT WORK;
21215
21216# check transactions-2 success: 	1
21217ROLLBACK WORK;
21218
21219# check transactions-3 success: 	1
21220DELETE FROM t1 WHERE f_charbig = 'was inserted';
21221COMMIT WORK;
21222ROLLBACK WORK;
21223
21224# check transactions-4 success: 	1
21225INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21226SELECT f_int1, f_int1, '', '', 'was inserted'
21227FROM t0_template source_tab
21228WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
21229
21230# check transactions-5 success: 	1
21231ROLLBACK WORK;
21232Warnings:
21233Warning	1196	Some non-transactional changed tables couldn't be rolled back
21234
21235# check transactions-6 success: 	1
21236# INFO: Storage engine used for t1 seems to be not transactional.
21237COMMIT;
21238
21239# check transactions-7 success: 	1
21240DELETE FROM t1 WHERE f_charbig = 'was inserted';
21241COMMIT WORK;
21242SET @@session.sql_mode = 'traditional';
21243Warnings:
21244Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
21245SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
21246INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21247SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
21248'', '', 'was inserted' FROM t0_template
21249WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
21250ERROR 22012: Division by 0
21251COMMIT;
21252
21253# check transactions-8 success: 	1
21254# INFO: Storage engine used for t1 seems to be unable to revert
21255#       changes made by the failing statement.
21256SET @@session.sql_mode = '';
21257Warnings:
21258Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
21259SET AUTOCOMMIT= 1;
21260DELETE FROM t1 WHERE f_charbig = 'was inserted';
21261COMMIT WORK;
21262UPDATE t1 SET f_charbig = REPEAT('b', 1000);
21263
21264# check special-1 success: 	1
21265UPDATE t1 SET f_charbig = '';
21266
21267# check special-2 success: 	1
21268UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
21269INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
21270SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
21271WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21272INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21273SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21274'just inserted' FROM t0_template
21275WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21276CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
21277BEGIN
21278UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21279f_charbig = 'updated by trigger'
21280      WHERE f_int1 = new.f_int1;
21281END|
21282INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21283SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
21284WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21285
21286# check trigger-1 success: 	1
21287DROP TRIGGER trg_1;
21288UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21289f_int2 = CAST(f_char1 AS SIGNED INT),
21290f_charbig = 'just inserted'
21291   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21292DELETE FROM t0_aux
21293WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21294INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21295SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21296'just inserted' FROM t0_template
21297WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21298CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
21299BEGIN
21300UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21301f_charbig = 'updated by trigger'
21302      WHERE f_int1 = new.f_int1;
21303END|
21304INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21305SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
21306WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21307
21308# check trigger-2 success: 	1
21309DROP TRIGGER trg_1;
21310UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21311f_int2 = CAST(f_char1 AS SIGNED INT),
21312f_charbig = 'just inserted'
21313   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21314DELETE FROM t0_aux
21315WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21316INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21317SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21318'just inserted' FROM t0_template
21319WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21320CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
21321BEGIN
21322UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21323f_charbig = 'updated by trigger'
21324      WHERE f_int1 = new.f_int1;
21325END|
21326UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
21327WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21328
21329# check trigger-3 success: 	1
21330DROP TRIGGER trg_1;
21331UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21332f_int2 = CAST(f_char1 AS SIGNED INT),
21333f_charbig = 'just inserted'
21334   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21335DELETE FROM t0_aux
21336WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21337INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21338SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21339'just inserted' FROM t0_template
21340WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21341CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
21342BEGIN
21343UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21344f_charbig = 'updated by trigger'
21345      WHERE f_int1 = - old.f_int1;
21346END|
21347UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
21348WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21349
21350# check trigger-4 success: 	1
21351DROP TRIGGER trg_1;
21352UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21353f_int2 = CAST(f_char1 AS SIGNED INT),
21354f_charbig = 'just inserted'
21355   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21356DELETE FROM t0_aux
21357WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21358INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21359SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21360'just inserted' FROM t0_template
21361WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21362CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
21363BEGIN
21364UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21365f_charbig = 'updated by trigger'
21366      WHERE f_int1 = new.f_int1;
21367END|
21368UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
21369WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21370
21371# check trigger-5 success: 	1
21372DROP TRIGGER trg_1;
21373UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21374f_int2 = CAST(f_char1 AS SIGNED INT),
21375f_charbig = 'just inserted'
21376   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21377DELETE FROM t0_aux
21378WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21379INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21380SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21381'just inserted' FROM t0_template
21382WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21383CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
21384BEGIN
21385UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21386f_charbig = 'updated by trigger'
21387      WHERE f_int1 = - old.f_int1;
21388END|
21389UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
21390WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21391
21392# check trigger-6 success: 	1
21393DROP TRIGGER trg_1;
21394UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21395f_int2 = CAST(f_char1 AS SIGNED INT),
21396f_charbig = 'just inserted'
21397   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21398DELETE FROM t0_aux
21399WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21400INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21401SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21402'just inserted' FROM t0_template
21403WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21404CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
21405BEGIN
21406UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21407f_charbig = 'updated by trigger'
21408      WHERE f_int1 = - old.f_int1;
21409END|
21410DELETE FROM t0_aux
21411WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21412
21413# check trigger-7 success: 	1
21414DROP TRIGGER trg_1;
21415UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21416f_int2 = CAST(f_char1 AS SIGNED INT),
21417f_charbig = 'just inserted'
21418   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21419DELETE FROM t0_aux
21420WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21421INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21422SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21423'just inserted' FROM t0_template
21424WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21425CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
21426BEGIN
21427UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21428f_charbig = 'updated by trigger'
21429      WHERE f_int1 = - old.f_int1;
21430END|
21431DELETE FROM t0_aux
21432WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21433
21434# check trigger-8 success: 	1
21435DROP TRIGGER trg_1;
21436UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21437f_int2 = CAST(f_char1 AS SIGNED INT),
21438f_charbig = 'just inserted'
21439   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21440DELETE FROM t0_aux
21441WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21442DELETE FROM t1
21443WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21444CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
21445BEGIN
21446SET new.f_int1 = old.f_int1 + @max_row,
21447new.f_int2 = old.f_int2 - @max_row,
21448new.f_charbig = '####updated per update trigger####';
21449END|
21450UPDATE t1
21451SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
21452f_charbig = '####updated per update statement itself####';
21453Warnings:
21454Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
21455
21456# check trigger-9 success: 	1
21457DROP TRIGGER trg_2;
21458UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21459f_int2 = CAST(f_char1 AS SIGNED INT),
21460f_charbig = CONCAT('===',f_char1,'===');
21461Warnings:
21462Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
21463CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
21464BEGIN
21465SET new.f_int1 = new.f_int1 + @max_row,
21466new.f_int2 = new.f_int2 - @max_row,
21467new.f_charbig = '####updated per update trigger####';
21468END|
21469UPDATE t1
21470SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
21471f_charbig = '####updated per update statement itself####';
21472Warnings:
21473Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
21474
21475# check trigger-10 success: 	1
21476DROP TRIGGER trg_2;
21477UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21478f_int2 = CAST(f_char1 AS SIGNED INT),
21479f_charbig = CONCAT('===',f_char1,'===');
21480Warnings:
21481Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
21482CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
21483BEGIN
21484SET new.f_int1 = @my_max1 + @counter,
21485new.f_int2 = @my_min2 - @counter,
21486new.f_charbig = '####updated per insert trigger####';
21487SET @counter = @counter + 1;
21488END|
21489SET @counter = 1;
21490SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
21491Warnings:
21492Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
21493INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21494SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
21495CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
21496WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
21497ORDER BY f_int1;
21498DROP TRIGGER trg_3;
21499
21500# check trigger-11 success: 	1
21501Warnings:
21502Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
21503DELETE FROM t1
21504WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
21505AND f_int2 <> CAST(f_char1 AS SIGNED INT)
21506AND f_charbig = '####updated per insert trigger####';
21507CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
21508BEGIN
21509SET new.f_int1 = @my_max1 + @counter,
21510new.f_int2 = @my_min2 - @counter,
21511new.f_charbig = '####updated per insert trigger####';
21512SET @counter = @counter + 1;
21513END|
21514SET @counter = 1;
21515SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
21516Warnings:
21517Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
21518INSERT INTO t1 (f_char1, f_char2, f_charbig)
21519SELECT CAST(f_int1 AS CHAR),
21520CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
21521WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
21522ORDER BY f_int1;
21523DROP TRIGGER trg_3;
21524
21525# check trigger-12 success: 	1
21526Warnings:
21527Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
21528DELETE FROM t1
21529WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
21530AND f_int2 <> CAST(f_char1 AS SIGNED INT)
21531AND f_charbig = '####updated per insert trigger####';
21532ANALYZE  TABLE t1;
21533Table	Op	Msg_type	Msg_text
21534test.t1	analyze	status	OK
21535test.t1	analyze	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
21536CHECK    TABLE t1 EXTENDED;
21537Table	Op	Msg_type	Msg_text
21538test.t1	check	status	OK
21539test.t1	check	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
21540CHECKSUM TABLE t1 EXTENDED;
21541Table	Checksum
21542test.t1	<some_value>
21543OPTIMIZE TABLE t1;
21544Table	Op	Msg_type	Msg_text
21545test.t1	optimize	status	OK
21546test.t1	optimize	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
21547# check layout success:    1
21548REPAIR   TABLE t1 EXTENDED;
21549Table	Op	Msg_type	Msg_text
21550test.t1	repair	status	OK
21551test.t1	repair	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
21552# check layout success:    1
21553TRUNCATE t1;
21554Warnings:
21555Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
21556
21557# check TRUNCATE success: 	1
21558# check layout success:    1
21559# End usability test (inc/partition_check.inc)
21560DROP TABLE t1;
21561CREATE TABLE t1 (
21562f_int1 INTEGER,
21563f_int2 INTEGER,
21564f_char1 CHAR(20),
21565f_char2 CHAR(20),
21566f_charbig VARCHAR(1000)
21567, UNIQUE INDEX uidx (f_int1,f_int2)
21568)
21569PARTITION BY LIST(ABS(MOD(f_int1,2)))
21570SUBPARTITION BY KEY(f_int2)  SUBPARTITIONS 3
21571(PARTITION part1 VALUES IN (0),
21572PARTITION part2 VALUES IN (1),
21573PARTITION part3 VALUES IN (NULL));
21574Warnings:
21575Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
21576INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
21577SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
21578WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
21579Warnings:
21580Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
21581ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
21582Warnings:
21583Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
21584INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
21585SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
21586WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
21587Warnings:
21588Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
21589# Start usability test (inc/partition_check.inc)
21590create_command
21591SHOW CREATE TABLE t1;
21592Table	Create Table
21593t1	CREATE TABLE `t1` (
21594  `f_int1` mediumint(9) DEFAULT NULL,
21595  `f_int2` mediumint(9) DEFAULT NULL,
21596  `f_char1` char(20) DEFAULT NULL,
21597  `f_char2` char(20) DEFAULT NULL,
21598  `f_charbig` varchar(1000) DEFAULT NULL,
21599  UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
21600) ENGINE=MyISAM DEFAULT CHARSET=latin1
21601/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
21602SUBPARTITION BY KEY (f_int2)
21603SUBPARTITIONS 3
21604(PARTITION part1 VALUES IN (0) ENGINE = MyISAM,
21605 PARTITION part2 VALUES IN (1) ENGINE = MyISAM,
21606 PARTITION part3 VALUES IN (NULL) ENGINE = MyISAM) */
21607
21608unified filelist
21609t1#P#part1#SP#part1sp0.MYD
21610t1#P#part1#SP#part1sp0.MYI
21611t1#P#part1#SP#part1sp1.MYD
21612t1#P#part1#SP#part1sp1.MYI
21613t1#P#part1#SP#part1sp2.MYD
21614t1#P#part1#SP#part1sp2.MYI
21615t1#P#part2#SP#part2sp0.MYD
21616t1#P#part2#SP#part2sp0.MYI
21617t1#P#part2#SP#part2sp1.MYD
21618t1#P#part2#SP#part2sp1.MYI
21619t1#P#part2#SP#part2sp2.MYD
21620t1#P#part2#SP#part2sp2.MYI
21621t1#P#part3#SP#part3sp0.MYD
21622t1#P#part3#SP#part3sp0.MYI
21623t1#P#part3#SP#part3sp1.MYD
21624t1#P#part3#SP#part3sp1.MYI
21625t1#P#part3#SP#part3sp2.MYD
21626t1#P#part3#SP#part3sp2.MYI
21627t1.frm
21628t1.par
21629
21630# check prerequisites-1 success:    1
21631# check COUNT(*) success:    1
21632# check MIN/MAX(f_int1) success:    1
21633# check MIN/MAX(f_int2) success:    1
21634INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21635SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
21636CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
21637WHERE f_int1 IN (2,3);
21638ERROR 23000: Duplicate entry '2-2' for key 'uidx'
21639# check prerequisites-3 success:    1
21640# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
21641INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21642SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
21643CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
21644WHERE f_int1 IN (2,3);
21645DELETE FROM t1 WHERE f_charbig = 'delete me';
21646INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21647SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
21648CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
21649WHERE f_int1 IN (2,3);
21650DELETE FROM t1 WHERE f_charbig = 'delete me';
21651# check read via f_int1 success: 1
21652# check read via f_int2 success: 1
21653
21654# check multiple-1 success: 	1
21655DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
21656
21657# check multiple-2 success: 	1
21658INSERT INTO t1 SELECT * FROM t0_template
21659WHERE MOD(f_int1,3) = 0;
21660
21661# check multiple-3 success: 	1
21662UPDATE t1 SET f_int1 = f_int1 + @max_row
21663WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
21664AND @max_row_div2 + @max_row_div4;
21665
21666# check multiple-4 success: 	1
21667DELETE FROM t1
21668WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
21669AND @max_row_div2 + @max_row_div4 + @max_row;
21670
21671# check multiple-5 success: 	1
21672SELECT COUNT(*) INTO @try_count FROM t0_template
21673WHERE MOD(f_int1,3) = 0
21674AND f_int1 BETWEEN @max_row_div2 AND @max_row;
21675SELECT COUNT(*) INTO @clash_count
21676FROM t1 INNER JOIN t0_template USING(f_int1)
21677WHERE MOD(f_int1,3) = 0
21678AND f_int1 BETWEEN @max_row_div2 AND @max_row;
21679SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
21680INSERT INTO t1
21681SET f_int1 = @cur_value , f_int2 = @cur_value,
21682f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
21683f_charbig = '#SINGLE#';
21684
21685# check single-1 success: 	1
21686SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
21687INSERT INTO t1
21688SET f_int1 = @cur_value , f_int2 = @cur_value,
21689f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
21690f_charbig = '#SINGLE#';
21691
21692# check single-2 success: 	1
21693SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
21694SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
21695UPDATE t1 SET f_int1 = @cur_value2
21696WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
21697
21698# check single-3 success: 	1
21699SET @cur_value1= -1;
21700SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
21701UPDATE t1 SET f_int1 = @cur_value1
21702WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
21703
21704# check single-4 success: 	1
21705SELECT MAX(f_int1) INTO @cur_value FROM t1;
21706DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
21707
21708# check single-5 success: 	1
21709DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
21710
21711# check single-6 success: 	1
21712INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
21713Warnings:
21714Warning	1264	Out of range value for column 'f_int1' at row 1
21715Warning	1264	Out of range value for column 'f_int2' at row 1
21716
21717# check single-7 success: 	1
21718DELETE FROM t1 WHERE f_charbig = '#2147483647##';
21719DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
21720INSERT t1 SET f_int1 = 0 , f_int2 = 0,
21721f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
21722f_charbig = '#NULL#';
21723INSERT INTO t1
21724SET f_int1 = NULL , f_int2 = -@max_row,
21725f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
21726f_charbig = '#NULL#';
21727# check null success:    1
21728
21729# check null-1 success: 	1
21730UPDATE t1 SET f_int1 = -@max_row
21731WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
21732AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
21733
21734# check null-2 success: 	1
21735UPDATE t1 SET f_int1 = NULL
21736WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
21737AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
21738
21739# check null-3 success: 	1
21740DELETE FROM t1
21741WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
21742AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
21743
21744# check null-4 success: 	1
21745DELETE FROM t1
21746WHERE f_int1 = 0 AND f_int2 = 0
21747AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
21748AND f_charbig = '#NULL#';
21749INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21750SELECT f_int1, f_int1, '', '', 'was inserted'
21751   FROM t0_template source_tab
21752WHERE MOD(f_int1,3) = 0
21753AND f_int1 BETWEEN @max_row_div2 AND @max_row
21754ON DUPLICATE KEY
21755UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
21756f_int2 = 2 * @max_row + source_tab.f_int1,
21757f_charbig = 'was updated';
21758
21759# check unique-1-a success: 	1
21760
21761# check unique-1-b success: 	1
21762DELETE FROM t1 WHERE f_charbig = 'was inserted';
21763UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21764f_int2 = CAST(f_char1 AS SIGNED INT),
21765f_charbig = CONCAT('===',f_char1,'===')
21766WHERE f_charbig = 'was updated';
21767REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21768SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
21769   FROM t0_template source_tab
21770WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
21771
21772# check replace success: 	1
21773DELETE FROM t1
21774WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
21775DELETE FROM t1
21776WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
21777f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
21778UPDATE t1 SET f_int2 = f_int1,
21779f_char1 = CAST(f_int1 AS CHAR),
21780f_char2 = CAST(f_int1 AS CHAR),
21781f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
21782WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
21783SET AUTOCOMMIT= 0;
21784INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21785SELECT f_int1, f_int1, '', '', 'was inserted'
21786FROM t0_template source_tab
21787WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
21788
21789# check transactions-1 success: 	1
21790COMMIT WORK;
21791
21792# check transactions-2 success: 	1
21793ROLLBACK WORK;
21794
21795# check transactions-3 success: 	1
21796DELETE FROM t1 WHERE f_charbig = 'was inserted';
21797COMMIT WORK;
21798ROLLBACK WORK;
21799
21800# check transactions-4 success: 	1
21801INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21802SELECT f_int1, f_int1, '', '', 'was inserted'
21803FROM t0_template source_tab
21804WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
21805
21806# check transactions-5 success: 	1
21807ROLLBACK WORK;
21808Warnings:
21809Warning	1196	Some non-transactional changed tables couldn't be rolled back
21810
21811# check transactions-6 success: 	1
21812# INFO: Storage engine used for t1 seems to be not transactional.
21813COMMIT;
21814
21815# check transactions-7 success: 	1
21816DELETE FROM t1 WHERE f_charbig = 'was inserted';
21817COMMIT WORK;
21818SET @@session.sql_mode = 'traditional';
21819Warnings:
21820Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
21821SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
21822INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21823SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
21824'', '', 'was inserted' FROM t0_template
21825WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
21826ERROR 22012: Division by 0
21827COMMIT;
21828
21829# check transactions-8 success: 	1
21830# INFO: Storage engine used for t1 seems to be unable to revert
21831#       changes made by the failing statement.
21832SET @@session.sql_mode = '';
21833Warnings:
21834Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
21835SET AUTOCOMMIT= 1;
21836DELETE FROM t1 WHERE f_charbig = 'was inserted';
21837COMMIT WORK;
21838UPDATE t1 SET f_charbig = REPEAT('b', 1000);
21839
21840# check special-1 success: 	1
21841UPDATE t1 SET f_charbig = '';
21842
21843# check special-2 success: 	1
21844UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
21845INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
21846SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
21847WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21848INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21849SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21850'just inserted' FROM t0_template
21851WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21852CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
21853BEGIN
21854UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21855f_charbig = 'updated by trigger'
21856      WHERE f_int1 = new.f_int1;
21857END|
21858INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21859SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
21860WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21861
21862# check trigger-1 success: 	1
21863DROP TRIGGER trg_1;
21864UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21865f_int2 = CAST(f_char1 AS SIGNED INT),
21866f_charbig = 'just inserted'
21867   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21868DELETE FROM t0_aux
21869WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21870INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21871SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21872'just inserted' FROM t0_template
21873WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21874CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
21875BEGIN
21876UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21877f_charbig = 'updated by trigger'
21878      WHERE f_int1 = new.f_int1;
21879END|
21880INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21881SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
21882WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21883
21884# check trigger-2 success: 	1
21885DROP TRIGGER trg_1;
21886UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21887f_int2 = CAST(f_char1 AS SIGNED INT),
21888f_charbig = 'just inserted'
21889   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21890DELETE FROM t0_aux
21891WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21892INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21893SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21894'just inserted' FROM t0_template
21895WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21896CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
21897BEGIN
21898UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21899f_charbig = 'updated by trigger'
21900      WHERE f_int1 = new.f_int1;
21901END|
21902UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
21903WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21904
21905# check trigger-3 success: 	1
21906DROP TRIGGER trg_1;
21907UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21908f_int2 = CAST(f_char1 AS SIGNED INT),
21909f_charbig = 'just inserted'
21910   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21911DELETE FROM t0_aux
21912WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21913INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21914SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21915'just inserted' FROM t0_template
21916WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21917CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
21918BEGIN
21919UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21920f_charbig = 'updated by trigger'
21921      WHERE f_int1 = - old.f_int1;
21922END|
21923UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
21924WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21925
21926# check trigger-4 success: 	1
21927DROP TRIGGER trg_1;
21928UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21929f_int2 = CAST(f_char1 AS SIGNED INT),
21930f_charbig = 'just inserted'
21931   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21932DELETE FROM t0_aux
21933WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21934INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21935SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21936'just inserted' FROM t0_template
21937WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21938CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
21939BEGIN
21940UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21941f_charbig = 'updated by trigger'
21942      WHERE f_int1 = new.f_int1;
21943END|
21944UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
21945WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21946
21947# check trigger-5 success: 	1
21948DROP TRIGGER trg_1;
21949UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21950f_int2 = CAST(f_char1 AS SIGNED INT),
21951f_charbig = 'just inserted'
21952   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21953DELETE FROM t0_aux
21954WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21955INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21956SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21957'just inserted' FROM t0_template
21958WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21959CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
21960BEGIN
21961UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21962f_charbig = 'updated by trigger'
21963      WHERE f_int1 = - old.f_int1;
21964END|
21965UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
21966WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21967
21968# check trigger-6 success: 	1
21969DROP TRIGGER trg_1;
21970UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21971f_int2 = CAST(f_char1 AS SIGNED INT),
21972f_charbig = 'just inserted'
21973   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21974DELETE FROM t0_aux
21975WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21976INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21977SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21978'just inserted' FROM t0_template
21979WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21980CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
21981BEGIN
21982UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21983f_charbig = 'updated by trigger'
21984      WHERE f_int1 = - old.f_int1;
21985END|
21986DELETE FROM t0_aux
21987WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21988
21989# check trigger-7 success: 	1
21990DROP TRIGGER trg_1;
21991UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21992f_int2 = CAST(f_char1 AS SIGNED INT),
21993f_charbig = 'just inserted'
21994   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21995DELETE FROM t0_aux
21996WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21997INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21998SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21999'just inserted' FROM t0_template
22000WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22001CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
22002BEGIN
22003UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22004f_charbig = 'updated by trigger'
22005      WHERE f_int1 = - old.f_int1;
22006END|
22007DELETE FROM t0_aux
22008WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22009
22010# check trigger-8 success: 	1
22011DROP TRIGGER trg_1;
22012UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22013f_int2 = CAST(f_char1 AS SIGNED INT),
22014f_charbig = 'just inserted'
22015   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22016DELETE FROM t0_aux
22017WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22018DELETE FROM t1
22019WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22020CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
22021BEGIN
22022SET new.f_int1 = old.f_int1 + @max_row,
22023new.f_int2 = old.f_int2 - @max_row,
22024new.f_charbig = '####updated per update trigger####';
22025END|
22026UPDATE t1
22027SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
22028f_charbig = '####updated per update statement itself####';
22029Warnings:
22030Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
22031
22032# check trigger-9 success: 	1
22033DROP TRIGGER trg_2;
22034UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22035f_int2 = CAST(f_char1 AS SIGNED INT),
22036f_charbig = CONCAT('===',f_char1,'===');
22037Warnings:
22038Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
22039CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
22040BEGIN
22041SET new.f_int1 = new.f_int1 + @max_row,
22042new.f_int2 = new.f_int2 - @max_row,
22043new.f_charbig = '####updated per update trigger####';
22044END|
22045UPDATE t1
22046SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
22047f_charbig = '####updated per update statement itself####';
22048Warnings:
22049Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
22050
22051# check trigger-10 success: 	1
22052DROP TRIGGER trg_2;
22053UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22054f_int2 = CAST(f_char1 AS SIGNED INT),
22055f_charbig = CONCAT('===',f_char1,'===');
22056Warnings:
22057Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
22058CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
22059BEGIN
22060SET new.f_int1 = @my_max1 + @counter,
22061new.f_int2 = @my_min2 - @counter,
22062new.f_charbig = '####updated per insert trigger####';
22063SET @counter = @counter + 1;
22064END|
22065SET @counter = 1;
22066SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
22067Warnings:
22068Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
22069INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22070SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
22071CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
22072WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
22073ORDER BY f_int1;
22074DROP TRIGGER trg_3;
22075
22076# check trigger-11 success: 	1
22077Warnings:
22078Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
22079DELETE FROM t1
22080WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
22081AND f_int2 <> CAST(f_char1 AS SIGNED INT)
22082AND f_charbig = '####updated per insert trigger####';
22083CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
22084BEGIN
22085SET new.f_int1 = @my_max1 + @counter,
22086new.f_int2 = @my_min2 - @counter,
22087new.f_charbig = '####updated per insert trigger####';
22088SET @counter = @counter + 1;
22089END|
22090SET @counter = 1;
22091SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
22092Warnings:
22093Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
22094INSERT INTO t1 (f_char1, f_char2, f_charbig)
22095SELECT CAST(f_int1 AS CHAR),
22096CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
22097WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
22098ORDER BY f_int1;
22099DROP TRIGGER trg_3;
22100
22101# check trigger-12 success: 	1
22102Warnings:
22103Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
22104DELETE FROM t1
22105WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
22106AND f_int2 <> CAST(f_char1 AS SIGNED INT)
22107AND f_charbig = '####updated per insert trigger####';
22108ANALYZE  TABLE t1;
22109Table	Op	Msg_type	Msg_text
22110test.t1	analyze	status	OK
22111test.t1	analyze	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
22112CHECK    TABLE t1 EXTENDED;
22113Table	Op	Msg_type	Msg_text
22114test.t1	check	status	OK
22115test.t1	check	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
22116CHECKSUM TABLE t1 EXTENDED;
22117Table	Checksum
22118test.t1	<some_value>
22119OPTIMIZE TABLE t1;
22120Table	Op	Msg_type	Msg_text
22121test.t1	optimize	status	OK
22122test.t1	optimize	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
22123# check layout success:    1
22124REPAIR   TABLE t1 EXTENDED;
22125Table	Op	Msg_type	Msg_text
22126test.t1	repair	status	OK
22127test.t1	repair	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
22128# check layout success:    1
22129TRUNCATE t1;
22130Warnings:
22131Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
22132
22133# check TRUNCATE success: 	1
22134# check layout success:    1
22135# End usability test (inc/partition_check.inc)
22136DROP TABLE t1;
22137DROP TABLE IF EXISTS t1;
22138CREATE TABLE t1 (
22139f_int1 INTEGER,
22140f_int2 INTEGER,
22141f_char1 CHAR(20),
22142f_char2 CHAR(20),
22143f_charbig VARCHAR(1000)
22144, UNIQUE INDEX uidx (f_int2,f_int1)
22145)
22146PARTITION BY HASH(f_int1 + f_int2) PARTITIONS 2;
22147Warnings:
22148Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
22149INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
22150SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
22151WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
22152Warnings:
22153Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
22154ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
22155Warnings:
22156Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
22157INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
22158SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
22159WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
22160Warnings:
22161Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
22162# Start usability test (inc/partition_check.inc)
22163create_command
22164SHOW CREATE TABLE t1;
22165Table	Create Table
22166t1	CREATE TABLE `t1` (
22167  `f_int1` mediumint(9) DEFAULT NULL,
22168  `f_int2` mediumint(9) DEFAULT NULL,
22169  `f_char1` char(20) DEFAULT NULL,
22170  `f_char2` char(20) DEFAULT NULL,
22171  `f_charbig` varchar(1000) DEFAULT NULL,
22172  UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
22173) ENGINE=MyISAM DEFAULT CHARSET=latin1
22174/*!50100 PARTITION BY HASH (f_int1 + f_int2)
22175PARTITIONS 2 */
22176
22177unified filelist
22178t1#P#p0.MYD
22179t1#P#p0.MYI
22180t1#P#p1.MYD
22181t1#P#p1.MYI
22182t1.frm
22183t1.par
22184
22185# check prerequisites-1 success:    1
22186# check COUNT(*) success:    1
22187# check MIN/MAX(f_int1) success:    1
22188# check MIN/MAX(f_int2) success:    1
22189INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22190SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
22191CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
22192WHERE f_int1 IN (2,3);
22193ERROR 23000: Duplicate entry '2-2' for key 'uidx'
22194# check prerequisites-3 success:    1
22195# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
22196INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22197SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
22198CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
22199WHERE f_int1 IN (2,3);
22200DELETE FROM t1 WHERE f_charbig = 'delete me';
22201INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22202SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
22203CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
22204WHERE f_int1 IN (2,3);
22205DELETE FROM t1 WHERE f_charbig = 'delete me';
22206# check read via f_int1 success: 1
22207# check read via f_int2 success: 1
22208
22209# check multiple-1 success: 	1
22210DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
22211
22212# check multiple-2 success: 	1
22213INSERT INTO t1 SELECT * FROM t0_template
22214WHERE MOD(f_int1,3) = 0;
22215
22216# check multiple-3 success: 	1
22217UPDATE t1 SET f_int1 = f_int1 + @max_row
22218WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
22219AND @max_row_div2 + @max_row_div4;
22220
22221# check multiple-4 success: 	1
22222DELETE FROM t1
22223WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
22224AND @max_row_div2 + @max_row_div4 + @max_row;
22225
22226# check multiple-5 success: 	1
22227SELECT COUNT(*) INTO @try_count FROM t0_template
22228WHERE MOD(f_int1,3) = 0
22229AND f_int1 BETWEEN @max_row_div2 AND @max_row;
22230SELECT COUNT(*) INTO @clash_count
22231FROM t1 INNER JOIN t0_template USING(f_int1)
22232WHERE MOD(f_int1,3) = 0
22233AND f_int1 BETWEEN @max_row_div2 AND @max_row;
22234SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
22235INSERT INTO t1
22236SET f_int1 = @cur_value , f_int2 = @cur_value,
22237f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
22238f_charbig = '#SINGLE#';
22239
22240# check single-1 success: 	1
22241SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
22242INSERT INTO t1
22243SET f_int1 = @cur_value , f_int2 = @cur_value,
22244f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
22245f_charbig = '#SINGLE#';
22246
22247# check single-2 success: 	1
22248SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
22249SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
22250UPDATE t1 SET f_int1 = @cur_value2
22251WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
22252
22253# check single-3 success: 	1
22254SET @cur_value1= -1;
22255SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
22256UPDATE t1 SET f_int1 = @cur_value1
22257WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
22258
22259# check single-4 success: 	1
22260SELECT MAX(f_int1) INTO @cur_value FROM t1;
22261DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
22262
22263# check single-5 success: 	1
22264DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
22265
22266# check single-6 success: 	1
22267INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
22268Warnings:
22269Warning	1264	Out of range value for column 'f_int1' at row 1
22270Warning	1264	Out of range value for column 'f_int2' at row 1
22271
22272# check single-7 success: 	1
22273DELETE FROM t1 WHERE f_charbig = '#2147483647##';
22274DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
22275INSERT t1 SET f_int1 = 0 , f_int2 = 0,
22276f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
22277f_charbig = '#NULL#';
22278INSERT INTO t1
22279SET f_int1 = NULL , f_int2 = -@max_row,
22280f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
22281f_charbig = '#NULL#';
22282# check null success:    1
22283
22284# check null-1 success: 	1
22285UPDATE t1 SET f_int1 = -@max_row
22286WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
22287AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
22288
22289# check null-2 success: 	1
22290UPDATE t1 SET f_int1 = NULL
22291WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
22292AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
22293
22294# check null-3 success: 	1
22295DELETE FROM t1
22296WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
22297AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
22298
22299# check null-4 success: 	1
22300DELETE FROM t1
22301WHERE f_int1 = 0 AND f_int2 = 0
22302AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
22303AND f_charbig = '#NULL#';
22304INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22305SELECT f_int1, f_int1, '', '', 'was inserted'
22306   FROM t0_template source_tab
22307WHERE MOD(f_int1,3) = 0
22308AND f_int1 BETWEEN @max_row_div2 AND @max_row
22309ON DUPLICATE KEY
22310UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
22311f_int2 = 2 * @max_row + source_tab.f_int1,
22312f_charbig = 'was updated';
22313
22314# check unique-1-a success: 	1
22315
22316# check unique-1-b success: 	1
22317DELETE FROM t1 WHERE f_charbig = 'was inserted';
22318UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22319f_int2 = CAST(f_char1 AS SIGNED INT),
22320f_charbig = CONCAT('===',f_char1,'===')
22321WHERE f_charbig = 'was updated';
22322REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22323SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
22324   FROM t0_template source_tab
22325WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
22326
22327# check replace success: 	1
22328DELETE FROM t1
22329WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
22330DELETE FROM t1
22331WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
22332f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
22333UPDATE t1 SET f_int2 = f_int1,
22334f_char1 = CAST(f_int1 AS CHAR),
22335f_char2 = CAST(f_int1 AS CHAR),
22336f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
22337WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
22338SET AUTOCOMMIT= 0;
22339INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22340SELECT f_int1, f_int1, '', '', 'was inserted'
22341FROM t0_template source_tab
22342WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
22343
22344# check transactions-1 success: 	1
22345COMMIT WORK;
22346
22347# check transactions-2 success: 	1
22348ROLLBACK WORK;
22349
22350# check transactions-3 success: 	1
22351DELETE FROM t1 WHERE f_charbig = 'was inserted';
22352COMMIT WORK;
22353ROLLBACK WORK;
22354
22355# check transactions-4 success: 	1
22356INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22357SELECT f_int1, f_int1, '', '', 'was inserted'
22358FROM t0_template source_tab
22359WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
22360
22361# check transactions-5 success: 	1
22362ROLLBACK WORK;
22363Warnings:
22364Warning	1196	Some non-transactional changed tables couldn't be rolled back
22365
22366# check transactions-6 success: 	1
22367# INFO: Storage engine used for t1 seems to be not transactional.
22368COMMIT;
22369
22370# check transactions-7 success: 	1
22371DELETE FROM t1 WHERE f_charbig = 'was inserted';
22372COMMIT WORK;
22373SET @@session.sql_mode = 'traditional';
22374Warnings:
22375Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
22376SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
22377INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22378SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
22379'', '', 'was inserted' FROM t0_template
22380WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
22381ERROR 22012: Division by 0
22382COMMIT;
22383
22384# check transactions-8 success: 	1
22385# INFO: Storage engine used for t1 seems to be unable to revert
22386#       changes made by the failing statement.
22387SET @@session.sql_mode = '';
22388Warnings:
22389Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
22390SET AUTOCOMMIT= 1;
22391DELETE FROM t1 WHERE f_charbig = 'was inserted';
22392COMMIT WORK;
22393UPDATE t1 SET f_charbig = REPEAT('b', 1000);
22394
22395# check special-1 success: 	1
22396UPDATE t1 SET f_charbig = '';
22397
22398# check special-2 success: 	1
22399UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
22400INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
22401SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
22402WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22403INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22404SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22405'just inserted' FROM t0_template
22406WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22407CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
22408BEGIN
22409UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22410f_charbig = 'updated by trigger'
22411      WHERE f_int1 = new.f_int1;
22412END|
22413INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22414SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
22415WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22416
22417# check trigger-1 success: 	1
22418DROP TRIGGER trg_1;
22419UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22420f_int2 = CAST(f_char1 AS SIGNED INT),
22421f_charbig = 'just inserted'
22422   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22423DELETE FROM t0_aux
22424WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22425INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22426SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22427'just inserted' FROM t0_template
22428WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22429CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
22430BEGIN
22431UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22432f_charbig = 'updated by trigger'
22433      WHERE f_int1 = new.f_int1;
22434END|
22435INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22436SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
22437WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22438
22439# check trigger-2 success: 	1
22440DROP TRIGGER trg_1;
22441UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22442f_int2 = CAST(f_char1 AS SIGNED INT),
22443f_charbig = 'just inserted'
22444   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22445DELETE FROM t0_aux
22446WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22447INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22448SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22449'just inserted' FROM t0_template
22450WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22451CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
22452BEGIN
22453UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22454f_charbig = 'updated by trigger'
22455      WHERE f_int1 = new.f_int1;
22456END|
22457UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
22458WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22459
22460# check trigger-3 success: 	1
22461DROP TRIGGER trg_1;
22462UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22463f_int2 = CAST(f_char1 AS SIGNED INT),
22464f_charbig = 'just inserted'
22465   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22466DELETE FROM t0_aux
22467WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22468INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22469SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22470'just inserted' FROM t0_template
22471WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22472CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
22473BEGIN
22474UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22475f_charbig = 'updated by trigger'
22476      WHERE f_int1 = - old.f_int1;
22477END|
22478UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
22479WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22480
22481# check trigger-4 success: 	1
22482DROP TRIGGER trg_1;
22483UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22484f_int2 = CAST(f_char1 AS SIGNED INT),
22485f_charbig = 'just inserted'
22486   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22487DELETE FROM t0_aux
22488WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22489INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22490SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22491'just inserted' FROM t0_template
22492WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22493CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
22494BEGIN
22495UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22496f_charbig = 'updated by trigger'
22497      WHERE f_int1 = new.f_int1;
22498END|
22499UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
22500WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22501
22502# check trigger-5 success: 	1
22503DROP TRIGGER trg_1;
22504UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22505f_int2 = CAST(f_char1 AS SIGNED INT),
22506f_charbig = 'just inserted'
22507   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22508DELETE FROM t0_aux
22509WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22510INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22511SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22512'just inserted' FROM t0_template
22513WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22514CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
22515BEGIN
22516UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22517f_charbig = 'updated by trigger'
22518      WHERE f_int1 = - old.f_int1;
22519END|
22520UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
22521WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22522
22523# check trigger-6 success: 	1
22524DROP TRIGGER trg_1;
22525UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22526f_int2 = CAST(f_char1 AS SIGNED INT),
22527f_charbig = 'just inserted'
22528   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22529DELETE FROM t0_aux
22530WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22531INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22532SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22533'just inserted' FROM t0_template
22534WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22535CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
22536BEGIN
22537UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22538f_charbig = 'updated by trigger'
22539      WHERE f_int1 = - old.f_int1;
22540END|
22541DELETE FROM t0_aux
22542WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22543
22544# check trigger-7 success: 	1
22545DROP TRIGGER trg_1;
22546UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22547f_int2 = CAST(f_char1 AS SIGNED INT),
22548f_charbig = 'just inserted'
22549   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22550DELETE FROM t0_aux
22551WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22552INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22553SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22554'just inserted' FROM t0_template
22555WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22556CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
22557BEGIN
22558UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22559f_charbig = 'updated by trigger'
22560      WHERE f_int1 = - old.f_int1;
22561END|
22562DELETE FROM t0_aux
22563WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22564
22565# check trigger-8 success: 	1
22566DROP TRIGGER trg_1;
22567UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22568f_int2 = CAST(f_char1 AS SIGNED INT),
22569f_charbig = 'just inserted'
22570   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22571DELETE FROM t0_aux
22572WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22573DELETE FROM t1
22574WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22575CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
22576BEGIN
22577SET new.f_int1 = old.f_int1 + @max_row,
22578new.f_int2 = old.f_int2 - @max_row,
22579new.f_charbig = '####updated per update trigger####';
22580END|
22581UPDATE t1
22582SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
22583f_charbig = '####updated per update statement itself####';
22584Warnings:
22585Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
22586
22587# check trigger-9 success: 	1
22588DROP TRIGGER trg_2;
22589UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22590f_int2 = CAST(f_char1 AS SIGNED INT),
22591f_charbig = CONCAT('===',f_char1,'===');
22592Warnings:
22593Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
22594CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
22595BEGIN
22596SET new.f_int1 = new.f_int1 + @max_row,
22597new.f_int2 = new.f_int2 - @max_row,
22598new.f_charbig = '####updated per update trigger####';
22599END|
22600UPDATE t1
22601SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
22602f_charbig = '####updated per update statement itself####';
22603Warnings:
22604Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
22605
22606# check trigger-10 success: 	1
22607DROP TRIGGER trg_2;
22608UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22609f_int2 = CAST(f_char1 AS SIGNED INT),
22610f_charbig = CONCAT('===',f_char1,'===');
22611Warnings:
22612Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
22613CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
22614BEGIN
22615SET new.f_int1 = @my_max1 + @counter,
22616new.f_int2 = @my_min2 - @counter,
22617new.f_charbig = '####updated per insert trigger####';
22618SET @counter = @counter + 1;
22619END|
22620SET @counter = 1;
22621SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
22622Warnings:
22623Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
22624INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22625SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
22626CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
22627WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
22628ORDER BY f_int1;
22629DROP TRIGGER trg_3;
22630
22631# check trigger-11 success: 	1
22632Warnings:
22633Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
22634DELETE FROM t1
22635WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
22636AND f_int2 <> CAST(f_char1 AS SIGNED INT)
22637AND f_charbig = '####updated per insert trigger####';
22638CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
22639BEGIN
22640SET new.f_int1 = @my_max1 + @counter,
22641new.f_int2 = @my_min2 - @counter,
22642new.f_charbig = '####updated per insert trigger####';
22643SET @counter = @counter + 1;
22644END|
22645SET @counter = 1;
22646SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
22647Warnings:
22648Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
22649INSERT INTO t1 (f_char1, f_char2, f_charbig)
22650SELECT CAST(f_int1 AS CHAR),
22651CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
22652WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
22653ORDER BY f_int1;
22654DROP TRIGGER trg_3;
22655
22656# check trigger-12 success: 	1
22657Warnings:
22658Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
22659DELETE FROM t1
22660WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
22661AND f_int2 <> CAST(f_char1 AS SIGNED INT)
22662AND f_charbig = '####updated per insert trigger####';
22663ANALYZE  TABLE t1;
22664Table	Op	Msg_type	Msg_text
22665test.t1	analyze	status	OK
22666test.t1	analyze	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
22667CHECK    TABLE t1 EXTENDED;
22668Table	Op	Msg_type	Msg_text
22669test.t1	check	status	OK
22670test.t1	check	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
22671CHECKSUM TABLE t1 EXTENDED;
22672Table	Checksum
22673test.t1	<some_value>
22674OPTIMIZE TABLE t1;
22675Table	Op	Msg_type	Msg_text
22676test.t1	optimize	status	OK
22677test.t1	optimize	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
22678# check layout success:    1
22679REPAIR   TABLE t1 EXTENDED;
22680Table	Op	Msg_type	Msg_text
22681test.t1	repair	status	OK
22682test.t1	repair	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
22683# check layout success:    1
22684TRUNCATE t1;
22685Warnings:
22686Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
22687
22688# check TRUNCATE success: 	1
22689# check layout success:    1
22690# End usability test (inc/partition_check.inc)
22691DROP TABLE t1;
22692CREATE TABLE t1 (
22693f_int1 INTEGER,
22694f_int2 INTEGER,
22695f_char1 CHAR(20),
22696f_char2 CHAR(20),
22697f_charbig VARCHAR(1000)
22698, UNIQUE INDEX uidx (f_int2,f_int1)
22699)
22700PARTITION BY KEY(f_int1,f_int2) PARTITIONS 5;
22701Warnings:
22702Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
22703INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
22704SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
22705WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
22706Warnings:
22707Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
22708ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
22709Warnings:
22710Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
22711INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
22712SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
22713WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
22714Warnings:
22715Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
22716# Start usability test (inc/partition_check.inc)
22717create_command
22718SHOW CREATE TABLE t1;
22719Table	Create Table
22720t1	CREATE TABLE `t1` (
22721  `f_int1` mediumint(9) DEFAULT NULL,
22722  `f_int2` mediumint(9) DEFAULT NULL,
22723  `f_char1` char(20) DEFAULT NULL,
22724  `f_char2` char(20) DEFAULT NULL,
22725  `f_charbig` varchar(1000) DEFAULT NULL,
22726  UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
22727) ENGINE=MyISAM DEFAULT CHARSET=latin1
22728/*!50100 PARTITION BY KEY (f_int1,f_int2)
22729PARTITIONS 5 */
22730
22731unified filelist
22732t1#P#p0.MYD
22733t1#P#p0.MYI
22734t1#P#p1.MYD
22735t1#P#p1.MYI
22736t1#P#p2.MYD
22737t1#P#p2.MYI
22738t1#P#p3.MYD
22739t1#P#p3.MYI
22740t1#P#p4.MYD
22741t1#P#p4.MYI
22742t1.frm
22743t1.par
22744
22745# check prerequisites-1 success:    1
22746# check COUNT(*) success:    1
22747# check MIN/MAX(f_int1) success:    1
22748# check MIN/MAX(f_int2) success:    1
22749INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22750SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
22751CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
22752WHERE f_int1 IN (2,3);
22753ERROR 23000: Duplicate entry '2-2' for key 'uidx'
22754# check prerequisites-3 success:    1
22755# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
22756INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22757SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
22758CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
22759WHERE f_int1 IN (2,3);
22760DELETE FROM t1 WHERE f_charbig = 'delete me';
22761INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22762SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
22763CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
22764WHERE f_int1 IN (2,3);
22765DELETE FROM t1 WHERE f_charbig = 'delete me';
22766# check read via f_int1 success: 1
22767# check read via f_int2 success: 1
22768
22769# check multiple-1 success: 	1
22770DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
22771
22772# check multiple-2 success: 	1
22773INSERT INTO t1 SELECT * FROM t0_template
22774WHERE MOD(f_int1,3) = 0;
22775
22776# check multiple-3 success: 	1
22777UPDATE t1 SET f_int1 = f_int1 + @max_row
22778WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
22779AND @max_row_div2 + @max_row_div4;
22780
22781# check multiple-4 success: 	1
22782DELETE FROM t1
22783WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
22784AND @max_row_div2 + @max_row_div4 + @max_row;
22785
22786# check multiple-5 success: 	1
22787SELECT COUNT(*) INTO @try_count FROM t0_template
22788WHERE MOD(f_int1,3) = 0
22789AND f_int1 BETWEEN @max_row_div2 AND @max_row;
22790SELECT COUNT(*) INTO @clash_count
22791FROM t1 INNER JOIN t0_template USING(f_int1)
22792WHERE MOD(f_int1,3) = 0
22793AND f_int1 BETWEEN @max_row_div2 AND @max_row;
22794SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
22795INSERT INTO t1
22796SET f_int1 = @cur_value , f_int2 = @cur_value,
22797f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
22798f_charbig = '#SINGLE#';
22799
22800# check single-1 success: 	1
22801SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
22802INSERT INTO t1
22803SET f_int1 = @cur_value , f_int2 = @cur_value,
22804f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
22805f_charbig = '#SINGLE#';
22806
22807# check single-2 success: 	1
22808SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
22809SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
22810UPDATE t1 SET f_int1 = @cur_value2
22811WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
22812
22813# check single-3 success: 	1
22814SET @cur_value1= -1;
22815SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
22816UPDATE t1 SET f_int1 = @cur_value1
22817WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
22818
22819# check single-4 success: 	1
22820SELECT MAX(f_int1) INTO @cur_value FROM t1;
22821DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
22822
22823# check single-5 success: 	1
22824DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
22825
22826# check single-6 success: 	1
22827INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
22828Warnings:
22829Warning	1264	Out of range value for column 'f_int1' at row 1
22830Warning	1264	Out of range value for column 'f_int2' at row 1
22831
22832# check single-7 success: 	1
22833DELETE FROM t1 WHERE f_charbig = '#2147483647##';
22834DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
22835INSERT t1 SET f_int1 = 0 , f_int2 = 0,
22836f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
22837f_charbig = '#NULL#';
22838INSERT INTO t1
22839SET f_int1 = NULL , f_int2 = -@max_row,
22840f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
22841f_charbig = '#NULL#';
22842# check null success:    1
22843
22844# check null-1 success: 	1
22845UPDATE t1 SET f_int1 = -@max_row
22846WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
22847AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
22848
22849# check null-2 success: 	1
22850UPDATE t1 SET f_int1 = NULL
22851WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
22852AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
22853
22854# check null-3 success: 	1
22855DELETE FROM t1
22856WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
22857AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
22858
22859# check null-4 success: 	1
22860DELETE FROM t1
22861WHERE f_int1 = 0 AND f_int2 = 0
22862AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
22863AND f_charbig = '#NULL#';
22864INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22865SELECT f_int1, f_int1, '', '', 'was inserted'
22866   FROM t0_template source_tab
22867WHERE MOD(f_int1,3) = 0
22868AND f_int1 BETWEEN @max_row_div2 AND @max_row
22869ON DUPLICATE KEY
22870UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
22871f_int2 = 2 * @max_row + source_tab.f_int1,
22872f_charbig = 'was updated';
22873
22874# check unique-1-a success: 	1
22875
22876# check unique-1-b success: 	1
22877DELETE FROM t1 WHERE f_charbig = 'was inserted';
22878UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22879f_int2 = CAST(f_char1 AS SIGNED INT),
22880f_charbig = CONCAT('===',f_char1,'===')
22881WHERE f_charbig = 'was updated';
22882REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22883SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
22884   FROM t0_template source_tab
22885WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
22886
22887# check replace success: 	1
22888DELETE FROM t1
22889WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
22890DELETE FROM t1
22891WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
22892f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
22893UPDATE t1 SET f_int2 = f_int1,
22894f_char1 = CAST(f_int1 AS CHAR),
22895f_char2 = CAST(f_int1 AS CHAR),
22896f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
22897WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
22898SET AUTOCOMMIT= 0;
22899INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22900SELECT f_int1, f_int1, '', '', 'was inserted'
22901FROM t0_template source_tab
22902WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
22903
22904# check transactions-1 success: 	1
22905COMMIT WORK;
22906
22907# check transactions-2 success: 	1
22908ROLLBACK WORK;
22909
22910# check transactions-3 success: 	1
22911DELETE FROM t1 WHERE f_charbig = 'was inserted';
22912COMMIT WORK;
22913ROLLBACK WORK;
22914
22915# check transactions-4 success: 	1
22916INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22917SELECT f_int1, f_int1, '', '', 'was inserted'
22918FROM t0_template source_tab
22919WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
22920
22921# check transactions-5 success: 	1
22922ROLLBACK WORK;
22923Warnings:
22924Warning	1196	Some non-transactional changed tables couldn't be rolled back
22925
22926# check transactions-6 success: 	1
22927# INFO: Storage engine used for t1 seems to be not transactional.
22928COMMIT;
22929
22930# check transactions-7 success: 	1
22931DELETE FROM t1 WHERE f_charbig = 'was inserted';
22932COMMIT WORK;
22933SET @@session.sql_mode = 'traditional';
22934Warnings:
22935Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
22936SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
22937INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22938SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
22939'', '', 'was inserted' FROM t0_template
22940WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
22941ERROR 22012: Division by 0
22942COMMIT;
22943
22944# check transactions-8 success: 	1
22945# INFO: Storage engine used for t1 seems to be unable to revert
22946#       changes made by the failing statement.
22947SET @@session.sql_mode = '';
22948Warnings:
22949Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
22950SET AUTOCOMMIT= 1;
22951DELETE FROM t1 WHERE f_charbig = 'was inserted';
22952COMMIT WORK;
22953UPDATE t1 SET f_charbig = REPEAT('b', 1000);
22954
22955# check special-1 success: 	1
22956UPDATE t1 SET f_charbig = '';
22957
22958# check special-2 success: 	1
22959UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
22960INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
22961SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
22962WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22963INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22964SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22965'just inserted' FROM t0_template
22966WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22967CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
22968BEGIN
22969UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22970f_charbig = 'updated by trigger'
22971      WHERE f_int1 = new.f_int1;
22972END|
22973INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22974SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
22975WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22976
22977# check trigger-1 success: 	1
22978DROP TRIGGER trg_1;
22979UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22980f_int2 = CAST(f_char1 AS SIGNED INT),
22981f_charbig = 'just inserted'
22982   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22983DELETE FROM t0_aux
22984WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22985INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22986SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22987'just inserted' FROM t0_template
22988WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22989CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
22990BEGIN
22991UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22992f_charbig = 'updated by trigger'
22993      WHERE f_int1 = new.f_int1;
22994END|
22995INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22996SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
22997WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22998
22999# check trigger-2 success: 	1
23000DROP TRIGGER trg_1;
23001UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23002f_int2 = CAST(f_char1 AS SIGNED INT),
23003f_charbig = 'just inserted'
23004   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23005DELETE FROM t0_aux
23006WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23007INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23008SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23009'just inserted' FROM t0_template
23010WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23011CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
23012BEGIN
23013UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23014f_charbig = 'updated by trigger'
23015      WHERE f_int1 = new.f_int1;
23016END|
23017UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
23018WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23019
23020# check trigger-3 success: 	1
23021DROP TRIGGER trg_1;
23022UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23023f_int2 = CAST(f_char1 AS SIGNED INT),
23024f_charbig = 'just inserted'
23025   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23026DELETE FROM t0_aux
23027WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23028INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23029SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23030'just inserted' FROM t0_template
23031WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23032CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
23033BEGIN
23034UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23035f_charbig = 'updated by trigger'
23036      WHERE f_int1 = - old.f_int1;
23037END|
23038UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
23039WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23040
23041# check trigger-4 success: 	1
23042DROP TRIGGER trg_1;
23043UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23044f_int2 = CAST(f_char1 AS SIGNED INT),
23045f_charbig = 'just inserted'
23046   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23047DELETE FROM t0_aux
23048WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23049INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23050SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23051'just inserted' FROM t0_template
23052WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23053CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
23054BEGIN
23055UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23056f_charbig = 'updated by trigger'
23057      WHERE f_int1 = new.f_int1;
23058END|
23059UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
23060WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23061
23062# check trigger-5 success: 	1
23063DROP TRIGGER trg_1;
23064UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23065f_int2 = CAST(f_char1 AS SIGNED INT),
23066f_charbig = 'just inserted'
23067   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23068DELETE FROM t0_aux
23069WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23070INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23071SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23072'just inserted' FROM t0_template
23073WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23074CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
23075BEGIN
23076UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23077f_charbig = 'updated by trigger'
23078      WHERE f_int1 = - old.f_int1;
23079END|
23080UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
23081WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23082
23083# check trigger-6 success: 	1
23084DROP TRIGGER trg_1;
23085UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23086f_int2 = CAST(f_char1 AS SIGNED INT),
23087f_charbig = 'just inserted'
23088   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23089DELETE FROM t0_aux
23090WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23091INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23092SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23093'just inserted' FROM t0_template
23094WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23095CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
23096BEGIN
23097UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23098f_charbig = 'updated by trigger'
23099      WHERE f_int1 = - old.f_int1;
23100END|
23101DELETE FROM t0_aux
23102WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23103
23104# check trigger-7 success: 	1
23105DROP TRIGGER trg_1;
23106UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23107f_int2 = CAST(f_char1 AS SIGNED INT),
23108f_charbig = 'just inserted'
23109   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23110DELETE FROM t0_aux
23111WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23112INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23113SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23114'just inserted' FROM t0_template
23115WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23116CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
23117BEGIN
23118UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23119f_charbig = 'updated by trigger'
23120      WHERE f_int1 = - old.f_int1;
23121END|
23122DELETE FROM t0_aux
23123WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23124
23125# check trigger-8 success: 	1
23126DROP TRIGGER trg_1;
23127UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23128f_int2 = CAST(f_char1 AS SIGNED INT),
23129f_charbig = 'just inserted'
23130   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23131DELETE FROM t0_aux
23132WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23133DELETE FROM t1
23134WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23135CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
23136BEGIN
23137SET new.f_int1 = old.f_int1 + @max_row,
23138new.f_int2 = old.f_int2 - @max_row,
23139new.f_charbig = '####updated per update trigger####';
23140END|
23141UPDATE t1
23142SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
23143f_charbig = '####updated per update statement itself####';
23144Warnings:
23145Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
23146
23147# check trigger-9 success: 	1
23148DROP TRIGGER trg_2;
23149UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23150f_int2 = CAST(f_char1 AS SIGNED INT),
23151f_charbig = CONCAT('===',f_char1,'===');
23152Warnings:
23153Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
23154CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
23155BEGIN
23156SET new.f_int1 = new.f_int1 + @max_row,
23157new.f_int2 = new.f_int2 - @max_row,
23158new.f_charbig = '####updated per update trigger####';
23159END|
23160UPDATE t1
23161SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
23162f_charbig = '####updated per update statement itself####';
23163Warnings:
23164Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
23165
23166# check trigger-10 success: 	1
23167DROP TRIGGER trg_2;
23168UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23169f_int2 = CAST(f_char1 AS SIGNED INT),
23170f_charbig = CONCAT('===',f_char1,'===');
23171Warnings:
23172Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
23173CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
23174BEGIN
23175SET new.f_int1 = @my_max1 + @counter,
23176new.f_int2 = @my_min2 - @counter,
23177new.f_charbig = '####updated per insert trigger####';
23178SET @counter = @counter + 1;
23179END|
23180SET @counter = 1;
23181SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
23182Warnings:
23183Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
23184INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23185SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
23186CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
23187WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
23188ORDER BY f_int1;
23189DROP TRIGGER trg_3;
23190
23191# check trigger-11 success: 	1
23192Warnings:
23193Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
23194DELETE FROM t1
23195WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
23196AND f_int2 <> CAST(f_char1 AS SIGNED INT)
23197AND f_charbig = '####updated per insert trigger####';
23198CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
23199BEGIN
23200SET new.f_int1 = @my_max1 + @counter,
23201new.f_int2 = @my_min2 - @counter,
23202new.f_charbig = '####updated per insert trigger####';
23203SET @counter = @counter + 1;
23204END|
23205SET @counter = 1;
23206SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
23207Warnings:
23208Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
23209INSERT INTO t1 (f_char1, f_char2, f_charbig)
23210SELECT CAST(f_int1 AS CHAR),
23211CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
23212WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
23213ORDER BY f_int1;
23214DROP TRIGGER trg_3;
23215
23216# check trigger-12 success: 	1
23217Warnings:
23218Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
23219DELETE FROM t1
23220WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
23221AND f_int2 <> CAST(f_char1 AS SIGNED INT)
23222AND f_charbig = '####updated per insert trigger####';
23223ANALYZE  TABLE t1;
23224Table	Op	Msg_type	Msg_text
23225test.t1	analyze	status	OK
23226test.t1	analyze	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
23227CHECK    TABLE t1 EXTENDED;
23228Table	Op	Msg_type	Msg_text
23229test.t1	check	status	OK
23230test.t1	check	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
23231CHECKSUM TABLE t1 EXTENDED;
23232Table	Checksum
23233test.t1	<some_value>
23234OPTIMIZE TABLE t1;
23235Table	Op	Msg_type	Msg_text
23236test.t1	optimize	status	OK
23237test.t1	optimize	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
23238# check layout success:    1
23239REPAIR   TABLE t1 EXTENDED;
23240Table	Op	Msg_type	Msg_text
23241test.t1	repair	status	OK
23242test.t1	repair	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
23243# check layout success:    1
23244TRUNCATE t1;
23245Warnings:
23246Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
23247
23248# check TRUNCATE success: 	1
23249# check layout success:    1
23250# End usability test (inc/partition_check.inc)
23251DROP TABLE t1;
23252CREATE TABLE t1 (
23253f_int1 INTEGER,
23254f_int2 INTEGER,
23255f_char1 CHAR(20),
23256f_char2 CHAR(20),
23257f_charbig VARCHAR(1000)
23258, UNIQUE INDEX uidx (f_int2,f_int1)
23259)
23260PARTITION BY LIST(MOD(f_int1 + f_int2,4))
23261(PARTITION part_3 VALUES IN (-3),
23262PARTITION part_2 VALUES IN (-2),
23263PARTITION part_1 VALUES IN (-1),
23264PARTITION part_N VALUES IN (NULL),
23265PARTITION part0 VALUES IN (0),
23266PARTITION part1 VALUES IN (1),
23267PARTITION part2 VALUES IN (2),
23268PARTITION part3 VALUES IN (3));
23269Warnings:
23270Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
23271INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
23272SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
23273WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
23274Warnings:
23275Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
23276ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
23277Warnings:
23278Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
23279INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
23280SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
23281WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
23282Warnings:
23283Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
23284# Start usability test (inc/partition_check.inc)
23285create_command
23286SHOW CREATE TABLE t1;
23287Table	Create Table
23288t1	CREATE TABLE `t1` (
23289  `f_int1` mediumint(9) DEFAULT NULL,
23290  `f_int2` mediumint(9) DEFAULT NULL,
23291  `f_char1` char(20) DEFAULT NULL,
23292  `f_char2` char(20) DEFAULT NULL,
23293  `f_charbig` varchar(1000) DEFAULT NULL,
23294  UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
23295) ENGINE=MyISAM DEFAULT CHARSET=latin1
23296/*!50100 PARTITION BY LIST (MOD(f_int1 + f_int2,4))
23297(PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM,
23298 PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM,
23299 PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM,
23300 PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM,
23301 PARTITION part0 VALUES IN (0) ENGINE = MyISAM,
23302 PARTITION part1 VALUES IN (1) ENGINE = MyISAM,
23303 PARTITION part2 VALUES IN (2) ENGINE = MyISAM,
23304 PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */
23305
23306unified filelist
23307t1#P#part0.MYD
23308t1#P#part0.MYI
23309t1#P#part1.MYD
23310t1#P#part1.MYI
23311t1#P#part2.MYD
23312t1#P#part2.MYI
23313t1#P#part3.MYD
23314t1#P#part3.MYI
23315t1#P#part_1.MYD
23316t1#P#part_1.MYI
23317t1#P#part_2.MYD
23318t1#P#part_2.MYI
23319t1#P#part_3.MYD
23320t1#P#part_3.MYI
23321t1#P#part_N.MYD
23322t1#P#part_N.MYI
23323t1.frm
23324t1.par
23325
23326# check prerequisites-1 success:    1
23327# check COUNT(*) success:    1
23328# check MIN/MAX(f_int1) success:    1
23329# check MIN/MAX(f_int2) success:    1
23330INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23331SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
23332CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
23333WHERE f_int1 IN (2,3);
23334ERROR 23000: Duplicate entry '2-2' for key 'uidx'
23335# check prerequisites-3 success:    1
23336# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
23337INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23338SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
23339CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
23340WHERE f_int1 IN (2,3);
23341DELETE FROM t1 WHERE f_charbig = 'delete me';
23342INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23343SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
23344CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
23345WHERE f_int1 IN (2,3);
23346DELETE FROM t1 WHERE f_charbig = 'delete me';
23347# check read via f_int1 success: 1
23348# check read via f_int2 success: 1
23349
23350# check multiple-1 success: 	1
23351DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
23352
23353# check multiple-2 success: 	1
23354INSERT INTO t1 SELECT * FROM t0_template
23355WHERE MOD(f_int1,3) = 0;
23356
23357# check multiple-3 success: 	1
23358UPDATE t1 SET f_int1 = f_int1 + @max_row
23359WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
23360AND @max_row_div2 + @max_row_div4;
23361
23362# check multiple-4 success: 	1
23363DELETE FROM t1
23364WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
23365AND @max_row_div2 + @max_row_div4 + @max_row;
23366
23367# check multiple-5 success: 	1
23368SELECT COUNT(*) INTO @try_count FROM t0_template
23369WHERE MOD(f_int1,3) = 0
23370AND f_int1 BETWEEN @max_row_div2 AND @max_row;
23371SELECT COUNT(*) INTO @clash_count
23372FROM t1 INNER JOIN t0_template USING(f_int1)
23373WHERE MOD(f_int1,3) = 0
23374AND f_int1 BETWEEN @max_row_div2 AND @max_row;
23375SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
23376INSERT INTO t1
23377SET f_int1 = @cur_value , f_int2 = @cur_value,
23378f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
23379f_charbig = '#SINGLE#';
23380
23381# check single-1 success: 	1
23382SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
23383INSERT INTO t1
23384SET f_int1 = @cur_value , f_int2 = @cur_value,
23385f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
23386f_charbig = '#SINGLE#';
23387
23388# check single-2 success: 	1
23389SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
23390SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
23391UPDATE t1 SET f_int1 = @cur_value2
23392WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
23393
23394# check single-3 success: 	1
23395SET @cur_value1= -1;
23396SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
23397UPDATE t1 SET f_int1 = @cur_value1
23398WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
23399
23400# check single-4 success: 	1
23401SELECT MAX(f_int1) INTO @cur_value FROM t1;
23402DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
23403
23404# check single-5 success: 	1
23405DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
23406
23407# check single-6 success: 	1
23408INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
23409Warnings:
23410Warning	1264	Out of range value for column 'f_int1' at row 1
23411Warning	1264	Out of range value for column 'f_int2' at row 1
23412
23413# check single-7 success: 	1
23414DELETE FROM t1 WHERE f_charbig = '#2147483647##';
23415DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
23416INSERT t1 SET f_int1 = 0 , f_int2 = 0,
23417f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
23418f_charbig = '#NULL#';
23419INSERT INTO t1
23420SET f_int1 = NULL , f_int2 = -@max_row,
23421f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
23422f_charbig = '#NULL#';
23423# check null success:    1
23424
23425# check null-1 success: 	1
23426UPDATE t1 SET f_int1 = -@max_row
23427WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
23428AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
23429
23430# check null-2 success: 	1
23431UPDATE t1 SET f_int1 = NULL
23432WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
23433AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
23434
23435# check null-3 success: 	1
23436DELETE FROM t1
23437WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
23438AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
23439
23440# check null-4 success: 	1
23441DELETE FROM t1
23442WHERE f_int1 = 0 AND f_int2 = 0
23443AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
23444AND f_charbig = '#NULL#';
23445INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23446SELECT f_int1, f_int1, '', '', 'was inserted'
23447   FROM t0_template source_tab
23448WHERE MOD(f_int1,3) = 0
23449AND f_int1 BETWEEN @max_row_div2 AND @max_row
23450ON DUPLICATE KEY
23451UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
23452f_int2 = 2 * @max_row + source_tab.f_int1,
23453f_charbig = 'was updated';
23454
23455# check unique-1-a success: 	1
23456
23457# check unique-1-b success: 	1
23458DELETE FROM t1 WHERE f_charbig = 'was inserted';
23459UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23460f_int2 = CAST(f_char1 AS SIGNED INT),
23461f_charbig = CONCAT('===',f_char1,'===')
23462WHERE f_charbig = 'was updated';
23463REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23464SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
23465   FROM t0_template source_tab
23466WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
23467
23468# check replace success: 	1
23469DELETE FROM t1
23470WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
23471DELETE FROM t1
23472WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
23473f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
23474UPDATE t1 SET f_int2 = f_int1,
23475f_char1 = CAST(f_int1 AS CHAR),
23476f_char2 = CAST(f_int1 AS CHAR),
23477f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
23478WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
23479SET AUTOCOMMIT= 0;
23480INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23481SELECT f_int1, f_int1, '', '', 'was inserted'
23482FROM t0_template source_tab
23483WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
23484
23485# check transactions-1 success: 	1
23486COMMIT WORK;
23487
23488# check transactions-2 success: 	1
23489ROLLBACK WORK;
23490
23491# check transactions-3 success: 	1
23492DELETE FROM t1 WHERE f_charbig = 'was inserted';
23493COMMIT WORK;
23494ROLLBACK WORK;
23495
23496# check transactions-4 success: 	1
23497INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23498SELECT f_int1, f_int1, '', '', 'was inserted'
23499FROM t0_template source_tab
23500WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
23501
23502# check transactions-5 success: 	1
23503ROLLBACK WORK;
23504Warnings:
23505Warning	1196	Some non-transactional changed tables couldn't be rolled back
23506
23507# check transactions-6 success: 	1
23508# INFO: Storage engine used for t1 seems to be not transactional.
23509COMMIT;
23510
23511# check transactions-7 success: 	1
23512DELETE FROM t1 WHERE f_charbig = 'was inserted';
23513COMMIT WORK;
23514SET @@session.sql_mode = 'traditional';
23515Warnings:
23516Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
23517SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
23518INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23519SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
23520'', '', 'was inserted' FROM t0_template
23521WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
23522ERROR 22012: Division by 0
23523COMMIT;
23524
23525# check transactions-8 success: 	1
23526# INFO: Storage engine used for t1 seems to be unable to revert
23527#       changes made by the failing statement.
23528SET @@session.sql_mode = '';
23529Warnings:
23530Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
23531SET AUTOCOMMIT= 1;
23532DELETE FROM t1 WHERE f_charbig = 'was inserted';
23533COMMIT WORK;
23534UPDATE t1 SET f_charbig = REPEAT('b', 1000);
23535
23536# check special-1 success: 	1
23537UPDATE t1 SET f_charbig = '';
23538
23539# check special-2 success: 	1
23540UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
23541INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
23542SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
23543WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23544INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23545SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23546'just inserted' FROM t0_template
23547WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23548CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
23549BEGIN
23550UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23551f_charbig = 'updated by trigger'
23552      WHERE f_int1 = new.f_int1;
23553END|
23554INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23555SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
23556WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23557
23558# check trigger-1 success: 	1
23559DROP TRIGGER trg_1;
23560UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23561f_int2 = CAST(f_char1 AS SIGNED INT),
23562f_charbig = 'just inserted'
23563   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23564DELETE FROM t0_aux
23565WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23566INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23567SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23568'just inserted' FROM t0_template
23569WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23570CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
23571BEGIN
23572UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23573f_charbig = 'updated by trigger'
23574      WHERE f_int1 = new.f_int1;
23575END|
23576INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23577SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
23578WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23579
23580# check trigger-2 success: 	1
23581DROP TRIGGER trg_1;
23582UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23583f_int2 = CAST(f_char1 AS SIGNED INT),
23584f_charbig = 'just inserted'
23585   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23586DELETE FROM t0_aux
23587WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23588INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23589SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23590'just inserted' FROM t0_template
23591WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23592CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
23593BEGIN
23594UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23595f_charbig = 'updated by trigger'
23596      WHERE f_int1 = new.f_int1;
23597END|
23598UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
23599WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23600
23601# check trigger-3 success: 	1
23602DROP TRIGGER trg_1;
23603UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23604f_int2 = CAST(f_char1 AS SIGNED INT),
23605f_charbig = 'just inserted'
23606   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23607DELETE FROM t0_aux
23608WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23609INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23610SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23611'just inserted' FROM t0_template
23612WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23613CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
23614BEGIN
23615UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23616f_charbig = 'updated by trigger'
23617      WHERE f_int1 = - old.f_int1;
23618END|
23619UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
23620WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23621
23622# check trigger-4 success: 	1
23623DROP TRIGGER trg_1;
23624UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23625f_int2 = CAST(f_char1 AS SIGNED INT),
23626f_charbig = 'just inserted'
23627   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23628DELETE FROM t0_aux
23629WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23630INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23631SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23632'just inserted' FROM t0_template
23633WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23634CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
23635BEGIN
23636UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23637f_charbig = 'updated by trigger'
23638      WHERE f_int1 = new.f_int1;
23639END|
23640UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
23641WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23642
23643# check trigger-5 success: 	1
23644DROP TRIGGER trg_1;
23645UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23646f_int2 = CAST(f_char1 AS SIGNED INT),
23647f_charbig = 'just inserted'
23648   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23649DELETE FROM t0_aux
23650WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23651INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23652SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23653'just inserted' FROM t0_template
23654WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23655CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
23656BEGIN
23657UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23658f_charbig = 'updated by trigger'
23659      WHERE f_int1 = - old.f_int1;
23660END|
23661UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
23662WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23663
23664# check trigger-6 success: 	1
23665DROP TRIGGER trg_1;
23666UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23667f_int2 = CAST(f_char1 AS SIGNED INT),
23668f_charbig = 'just inserted'
23669   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23670DELETE FROM t0_aux
23671WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23672INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23673SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23674'just inserted' FROM t0_template
23675WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23676CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
23677BEGIN
23678UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23679f_charbig = 'updated by trigger'
23680      WHERE f_int1 = - old.f_int1;
23681END|
23682DELETE FROM t0_aux
23683WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23684
23685# check trigger-7 success: 	1
23686DROP TRIGGER trg_1;
23687UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23688f_int2 = CAST(f_char1 AS SIGNED INT),
23689f_charbig = 'just inserted'
23690   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23691DELETE FROM t0_aux
23692WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23693INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23694SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23695'just inserted' FROM t0_template
23696WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23697CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
23698BEGIN
23699UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23700f_charbig = 'updated by trigger'
23701      WHERE f_int1 = - old.f_int1;
23702END|
23703DELETE FROM t0_aux
23704WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23705
23706# check trigger-8 success: 	1
23707DROP TRIGGER trg_1;
23708UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23709f_int2 = CAST(f_char1 AS SIGNED INT),
23710f_charbig = 'just inserted'
23711   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23712DELETE FROM t0_aux
23713WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23714DELETE FROM t1
23715WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23716CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
23717BEGIN
23718SET new.f_int1 = old.f_int1 + @max_row,
23719new.f_int2 = old.f_int2 - @max_row,
23720new.f_charbig = '####updated per update trigger####';
23721END|
23722UPDATE t1
23723SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
23724f_charbig = '####updated per update statement itself####';
23725Warnings:
23726Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
23727
23728# check trigger-9 success: 	1
23729DROP TRIGGER trg_2;
23730UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23731f_int2 = CAST(f_char1 AS SIGNED INT),
23732f_charbig = CONCAT('===',f_char1,'===');
23733Warnings:
23734Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
23735CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
23736BEGIN
23737SET new.f_int1 = new.f_int1 + @max_row,
23738new.f_int2 = new.f_int2 - @max_row,
23739new.f_charbig = '####updated per update trigger####';
23740END|
23741UPDATE t1
23742SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
23743f_charbig = '####updated per update statement itself####';
23744Warnings:
23745Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
23746
23747# check trigger-10 success: 	1
23748DROP TRIGGER trg_2;
23749UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23750f_int2 = CAST(f_char1 AS SIGNED INT),
23751f_charbig = CONCAT('===',f_char1,'===');
23752Warnings:
23753Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
23754CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
23755BEGIN
23756SET new.f_int1 = @my_max1 + @counter,
23757new.f_int2 = @my_min2 - @counter,
23758new.f_charbig = '####updated per insert trigger####';
23759SET @counter = @counter + 1;
23760END|
23761SET @counter = 1;
23762SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
23763Warnings:
23764Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
23765INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23766SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
23767CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
23768WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
23769ORDER BY f_int1;
23770DROP TRIGGER trg_3;
23771
23772# check trigger-11 success: 	1
23773Warnings:
23774Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
23775DELETE FROM t1
23776WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
23777AND f_int2 <> CAST(f_char1 AS SIGNED INT)
23778AND f_charbig = '####updated per insert trigger####';
23779CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
23780BEGIN
23781SET new.f_int1 = @my_max1 + @counter,
23782new.f_int2 = @my_min2 - @counter,
23783new.f_charbig = '####updated per insert trigger####';
23784SET @counter = @counter + 1;
23785END|
23786SET @counter = 1;
23787SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
23788Warnings:
23789Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
23790INSERT INTO t1 (f_char1, f_char2, f_charbig)
23791SELECT CAST(f_int1 AS CHAR),
23792CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
23793WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
23794ORDER BY f_int1;
23795DROP TRIGGER trg_3;
23796
23797# check trigger-12 success: 	1
23798Warnings:
23799Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
23800DELETE FROM t1
23801WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
23802AND f_int2 <> CAST(f_char1 AS SIGNED INT)
23803AND f_charbig = '####updated per insert trigger####';
23804ANALYZE  TABLE t1;
23805Table	Op	Msg_type	Msg_text
23806test.t1	analyze	status	OK
23807test.t1	analyze	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
23808CHECK    TABLE t1 EXTENDED;
23809Table	Op	Msg_type	Msg_text
23810test.t1	check	status	OK
23811test.t1	check	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
23812CHECKSUM TABLE t1 EXTENDED;
23813Table	Checksum
23814test.t1	<some_value>
23815OPTIMIZE TABLE t1;
23816Table	Op	Msg_type	Msg_text
23817test.t1	optimize	status	OK
23818test.t1	optimize	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
23819# check layout success:    1
23820REPAIR   TABLE t1 EXTENDED;
23821Table	Op	Msg_type	Msg_text
23822test.t1	repair	status	OK
23823test.t1	repair	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
23824# check layout success:    1
23825TRUNCATE t1;
23826Warnings:
23827Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
23828
23829# check TRUNCATE success: 	1
23830# check layout success:    1
23831# End usability test (inc/partition_check.inc)
23832DROP TABLE t1;
23833CREATE TABLE t1 (
23834f_int1 INTEGER,
23835f_int2 INTEGER,
23836f_char1 CHAR(20),
23837f_char2 CHAR(20),
23838f_charbig VARCHAR(1000)
23839, UNIQUE INDEX uidx (f_int2,f_int1)
23840)
23841PARTITION BY RANGE((f_int1 + f_int2) DIV 2)
23842(PARTITION parta VALUES LESS THAN (0),
23843PARTITION partb VALUES LESS THAN (5),
23844PARTITION partc VALUES LESS THAN (10),
23845PARTITION partd VALUES LESS THAN (10 + 5),
23846PARTITION parte VALUES LESS THAN (20),
23847PARTITION partf VALUES LESS THAN (2147483646));
23848Warnings:
23849Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
23850INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
23851SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
23852WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
23853Warnings:
23854Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
23855ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
23856Warnings:
23857Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
23858INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
23859SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
23860WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
23861Warnings:
23862Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
23863# Start usability test (inc/partition_check.inc)
23864create_command
23865SHOW CREATE TABLE t1;
23866Table	Create Table
23867t1	CREATE TABLE `t1` (
23868  `f_int1` mediumint(9) DEFAULT NULL,
23869  `f_int2` mediumint(9) DEFAULT NULL,
23870  `f_char1` char(20) DEFAULT NULL,
23871  `f_char2` char(20) DEFAULT NULL,
23872  `f_charbig` varchar(1000) DEFAULT NULL,
23873  UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
23874) ENGINE=MyISAM DEFAULT CHARSET=latin1
23875/*!50100 PARTITION BY RANGE ((f_int1 + f_int2) DIV 2)
23876(PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM,
23877 PARTITION partb VALUES LESS THAN (5) ENGINE = MyISAM,
23878 PARTITION partc VALUES LESS THAN (10) ENGINE = MyISAM,
23879 PARTITION partd VALUES LESS THAN (15) ENGINE = MyISAM,
23880 PARTITION parte VALUES LESS THAN (20) ENGINE = MyISAM,
23881 PARTITION partf VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
23882
23883unified filelist
23884t1#P#parta.MYD
23885t1#P#parta.MYI
23886t1#P#partb.MYD
23887t1#P#partb.MYI
23888t1#P#partc.MYD
23889t1#P#partc.MYI
23890t1#P#partd.MYD
23891t1#P#partd.MYI
23892t1#P#parte.MYD
23893t1#P#parte.MYI
23894t1#P#partf.MYD
23895t1#P#partf.MYI
23896t1.frm
23897t1.par
23898
23899# check prerequisites-1 success:    1
23900# check COUNT(*) success:    1
23901# check MIN/MAX(f_int1) success:    1
23902# check MIN/MAX(f_int2) success:    1
23903INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23904SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
23905CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
23906WHERE f_int1 IN (2,3);
23907ERROR 23000: Duplicate entry '2-2' for key 'uidx'
23908# check prerequisites-3 success:    1
23909# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
23910INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23911SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
23912CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
23913WHERE f_int1 IN (2,3);
23914DELETE FROM t1 WHERE f_charbig = 'delete me';
23915INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23916SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
23917CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
23918WHERE f_int1 IN (2,3);
23919DELETE FROM t1 WHERE f_charbig = 'delete me';
23920# check read via f_int1 success: 1
23921# check read via f_int2 success: 1
23922
23923# check multiple-1 success: 	1
23924DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
23925
23926# check multiple-2 success: 	1
23927INSERT INTO t1 SELECT * FROM t0_template
23928WHERE MOD(f_int1,3) = 0;
23929
23930# check multiple-3 success: 	1
23931UPDATE t1 SET f_int1 = f_int1 + @max_row
23932WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
23933AND @max_row_div2 + @max_row_div4;
23934
23935# check multiple-4 success: 	1
23936DELETE FROM t1
23937WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
23938AND @max_row_div2 + @max_row_div4 + @max_row;
23939
23940# check multiple-5 success: 	1
23941SELECT COUNT(*) INTO @try_count FROM t0_template
23942WHERE MOD(f_int1,3) = 0
23943AND f_int1 BETWEEN @max_row_div2 AND @max_row;
23944SELECT COUNT(*) INTO @clash_count
23945FROM t1 INNER JOIN t0_template USING(f_int1)
23946WHERE MOD(f_int1,3) = 0
23947AND f_int1 BETWEEN @max_row_div2 AND @max_row;
23948SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
23949INSERT INTO t1
23950SET f_int1 = @cur_value , f_int2 = @cur_value,
23951f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
23952f_charbig = '#SINGLE#';
23953
23954# check single-1 success: 	1
23955SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
23956INSERT INTO t1
23957SET f_int1 = @cur_value , f_int2 = @cur_value,
23958f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
23959f_charbig = '#SINGLE#';
23960
23961# check single-2 success: 	1
23962SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
23963SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
23964UPDATE t1 SET f_int1 = @cur_value2
23965WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
23966
23967# check single-3 success: 	1
23968SET @cur_value1= -1;
23969SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
23970UPDATE t1 SET f_int1 = @cur_value1
23971WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
23972
23973# check single-4 success: 	1
23974SELECT MAX(f_int1) INTO @cur_value FROM t1;
23975DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
23976
23977# check single-5 success: 	1
23978DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
23979
23980# check single-6 success: 	1
23981INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
23982Warnings:
23983Warning	1264	Out of range value for column 'f_int1' at row 1
23984Warning	1264	Out of range value for column 'f_int2' at row 1
23985
23986# check single-7 success: 	1
23987DELETE FROM t1 WHERE f_charbig = '#2147483647##';
23988DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
23989INSERT t1 SET f_int1 = 0 , f_int2 = 0,
23990f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
23991f_charbig = '#NULL#';
23992INSERT INTO t1
23993SET f_int1 = NULL , f_int2 = -@max_row,
23994f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
23995f_charbig = '#NULL#';
23996# check null success:    1
23997
23998# check null-1 success: 	1
23999UPDATE t1 SET f_int1 = -@max_row
24000WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
24001AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
24002
24003# check null-2 success: 	1
24004UPDATE t1 SET f_int1 = NULL
24005WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
24006AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
24007
24008# check null-3 success: 	1
24009DELETE FROM t1
24010WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
24011AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
24012
24013# check null-4 success: 	1
24014DELETE FROM t1
24015WHERE f_int1 = 0 AND f_int2 = 0
24016AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
24017AND f_charbig = '#NULL#';
24018INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24019SELECT f_int1, f_int1, '', '', 'was inserted'
24020   FROM t0_template source_tab
24021WHERE MOD(f_int1,3) = 0
24022AND f_int1 BETWEEN @max_row_div2 AND @max_row
24023ON DUPLICATE KEY
24024UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
24025f_int2 = 2 * @max_row + source_tab.f_int1,
24026f_charbig = 'was updated';
24027
24028# check unique-1-a success: 	1
24029
24030# check unique-1-b success: 	1
24031DELETE FROM t1 WHERE f_charbig = 'was inserted';
24032UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24033f_int2 = CAST(f_char1 AS SIGNED INT),
24034f_charbig = CONCAT('===',f_char1,'===')
24035WHERE f_charbig = 'was updated';
24036REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24037SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
24038   FROM t0_template source_tab
24039WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
24040
24041# check replace success: 	1
24042DELETE FROM t1
24043WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
24044DELETE FROM t1
24045WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
24046f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
24047UPDATE t1 SET f_int2 = f_int1,
24048f_char1 = CAST(f_int1 AS CHAR),
24049f_char2 = CAST(f_int1 AS CHAR),
24050f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
24051WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
24052SET AUTOCOMMIT= 0;
24053INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24054SELECT f_int1, f_int1, '', '', 'was inserted'
24055FROM t0_template source_tab
24056WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
24057
24058# check transactions-1 success: 	1
24059COMMIT WORK;
24060
24061# check transactions-2 success: 	1
24062ROLLBACK WORK;
24063
24064# check transactions-3 success: 	1
24065DELETE FROM t1 WHERE f_charbig = 'was inserted';
24066COMMIT WORK;
24067ROLLBACK WORK;
24068
24069# check transactions-4 success: 	1
24070INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24071SELECT f_int1, f_int1, '', '', 'was inserted'
24072FROM t0_template source_tab
24073WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
24074
24075# check transactions-5 success: 	1
24076ROLLBACK WORK;
24077Warnings:
24078Warning	1196	Some non-transactional changed tables couldn't be rolled back
24079
24080# check transactions-6 success: 	1
24081# INFO: Storage engine used for t1 seems to be not transactional.
24082COMMIT;
24083
24084# check transactions-7 success: 	1
24085DELETE FROM t1 WHERE f_charbig = 'was inserted';
24086COMMIT WORK;
24087SET @@session.sql_mode = 'traditional';
24088Warnings:
24089Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
24090SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
24091INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24092SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
24093'', '', 'was inserted' FROM t0_template
24094WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
24095ERROR 22012: Division by 0
24096COMMIT;
24097
24098# check transactions-8 success: 	1
24099# INFO: Storage engine used for t1 seems to be unable to revert
24100#       changes made by the failing statement.
24101SET @@session.sql_mode = '';
24102Warnings:
24103Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
24104SET AUTOCOMMIT= 1;
24105DELETE FROM t1 WHERE f_charbig = 'was inserted';
24106COMMIT WORK;
24107UPDATE t1 SET f_charbig = REPEAT('b', 1000);
24108
24109# check special-1 success: 	1
24110UPDATE t1 SET f_charbig = '';
24111
24112# check special-2 success: 	1
24113UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
24114INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
24115SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
24116WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24117INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24118SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24119'just inserted' FROM t0_template
24120WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24121CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
24122BEGIN
24123UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24124f_charbig = 'updated by trigger'
24125      WHERE f_int1 = new.f_int1;
24126END|
24127INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24128SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
24129WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24130
24131# check trigger-1 success: 	1
24132DROP TRIGGER trg_1;
24133UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24134f_int2 = CAST(f_char1 AS SIGNED INT),
24135f_charbig = 'just inserted'
24136   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24137DELETE FROM t0_aux
24138WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24139INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24140SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24141'just inserted' FROM t0_template
24142WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24143CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
24144BEGIN
24145UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24146f_charbig = 'updated by trigger'
24147      WHERE f_int1 = new.f_int1;
24148END|
24149INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24150SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
24151WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24152
24153# check trigger-2 success: 	1
24154DROP TRIGGER trg_1;
24155UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24156f_int2 = CAST(f_char1 AS SIGNED INT),
24157f_charbig = 'just inserted'
24158   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24159DELETE FROM t0_aux
24160WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24161INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24162SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24163'just inserted' FROM t0_template
24164WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24165CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
24166BEGIN
24167UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24168f_charbig = 'updated by trigger'
24169      WHERE f_int1 = new.f_int1;
24170END|
24171UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
24172WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24173
24174# check trigger-3 success: 	1
24175DROP TRIGGER trg_1;
24176UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24177f_int2 = CAST(f_char1 AS SIGNED INT),
24178f_charbig = 'just inserted'
24179   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24180DELETE FROM t0_aux
24181WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24182INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24183SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24184'just inserted' FROM t0_template
24185WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24186CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
24187BEGIN
24188UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24189f_charbig = 'updated by trigger'
24190      WHERE f_int1 = - old.f_int1;
24191END|
24192UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
24193WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24194
24195# check trigger-4 success: 	1
24196DROP TRIGGER trg_1;
24197UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24198f_int2 = CAST(f_char1 AS SIGNED INT),
24199f_charbig = 'just inserted'
24200   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24201DELETE FROM t0_aux
24202WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24203INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24204SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24205'just inserted' FROM t0_template
24206WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24207CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
24208BEGIN
24209UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24210f_charbig = 'updated by trigger'
24211      WHERE f_int1 = new.f_int1;
24212END|
24213UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
24214WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24215
24216# check trigger-5 success: 	1
24217DROP TRIGGER trg_1;
24218UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24219f_int2 = CAST(f_char1 AS SIGNED INT),
24220f_charbig = 'just inserted'
24221   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24222DELETE FROM t0_aux
24223WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24224INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24225SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24226'just inserted' FROM t0_template
24227WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24228CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
24229BEGIN
24230UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24231f_charbig = 'updated by trigger'
24232      WHERE f_int1 = - old.f_int1;
24233END|
24234UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
24235WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24236
24237# check trigger-6 success: 	1
24238DROP TRIGGER trg_1;
24239UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24240f_int2 = CAST(f_char1 AS SIGNED INT),
24241f_charbig = 'just inserted'
24242   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24243DELETE FROM t0_aux
24244WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24245INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24246SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24247'just inserted' FROM t0_template
24248WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24249CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
24250BEGIN
24251UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24252f_charbig = 'updated by trigger'
24253      WHERE f_int1 = - old.f_int1;
24254END|
24255DELETE FROM t0_aux
24256WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24257
24258# check trigger-7 success: 	1
24259DROP TRIGGER trg_1;
24260UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24261f_int2 = CAST(f_char1 AS SIGNED INT),
24262f_charbig = 'just inserted'
24263   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24264DELETE FROM t0_aux
24265WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24266INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24267SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24268'just inserted' FROM t0_template
24269WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24270CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
24271BEGIN
24272UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24273f_charbig = 'updated by trigger'
24274      WHERE f_int1 = - old.f_int1;
24275END|
24276DELETE FROM t0_aux
24277WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24278
24279# check trigger-8 success: 	1
24280DROP TRIGGER trg_1;
24281UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24282f_int2 = CAST(f_char1 AS SIGNED INT),
24283f_charbig = 'just inserted'
24284   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24285DELETE FROM t0_aux
24286WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24287DELETE FROM t1
24288WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24289CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
24290BEGIN
24291SET new.f_int1 = old.f_int1 + @max_row,
24292new.f_int2 = old.f_int2 - @max_row,
24293new.f_charbig = '####updated per update trigger####';
24294END|
24295UPDATE t1
24296SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
24297f_charbig = '####updated per update statement itself####';
24298Warnings:
24299Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
24300
24301# check trigger-9 success: 	1
24302DROP TRIGGER trg_2;
24303UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24304f_int2 = CAST(f_char1 AS SIGNED INT),
24305f_charbig = CONCAT('===',f_char1,'===');
24306Warnings:
24307Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
24308CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
24309BEGIN
24310SET new.f_int1 = new.f_int1 + @max_row,
24311new.f_int2 = new.f_int2 - @max_row,
24312new.f_charbig = '####updated per update trigger####';
24313END|
24314UPDATE t1
24315SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
24316f_charbig = '####updated per update statement itself####';
24317Warnings:
24318Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
24319
24320# check trigger-10 success: 	1
24321DROP TRIGGER trg_2;
24322UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24323f_int2 = CAST(f_char1 AS SIGNED INT),
24324f_charbig = CONCAT('===',f_char1,'===');
24325Warnings:
24326Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
24327CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
24328BEGIN
24329SET new.f_int1 = @my_max1 + @counter,
24330new.f_int2 = @my_min2 - @counter,
24331new.f_charbig = '####updated per insert trigger####';
24332SET @counter = @counter + 1;
24333END|
24334SET @counter = 1;
24335SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
24336Warnings:
24337Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
24338INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24339SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
24340CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
24341WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
24342ORDER BY f_int1;
24343DROP TRIGGER trg_3;
24344
24345# check trigger-11 success: 	1
24346Warnings:
24347Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
24348DELETE FROM t1
24349WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
24350AND f_int2 <> CAST(f_char1 AS SIGNED INT)
24351AND f_charbig = '####updated per insert trigger####';
24352CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
24353BEGIN
24354SET new.f_int1 = @my_max1 + @counter,
24355new.f_int2 = @my_min2 - @counter,
24356new.f_charbig = '####updated per insert trigger####';
24357SET @counter = @counter + 1;
24358END|
24359SET @counter = 1;
24360SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
24361Warnings:
24362Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
24363INSERT INTO t1 (f_char1, f_char2, f_charbig)
24364SELECT CAST(f_int1 AS CHAR),
24365CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
24366WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
24367ORDER BY f_int1;
24368DROP TRIGGER trg_3;
24369
24370# check trigger-12 success: 	1
24371Warnings:
24372Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
24373DELETE FROM t1
24374WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
24375AND f_int2 <> CAST(f_char1 AS SIGNED INT)
24376AND f_charbig = '####updated per insert trigger####';
24377ANALYZE  TABLE t1;
24378Table	Op	Msg_type	Msg_text
24379test.t1	analyze	status	OK
24380test.t1	analyze	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
24381CHECK    TABLE t1 EXTENDED;
24382Table	Op	Msg_type	Msg_text
24383test.t1	check	status	OK
24384test.t1	check	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
24385CHECKSUM TABLE t1 EXTENDED;
24386Table	Checksum
24387test.t1	<some_value>
24388OPTIMIZE TABLE t1;
24389Table	Op	Msg_type	Msg_text
24390test.t1	optimize	status	OK
24391test.t1	optimize	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
24392# check layout success:    1
24393REPAIR   TABLE t1 EXTENDED;
24394Table	Op	Msg_type	Msg_text
24395test.t1	repair	status	OK
24396test.t1	repair	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
24397# check layout success:    1
24398TRUNCATE t1;
24399Warnings:
24400Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
24401
24402# check TRUNCATE success: 	1
24403# check layout success:    1
24404# End usability test (inc/partition_check.inc)
24405DROP TABLE t1;
24406CREATE TABLE t1 (
24407f_int1 INTEGER,
24408f_int2 INTEGER,
24409f_char1 CHAR(20),
24410f_char2 CHAR(20),
24411f_charbig VARCHAR(1000)
24412, UNIQUE INDEX uidx (f_int2,f_int1)
24413)
24414PARTITION BY RANGE(f_int1) SUBPARTITION BY HASH(f_int2) SUBPARTITIONS 2
24415(PARTITION parta VALUES LESS THAN (0),
24416PARTITION partb VALUES LESS THAN (5),
24417PARTITION partc VALUES LESS THAN (10),
24418PARTITION partd VALUES LESS THAN (2147483646));
24419Warnings:
24420Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
24421INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
24422SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
24423WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
24424Warnings:
24425Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
24426ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
24427Warnings:
24428Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
24429INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
24430SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
24431WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
24432Warnings:
24433Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
24434# Start usability test (inc/partition_check.inc)
24435create_command
24436SHOW CREATE TABLE t1;
24437Table	Create Table
24438t1	CREATE TABLE `t1` (
24439  `f_int1` mediumint(9) DEFAULT NULL,
24440  `f_int2` mediumint(9) DEFAULT NULL,
24441  `f_char1` char(20) DEFAULT NULL,
24442  `f_char2` char(20) DEFAULT NULL,
24443  `f_charbig` varchar(1000) DEFAULT NULL,
24444  UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
24445) ENGINE=MyISAM DEFAULT CHARSET=latin1
24446/*!50100 PARTITION BY RANGE (f_int1)
24447SUBPARTITION BY HASH (f_int2)
24448SUBPARTITIONS 2
24449(PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM,
24450 PARTITION partb VALUES LESS THAN (5) ENGINE = MyISAM,
24451 PARTITION partc VALUES LESS THAN (10) ENGINE = MyISAM,
24452 PARTITION partd VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
24453
24454unified filelist
24455t1#P#parta#SP#partasp0.MYD
24456t1#P#parta#SP#partasp0.MYI
24457t1#P#parta#SP#partasp1.MYD
24458t1#P#parta#SP#partasp1.MYI
24459t1#P#partb#SP#partbsp0.MYD
24460t1#P#partb#SP#partbsp0.MYI
24461t1#P#partb#SP#partbsp1.MYD
24462t1#P#partb#SP#partbsp1.MYI
24463t1#P#partc#SP#partcsp0.MYD
24464t1#P#partc#SP#partcsp0.MYI
24465t1#P#partc#SP#partcsp1.MYD
24466t1#P#partc#SP#partcsp1.MYI
24467t1#P#partd#SP#partdsp0.MYD
24468t1#P#partd#SP#partdsp0.MYI
24469t1#P#partd#SP#partdsp1.MYD
24470t1#P#partd#SP#partdsp1.MYI
24471t1.frm
24472t1.par
24473
24474# check prerequisites-1 success:    1
24475# check COUNT(*) success:    1
24476# check MIN/MAX(f_int1) success:    1
24477# check MIN/MAX(f_int2) success:    1
24478INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24479SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
24480CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
24481WHERE f_int1 IN (2,3);
24482ERROR 23000: Duplicate entry '2-2' for key 'uidx'
24483# check prerequisites-3 success:    1
24484# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
24485INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24486SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
24487CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
24488WHERE f_int1 IN (2,3);
24489DELETE FROM t1 WHERE f_charbig = 'delete me';
24490INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24491SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
24492CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
24493WHERE f_int1 IN (2,3);
24494DELETE FROM t1 WHERE f_charbig = 'delete me';
24495# check read via f_int1 success: 1
24496# check read via f_int2 success: 1
24497
24498# check multiple-1 success: 	1
24499DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
24500
24501# check multiple-2 success: 	1
24502INSERT INTO t1 SELECT * FROM t0_template
24503WHERE MOD(f_int1,3) = 0;
24504
24505# check multiple-3 success: 	1
24506UPDATE t1 SET f_int1 = f_int1 + @max_row
24507WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
24508AND @max_row_div2 + @max_row_div4;
24509
24510# check multiple-4 success: 	1
24511DELETE FROM t1
24512WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
24513AND @max_row_div2 + @max_row_div4 + @max_row;
24514
24515# check multiple-5 success: 	1
24516SELECT COUNT(*) INTO @try_count FROM t0_template
24517WHERE MOD(f_int1,3) = 0
24518AND f_int1 BETWEEN @max_row_div2 AND @max_row;
24519SELECT COUNT(*) INTO @clash_count
24520FROM t1 INNER JOIN t0_template USING(f_int1)
24521WHERE MOD(f_int1,3) = 0
24522AND f_int1 BETWEEN @max_row_div2 AND @max_row;
24523SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
24524INSERT INTO t1
24525SET f_int1 = @cur_value , f_int2 = @cur_value,
24526f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
24527f_charbig = '#SINGLE#';
24528
24529# check single-1 success: 	1
24530SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
24531INSERT INTO t1
24532SET f_int1 = @cur_value , f_int2 = @cur_value,
24533f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
24534f_charbig = '#SINGLE#';
24535
24536# check single-2 success: 	1
24537SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
24538SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
24539UPDATE t1 SET f_int1 = @cur_value2
24540WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
24541
24542# check single-3 success: 	1
24543SET @cur_value1= -1;
24544SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
24545UPDATE t1 SET f_int1 = @cur_value1
24546WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
24547
24548# check single-4 success: 	1
24549SELECT MAX(f_int1) INTO @cur_value FROM t1;
24550DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
24551
24552# check single-5 success: 	1
24553DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
24554
24555# check single-6 success: 	1
24556INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
24557Warnings:
24558Warning	1264	Out of range value for column 'f_int1' at row 1
24559Warning	1264	Out of range value for column 'f_int2' at row 1
24560
24561# check single-7 success: 	1
24562DELETE FROM t1 WHERE f_charbig = '#2147483647##';
24563DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
24564INSERT t1 SET f_int1 = 0 , f_int2 = 0,
24565f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
24566f_charbig = '#NULL#';
24567INSERT INTO t1
24568SET f_int1 = NULL , f_int2 = -@max_row,
24569f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
24570f_charbig = '#NULL#';
24571# check null success:    1
24572
24573# check null-1 success: 	1
24574UPDATE t1 SET f_int1 = -@max_row
24575WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
24576AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
24577
24578# check null-2 success: 	1
24579UPDATE t1 SET f_int1 = NULL
24580WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
24581AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
24582
24583# check null-3 success: 	1
24584DELETE FROM t1
24585WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
24586AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
24587
24588# check null-4 success: 	1
24589DELETE FROM t1
24590WHERE f_int1 = 0 AND f_int2 = 0
24591AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
24592AND f_charbig = '#NULL#';
24593INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24594SELECT f_int1, f_int1, '', '', 'was inserted'
24595   FROM t0_template source_tab
24596WHERE MOD(f_int1,3) = 0
24597AND f_int1 BETWEEN @max_row_div2 AND @max_row
24598ON DUPLICATE KEY
24599UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
24600f_int2 = 2 * @max_row + source_tab.f_int1,
24601f_charbig = 'was updated';
24602
24603# check unique-1-a success: 	1
24604
24605# check unique-1-b success: 	1
24606DELETE FROM t1 WHERE f_charbig = 'was inserted';
24607UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24608f_int2 = CAST(f_char1 AS SIGNED INT),
24609f_charbig = CONCAT('===',f_char1,'===')
24610WHERE f_charbig = 'was updated';
24611REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24612SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
24613   FROM t0_template source_tab
24614WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
24615
24616# check replace success: 	1
24617DELETE FROM t1
24618WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
24619DELETE FROM t1
24620WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
24621f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
24622UPDATE t1 SET f_int2 = f_int1,
24623f_char1 = CAST(f_int1 AS CHAR),
24624f_char2 = CAST(f_int1 AS CHAR),
24625f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
24626WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
24627SET AUTOCOMMIT= 0;
24628INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24629SELECT f_int1, f_int1, '', '', 'was inserted'
24630FROM t0_template source_tab
24631WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
24632
24633# check transactions-1 success: 	1
24634COMMIT WORK;
24635
24636# check transactions-2 success: 	1
24637ROLLBACK WORK;
24638
24639# check transactions-3 success: 	1
24640DELETE FROM t1 WHERE f_charbig = 'was inserted';
24641COMMIT WORK;
24642ROLLBACK WORK;
24643
24644# check transactions-4 success: 	1
24645INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24646SELECT f_int1, f_int1, '', '', 'was inserted'
24647FROM t0_template source_tab
24648WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
24649
24650# check transactions-5 success: 	1
24651ROLLBACK WORK;
24652Warnings:
24653Warning	1196	Some non-transactional changed tables couldn't be rolled back
24654
24655# check transactions-6 success: 	1
24656# INFO: Storage engine used for t1 seems to be not transactional.
24657COMMIT;
24658
24659# check transactions-7 success: 	1
24660DELETE FROM t1 WHERE f_charbig = 'was inserted';
24661COMMIT WORK;
24662SET @@session.sql_mode = 'traditional';
24663Warnings:
24664Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
24665SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
24666INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24667SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
24668'', '', 'was inserted' FROM t0_template
24669WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
24670ERROR 22012: Division by 0
24671COMMIT;
24672
24673# check transactions-8 success: 	1
24674# INFO: Storage engine used for t1 seems to be unable to revert
24675#       changes made by the failing statement.
24676SET @@session.sql_mode = '';
24677Warnings:
24678Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
24679SET AUTOCOMMIT= 1;
24680DELETE FROM t1 WHERE f_charbig = 'was inserted';
24681COMMIT WORK;
24682UPDATE t1 SET f_charbig = REPEAT('b', 1000);
24683
24684# check special-1 success: 	1
24685UPDATE t1 SET f_charbig = '';
24686
24687# check special-2 success: 	1
24688UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
24689INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
24690SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
24691WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24692INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24693SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24694'just inserted' FROM t0_template
24695WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24696CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
24697BEGIN
24698UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24699f_charbig = 'updated by trigger'
24700      WHERE f_int1 = new.f_int1;
24701END|
24702INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24703SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
24704WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24705
24706# check trigger-1 success: 	1
24707DROP TRIGGER trg_1;
24708UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24709f_int2 = CAST(f_char1 AS SIGNED INT),
24710f_charbig = 'just inserted'
24711   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24712DELETE FROM t0_aux
24713WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24714INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24715SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24716'just inserted' FROM t0_template
24717WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24718CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
24719BEGIN
24720UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24721f_charbig = 'updated by trigger'
24722      WHERE f_int1 = new.f_int1;
24723END|
24724INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24725SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
24726WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24727
24728# check trigger-2 success: 	1
24729DROP TRIGGER trg_1;
24730UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24731f_int2 = CAST(f_char1 AS SIGNED INT),
24732f_charbig = 'just inserted'
24733   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24734DELETE FROM t0_aux
24735WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24736INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24737SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24738'just inserted' FROM t0_template
24739WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24740CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
24741BEGIN
24742UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24743f_charbig = 'updated by trigger'
24744      WHERE f_int1 = new.f_int1;
24745END|
24746UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
24747WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24748
24749# check trigger-3 success: 	1
24750DROP TRIGGER trg_1;
24751UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24752f_int2 = CAST(f_char1 AS SIGNED INT),
24753f_charbig = 'just inserted'
24754   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24755DELETE FROM t0_aux
24756WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24757INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24758SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24759'just inserted' FROM t0_template
24760WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24761CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
24762BEGIN
24763UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24764f_charbig = 'updated by trigger'
24765      WHERE f_int1 = - old.f_int1;
24766END|
24767UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
24768WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24769
24770# check trigger-4 success: 	1
24771DROP TRIGGER trg_1;
24772UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24773f_int2 = CAST(f_char1 AS SIGNED INT),
24774f_charbig = 'just inserted'
24775   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24776DELETE FROM t0_aux
24777WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24778INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24779SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24780'just inserted' FROM t0_template
24781WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24782CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
24783BEGIN
24784UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24785f_charbig = 'updated by trigger'
24786      WHERE f_int1 = new.f_int1;
24787END|
24788UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
24789WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24790
24791# check trigger-5 success: 	1
24792DROP TRIGGER trg_1;
24793UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24794f_int2 = CAST(f_char1 AS SIGNED INT),
24795f_charbig = 'just inserted'
24796   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24797DELETE FROM t0_aux
24798WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24799INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24800SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24801'just inserted' FROM t0_template
24802WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24803CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
24804BEGIN
24805UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24806f_charbig = 'updated by trigger'
24807      WHERE f_int1 = - old.f_int1;
24808END|
24809UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
24810WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24811
24812# check trigger-6 success: 	1
24813DROP TRIGGER trg_1;
24814UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24815f_int2 = CAST(f_char1 AS SIGNED INT),
24816f_charbig = 'just inserted'
24817   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24818DELETE FROM t0_aux
24819WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24820INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24821SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24822'just inserted' FROM t0_template
24823WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24824CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
24825BEGIN
24826UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24827f_charbig = 'updated by trigger'
24828      WHERE f_int1 = - old.f_int1;
24829END|
24830DELETE FROM t0_aux
24831WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24832
24833# check trigger-7 success: 	1
24834DROP TRIGGER trg_1;
24835UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24836f_int2 = CAST(f_char1 AS SIGNED INT),
24837f_charbig = 'just inserted'
24838   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24839DELETE FROM t0_aux
24840WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24841INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24842SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24843'just inserted' FROM t0_template
24844WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24845CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
24846BEGIN
24847UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24848f_charbig = 'updated by trigger'
24849      WHERE f_int1 = - old.f_int1;
24850END|
24851DELETE FROM t0_aux
24852WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24853
24854# check trigger-8 success: 	1
24855DROP TRIGGER trg_1;
24856UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24857f_int2 = CAST(f_char1 AS SIGNED INT),
24858f_charbig = 'just inserted'
24859   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24860DELETE FROM t0_aux
24861WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24862DELETE FROM t1
24863WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24864CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
24865BEGIN
24866SET new.f_int1 = old.f_int1 + @max_row,
24867new.f_int2 = old.f_int2 - @max_row,
24868new.f_charbig = '####updated per update trigger####';
24869END|
24870UPDATE t1
24871SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
24872f_charbig = '####updated per update statement itself####';
24873Warnings:
24874Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
24875
24876# check trigger-9 success: 	1
24877DROP TRIGGER trg_2;
24878UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24879f_int2 = CAST(f_char1 AS SIGNED INT),
24880f_charbig = CONCAT('===',f_char1,'===');
24881Warnings:
24882Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
24883CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
24884BEGIN
24885SET new.f_int1 = new.f_int1 + @max_row,
24886new.f_int2 = new.f_int2 - @max_row,
24887new.f_charbig = '####updated per update trigger####';
24888END|
24889UPDATE t1
24890SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
24891f_charbig = '####updated per update statement itself####';
24892Warnings:
24893Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
24894
24895# check trigger-10 success: 	1
24896DROP TRIGGER trg_2;
24897UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24898f_int2 = CAST(f_char1 AS SIGNED INT),
24899f_charbig = CONCAT('===',f_char1,'===');
24900Warnings:
24901Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
24902CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
24903BEGIN
24904SET new.f_int1 = @my_max1 + @counter,
24905new.f_int2 = @my_min2 - @counter,
24906new.f_charbig = '####updated per insert trigger####';
24907SET @counter = @counter + 1;
24908END|
24909SET @counter = 1;
24910SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
24911Warnings:
24912Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
24913INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24914SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
24915CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
24916WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
24917ORDER BY f_int1;
24918DROP TRIGGER trg_3;
24919
24920# check trigger-11 success: 	1
24921Warnings:
24922Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
24923DELETE FROM t1
24924WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
24925AND f_int2 <> CAST(f_char1 AS SIGNED INT)
24926AND f_charbig = '####updated per insert trigger####';
24927CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
24928BEGIN
24929SET new.f_int1 = @my_max1 + @counter,
24930new.f_int2 = @my_min2 - @counter,
24931new.f_charbig = '####updated per insert trigger####';
24932SET @counter = @counter + 1;
24933END|
24934SET @counter = 1;
24935SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
24936Warnings:
24937Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
24938INSERT INTO t1 (f_char1, f_char2, f_charbig)
24939SELECT CAST(f_int1 AS CHAR),
24940CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
24941WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
24942ORDER BY f_int1;
24943DROP TRIGGER trg_3;
24944
24945# check trigger-12 success: 	1
24946Warnings:
24947Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
24948DELETE FROM t1
24949WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
24950AND f_int2 <> CAST(f_char1 AS SIGNED INT)
24951AND f_charbig = '####updated per insert trigger####';
24952ANALYZE  TABLE t1;
24953Table	Op	Msg_type	Msg_text
24954test.t1	analyze	status	OK
24955test.t1	analyze	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
24956CHECK    TABLE t1 EXTENDED;
24957Table	Op	Msg_type	Msg_text
24958test.t1	check	status	OK
24959test.t1	check	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
24960CHECKSUM TABLE t1 EXTENDED;
24961Table	Checksum
24962test.t1	<some_value>
24963OPTIMIZE TABLE t1;
24964Table	Op	Msg_type	Msg_text
24965test.t1	optimize	status	OK
24966test.t1	optimize	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
24967# check layout success:    1
24968REPAIR   TABLE t1 EXTENDED;
24969Table	Op	Msg_type	Msg_text
24970test.t1	repair	status	OK
24971test.t1	repair	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
24972# check layout success:    1
24973TRUNCATE t1;
24974Warnings:
24975Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
24976
24977# check TRUNCATE success: 	1
24978# check layout success:    1
24979# End usability test (inc/partition_check.inc)
24980DROP TABLE t1;
24981CREATE TABLE t1 (
24982f_int1 INTEGER,
24983f_int2 INTEGER,
24984f_char1 CHAR(20),
24985f_char2 CHAR(20),
24986f_charbig VARCHAR(1000)
24987, UNIQUE INDEX uidx (f_int2,f_int1)
24988)
24989PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int2)
24990(PARTITION part1 VALUES LESS THAN (0)
24991(SUBPARTITION subpart11, SUBPARTITION subpart12),
24992PARTITION part2 VALUES LESS THAN (5)
24993(SUBPARTITION subpart21, SUBPARTITION subpart22),
24994PARTITION part3 VALUES LESS THAN (10)
24995(SUBPARTITION subpart31, SUBPARTITION subpart32),
24996PARTITION part4 VALUES LESS THAN (2147483646)
24997(SUBPARTITION subpart41, SUBPARTITION subpart42));
24998Warnings:
24999Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
25000INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
25001SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
25002WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
25003Warnings:
25004Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
25005ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
25006Warnings:
25007Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
25008INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
25009SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
25010WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
25011Warnings:
25012Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
25013# Start usability test (inc/partition_check.inc)
25014create_command
25015SHOW CREATE TABLE t1;
25016Table	Create Table
25017t1	CREATE TABLE `t1` (
25018  `f_int1` mediumint(9) DEFAULT NULL,
25019  `f_int2` mediumint(9) DEFAULT NULL,
25020  `f_char1` char(20) DEFAULT NULL,
25021  `f_char2` char(20) DEFAULT NULL,
25022  `f_charbig` varchar(1000) DEFAULT NULL,
25023  UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
25024) ENGINE=MyISAM DEFAULT CHARSET=latin1
25025/*!50100 PARTITION BY RANGE (f_int1)
25026SUBPARTITION BY KEY (f_int2)
25027(PARTITION part1 VALUES LESS THAN (0)
25028 (SUBPARTITION subpart11 ENGINE = MyISAM,
25029  SUBPARTITION subpart12 ENGINE = MyISAM),
25030 PARTITION part2 VALUES LESS THAN (5)
25031 (SUBPARTITION subpart21 ENGINE = MyISAM,
25032  SUBPARTITION subpart22 ENGINE = MyISAM),
25033 PARTITION part3 VALUES LESS THAN (10)
25034 (SUBPARTITION subpart31 ENGINE = MyISAM,
25035  SUBPARTITION subpart32 ENGINE = MyISAM),
25036 PARTITION part4 VALUES LESS THAN (2147483646)
25037 (SUBPARTITION subpart41 ENGINE = MyISAM,
25038  SUBPARTITION subpart42 ENGINE = MyISAM)) */
25039
25040unified filelist
25041t1#P#part1#SP#subpart11.MYD
25042t1#P#part1#SP#subpart11.MYI
25043t1#P#part1#SP#subpart12.MYD
25044t1#P#part1#SP#subpart12.MYI
25045t1#P#part2#SP#subpart21.MYD
25046t1#P#part2#SP#subpart21.MYI
25047t1#P#part2#SP#subpart22.MYD
25048t1#P#part2#SP#subpart22.MYI
25049t1#P#part3#SP#subpart31.MYD
25050t1#P#part3#SP#subpart31.MYI
25051t1#P#part3#SP#subpart32.MYD
25052t1#P#part3#SP#subpart32.MYI
25053t1#P#part4#SP#subpart41.MYD
25054t1#P#part4#SP#subpart41.MYI
25055t1#P#part4#SP#subpart42.MYD
25056t1#P#part4#SP#subpart42.MYI
25057t1.frm
25058t1.par
25059
25060# check prerequisites-1 success:    1
25061# check COUNT(*) success:    1
25062# check MIN/MAX(f_int1) success:    1
25063# check MIN/MAX(f_int2) success:    1
25064INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25065SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
25066CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
25067WHERE f_int1 IN (2,3);
25068ERROR 23000: Duplicate entry '2-2' for key 'uidx'
25069# check prerequisites-3 success:    1
25070# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
25071INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25072SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
25073CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
25074WHERE f_int1 IN (2,3);
25075DELETE FROM t1 WHERE f_charbig = 'delete me';
25076INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25077SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
25078CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
25079WHERE f_int1 IN (2,3);
25080DELETE FROM t1 WHERE f_charbig = 'delete me';
25081# check read via f_int1 success: 1
25082# check read via f_int2 success: 1
25083
25084# check multiple-1 success: 	1
25085DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
25086
25087# check multiple-2 success: 	1
25088INSERT INTO t1 SELECT * FROM t0_template
25089WHERE MOD(f_int1,3) = 0;
25090
25091# check multiple-3 success: 	1
25092UPDATE t1 SET f_int1 = f_int1 + @max_row
25093WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
25094AND @max_row_div2 + @max_row_div4;
25095
25096# check multiple-4 success: 	1
25097DELETE FROM t1
25098WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
25099AND @max_row_div2 + @max_row_div4 + @max_row;
25100
25101# check multiple-5 success: 	1
25102SELECT COUNT(*) INTO @try_count FROM t0_template
25103WHERE MOD(f_int1,3) = 0
25104AND f_int1 BETWEEN @max_row_div2 AND @max_row;
25105SELECT COUNT(*) INTO @clash_count
25106FROM t1 INNER JOIN t0_template USING(f_int1)
25107WHERE MOD(f_int1,3) = 0
25108AND f_int1 BETWEEN @max_row_div2 AND @max_row;
25109SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
25110INSERT INTO t1
25111SET f_int1 = @cur_value , f_int2 = @cur_value,
25112f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
25113f_charbig = '#SINGLE#';
25114
25115# check single-1 success: 	1
25116SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
25117INSERT INTO t1
25118SET f_int1 = @cur_value , f_int2 = @cur_value,
25119f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
25120f_charbig = '#SINGLE#';
25121
25122# check single-2 success: 	1
25123SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
25124SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
25125UPDATE t1 SET f_int1 = @cur_value2
25126WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
25127
25128# check single-3 success: 	1
25129SET @cur_value1= -1;
25130SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
25131UPDATE t1 SET f_int1 = @cur_value1
25132WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
25133
25134# check single-4 success: 	1
25135SELECT MAX(f_int1) INTO @cur_value FROM t1;
25136DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
25137
25138# check single-5 success: 	1
25139DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
25140
25141# check single-6 success: 	1
25142INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
25143Warnings:
25144Warning	1264	Out of range value for column 'f_int1' at row 1
25145Warning	1264	Out of range value for column 'f_int2' at row 1
25146
25147# check single-7 success: 	1
25148DELETE FROM t1 WHERE f_charbig = '#2147483647##';
25149DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
25150INSERT t1 SET f_int1 = 0 , f_int2 = 0,
25151f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
25152f_charbig = '#NULL#';
25153INSERT INTO t1
25154SET f_int1 = NULL , f_int2 = -@max_row,
25155f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
25156f_charbig = '#NULL#';
25157# check null success:    1
25158
25159# check null-1 success: 	1
25160UPDATE t1 SET f_int1 = -@max_row
25161WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
25162AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
25163
25164# check null-2 success: 	1
25165UPDATE t1 SET f_int1 = NULL
25166WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
25167AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
25168
25169# check null-3 success: 	1
25170DELETE FROM t1
25171WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
25172AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
25173
25174# check null-4 success: 	1
25175DELETE FROM t1
25176WHERE f_int1 = 0 AND f_int2 = 0
25177AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
25178AND f_charbig = '#NULL#';
25179INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25180SELECT f_int1, f_int1, '', '', 'was inserted'
25181   FROM t0_template source_tab
25182WHERE MOD(f_int1,3) = 0
25183AND f_int1 BETWEEN @max_row_div2 AND @max_row
25184ON DUPLICATE KEY
25185UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
25186f_int2 = 2 * @max_row + source_tab.f_int1,
25187f_charbig = 'was updated';
25188
25189# check unique-1-a success: 	1
25190
25191# check unique-1-b success: 	1
25192DELETE FROM t1 WHERE f_charbig = 'was inserted';
25193UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25194f_int2 = CAST(f_char1 AS SIGNED INT),
25195f_charbig = CONCAT('===',f_char1,'===')
25196WHERE f_charbig = 'was updated';
25197REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25198SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
25199   FROM t0_template source_tab
25200WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
25201
25202# check replace success: 	1
25203DELETE FROM t1
25204WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
25205DELETE FROM t1
25206WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
25207f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
25208UPDATE t1 SET f_int2 = f_int1,
25209f_char1 = CAST(f_int1 AS CHAR),
25210f_char2 = CAST(f_int1 AS CHAR),
25211f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
25212WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
25213SET AUTOCOMMIT= 0;
25214INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25215SELECT f_int1, f_int1, '', '', 'was inserted'
25216FROM t0_template source_tab
25217WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
25218
25219# check transactions-1 success: 	1
25220COMMIT WORK;
25221
25222# check transactions-2 success: 	1
25223ROLLBACK WORK;
25224
25225# check transactions-3 success: 	1
25226DELETE FROM t1 WHERE f_charbig = 'was inserted';
25227COMMIT WORK;
25228ROLLBACK WORK;
25229
25230# check transactions-4 success: 	1
25231INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25232SELECT f_int1, f_int1, '', '', 'was inserted'
25233FROM t0_template source_tab
25234WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
25235
25236# check transactions-5 success: 	1
25237ROLLBACK WORK;
25238Warnings:
25239Warning	1196	Some non-transactional changed tables couldn't be rolled back
25240
25241# check transactions-6 success: 	1
25242# INFO: Storage engine used for t1 seems to be not transactional.
25243COMMIT;
25244
25245# check transactions-7 success: 	1
25246DELETE FROM t1 WHERE f_charbig = 'was inserted';
25247COMMIT WORK;
25248SET @@session.sql_mode = 'traditional';
25249Warnings:
25250Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
25251SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
25252INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25253SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
25254'', '', 'was inserted' FROM t0_template
25255WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
25256ERROR 22012: Division by 0
25257COMMIT;
25258
25259# check transactions-8 success: 	1
25260# INFO: Storage engine used for t1 seems to be unable to revert
25261#       changes made by the failing statement.
25262SET @@session.sql_mode = '';
25263Warnings:
25264Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
25265SET AUTOCOMMIT= 1;
25266DELETE FROM t1 WHERE f_charbig = 'was inserted';
25267COMMIT WORK;
25268UPDATE t1 SET f_charbig = REPEAT('b', 1000);
25269
25270# check special-1 success: 	1
25271UPDATE t1 SET f_charbig = '';
25272
25273# check special-2 success: 	1
25274UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
25275INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
25276SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
25277WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25278INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25279SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25280'just inserted' FROM t0_template
25281WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25282CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
25283BEGIN
25284UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25285f_charbig = 'updated by trigger'
25286      WHERE f_int1 = new.f_int1;
25287END|
25288INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25289SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
25290WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25291
25292# check trigger-1 success: 	1
25293DROP TRIGGER trg_1;
25294UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25295f_int2 = CAST(f_char1 AS SIGNED INT),
25296f_charbig = 'just inserted'
25297   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25298DELETE FROM t0_aux
25299WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25300INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25301SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25302'just inserted' FROM t0_template
25303WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25304CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
25305BEGIN
25306UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25307f_charbig = 'updated by trigger'
25308      WHERE f_int1 = new.f_int1;
25309END|
25310INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25311SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
25312WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25313
25314# check trigger-2 success: 	1
25315DROP TRIGGER trg_1;
25316UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25317f_int2 = CAST(f_char1 AS SIGNED INT),
25318f_charbig = 'just inserted'
25319   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25320DELETE FROM t0_aux
25321WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25322INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25323SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25324'just inserted' FROM t0_template
25325WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25326CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
25327BEGIN
25328UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25329f_charbig = 'updated by trigger'
25330      WHERE f_int1 = new.f_int1;
25331END|
25332UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
25333WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25334
25335# check trigger-3 success: 	1
25336DROP TRIGGER trg_1;
25337UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25338f_int2 = CAST(f_char1 AS SIGNED INT),
25339f_charbig = 'just inserted'
25340   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25341DELETE FROM t0_aux
25342WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25343INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25344SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25345'just inserted' FROM t0_template
25346WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25347CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
25348BEGIN
25349UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25350f_charbig = 'updated by trigger'
25351      WHERE f_int1 = - old.f_int1;
25352END|
25353UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
25354WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25355
25356# check trigger-4 success: 	1
25357DROP TRIGGER trg_1;
25358UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25359f_int2 = CAST(f_char1 AS SIGNED INT),
25360f_charbig = 'just inserted'
25361   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25362DELETE FROM t0_aux
25363WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25364INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25365SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25366'just inserted' FROM t0_template
25367WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25368CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
25369BEGIN
25370UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25371f_charbig = 'updated by trigger'
25372      WHERE f_int1 = new.f_int1;
25373END|
25374UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
25375WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25376
25377# check trigger-5 success: 	1
25378DROP TRIGGER trg_1;
25379UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25380f_int2 = CAST(f_char1 AS SIGNED INT),
25381f_charbig = 'just inserted'
25382   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25383DELETE FROM t0_aux
25384WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25385INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25386SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25387'just inserted' FROM t0_template
25388WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25389CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
25390BEGIN
25391UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25392f_charbig = 'updated by trigger'
25393      WHERE f_int1 = - old.f_int1;
25394END|
25395UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
25396WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25397
25398# check trigger-6 success: 	1
25399DROP TRIGGER trg_1;
25400UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25401f_int2 = CAST(f_char1 AS SIGNED INT),
25402f_charbig = 'just inserted'
25403   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25404DELETE FROM t0_aux
25405WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25406INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25407SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25408'just inserted' FROM t0_template
25409WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25410CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
25411BEGIN
25412UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25413f_charbig = 'updated by trigger'
25414      WHERE f_int1 = - old.f_int1;
25415END|
25416DELETE FROM t0_aux
25417WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25418
25419# check trigger-7 success: 	1
25420DROP TRIGGER trg_1;
25421UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25422f_int2 = CAST(f_char1 AS SIGNED INT),
25423f_charbig = 'just inserted'
25424   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25425DELETE FROM t0_aux
25426WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25427INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25428SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25429'just inserted' FROM t0_template
25430WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25431CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
25432BEGIN
25433UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25434f_charbig = 'updated by trigger'
25435      WHERE f_int1 = - old.f_int1;
25436END|
25437DELETE FROM t0_aux
25438WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25439
25440# check trigger-8 success: 	1
25441DROP TRIGGER trg_1;
25442UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25443f_int2 = CAST(f_char1 AS SIGNED INT),
25444f_charbig = 'just inserted'
25445   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25446DELETE FROM t0_aux
25447WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25448DELETE FROM t1
25449WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25450CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
25451BEGIN
25452SET new.f_int1 = old.f_int1 + @max_row,
25453new.f_int2 = old.f_int2 - @max_row,
25454new.f_charbig = '####updated per update trigger####';
25455END|
25456UPDATE t1
25457SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
25458f_charbig = '####updated per update statement itself####';
25459Warnings:
25460Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
25461
25462# check trigger-9 success: 	1
25463DROP TRIGGER trg_2;
25464UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25465f_int2 = CAST(f_char1 AS SIGNED INT),
25466f_charbig = CONCAT('===',f_char1,'===');
25467Warnings:
25468Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
25469CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
25470BEGIN
25471SET new.f_int1 = new.f_int1 + @max_row,
25472new.f_int2 = new.f_int2 - @max_row,
25473new.f_charbig = '####updated per update trigger####';
25474END|
25475UPDATE t1
25476SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
25477f_charbig = '####updated per update statement itself####';
25478Warnings:
25479Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
25480
25481# check trigger-10 success: 	1
25482DROP TRIGGER trg_2;
25483UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25484f_int2 = CAST(f_char1 AS SIGNED INT),
25485f_charbig = CONCAT('===',f_char1,'===');
25486Warnings:
25487Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
25488CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
25489BEGIN
25490SET new.f_int1 = @my_max1 + @counter,
25491new.f_int2 = @my_min2 - @counter,
25492new.f_charbig = '####updated per insert trigger####';
25493SET @counter = @counter + 1;
25494END|
25495SET @counter = 1;
25496SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
25497Warnings:
25498Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
25499INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25500SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
25501CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
25502WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
25503ORDER BY f_int1;
25504DROP TRIGGER trg_3;
25505
25506# check trigger-11 success: 	1
25507Warnings:
25508Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
25509DELETE FROM t1
25510WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
25511AND f_int2 <> CAST(f_char1 AS SIGNED INT)
25512AND f_charbig = '####updated per insert trigger####';
25513CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
25514BEGIN
25515SET new.f_int1 = @my_max1 + @counter,
25516new.f_int2 = @my_min2 - @counter,
25517new.f_charbig = '####updated per insert trigger####';
25518SET @counter = @counter + 1;
25519END|
25520SET @counter = 1;
25521SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
25522Warnings:
25523Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
25524INSERT INTO t1 (f_char1, f_char2, f_charbig)
25525SELECT CAST(f_int1 AS CHAR),
25526CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
25527WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
25528ORDER BY f_int1;
25529DROP TRIGGER trg_3;
25530
25531# check trigger-12 success: 	1
25532Warnings:
25533Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
25534DELETE FROM t1
25535WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
25536AND f_int2 <> CAST(f_char1 AS SIGNED INT)
25537AND f_charbig = '####updated per insert trigger####';
25538ANALYZE  TABLE t1;
25539Table	Op	Msg_type	Msg_text
25540test.t1	analyze	status	OK
25541test.t1	analyze	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
25542CHECK    TABLE t1 EXTENDED;
25543Table	Op	Msg_type	Msg_text
25544test.t1	check	status	OK
25545test.t1	check	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
25546CHECKSUM TABLE t1 EXTENDED;
25547Table	Checksum
25548test.t1	<some_value>
25549OPTIMIZE TABLE t1;
25550Table	Op	Msg_type	Msg_text
25551test.t1	optimize	status	OK
25552test.t1	optimize	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
25553# check layout success:    1
25554REPAIR   TABLE t1 EXTENDED;
25555Table	Op	Msg_type	Msg_text
25556test.t1	repair	status	OK
25557test.t1	repair	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
25558# check layout success:    1
25559TRUNCATE t1;
25560Warnings:
25561Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
25562
25563# check TRUNCATE success: 	1
25564# check layout success:    1
25565# End usability test (inc/partition_check.inc)
25566DROP TABLE t1;
25567CREATE TABLE t1 (
25568f_int1 INTEGER,
25569f_int2 INTEGER,
25570f_char1 CHAR(20),
25571f_char2 CHAR(20),
25572f_charbig VARCHAR(1000)
25573, UNIQUE INDEX uidx (f_int2,f_int1)
25574)
25575PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int2 + 1)
25576(PARTITION part1 VALUES IN (0)
25577(SUBPARTITION sp11, SUBPARTITION sp12),
25578PARTITION part2 VALUES IN (1)
25579(SUBPARTITION sp21, SUBPARTITION sp22),
25580PARTITION part3 VALUES IN (2)
25581(SUBPARTITION sp31, SUBPARTITION sp32),
25582PARTITION part4 VALUES IN (NULL)
25583(SUBPARTITION sp41, SUBPARTITION sp42));
25584Warnings:
25585Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
25586INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
25587SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
25588WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
25589Warnings:
25590Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
25591ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
25592Warnings:
25593Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
25594INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
25595SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
25596WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
25597Warnings:
25598Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
25599# Start usability test (inc/partition_check.inc)
25600create_command
25601SHOW CREATE TABLE t1;
25602Table	Create Table
25603t1	CREATE TABLE `t1` (
25604  `f_int1` mediumint(9) DEFAULT NULL,
25605  `f_int2` mediumint(9) DEFAULT NULL,
25606  `f_char1` char(20) DEFAULT NULL,
25607  `f_char2` char(20) DEFAULT NULL,
25608  `f_charbig` varchar(1000) DEFAULT NULL,
25609  UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
25610) ENGINE=MyISAM DEFAULT CHARSET=latin1
25611/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
25612SUBPARTITION BY HASH (f_int2 + 1)
25613(PARTITION part1 VALUES IN (0)
25614 (SUBPARTITION sp11 ENGINE = MyISAM,
25615  SUBPARTITION sp12 ENGINE = MyISAM),
25616 PARTITION part2 VALUES IN (1)
25617 (SUBPARTITION sp21 ENGINE = MyISAM,
25618  SUBPARTITION sp22 ENGINE = MyISAM),
25619 PARTITION part3 VALUES IN (2)
25620 (SUBPARTITION sp31 ENGINE = MyISAM,
25621  SUBPARTITION sp32 ENGINE = MyISAM),
25622 PARTITION part4 VALUES IN (NULL)
25623 (SUBPARTITION sp41 ENGINE = MyISAM,
25624  SUBPARTITION sp42 ENGINE = MyISAM)) */
25625
25626unified filelist
25627t1#P#part1#SP#sp11.MYD
25628t1#P#part1#SP#sp11.MYI
25629t1#P#part1#SP#sp12.MYD
25630t1#P#part1#SP#sp12.MYI
25631t1#P#part2#SP#sp21.MYD
25632t1#P#part2#SP#sp21.MYI
25633t1#P#part2#SP#sp22.MYD
25634t1#P#part2#SP#sp22.MYI
25635t1#P#part3#SP#sp31.MYD
25636t1#P#part3#SP#sp31.MYI
25637t1#P#part3#SP#sp32.MYD
25638t1#P#part3#SP#sp32.MYI
25639t1#P#part4#SP#sp41.MYD
25640t1#P#part4#SP#sp41.MYI
25641t1#P#part4#SP#sp42.MYD
25642t1#P#part4#SP#sp42.MYI
25643t1.frm
25644t1.par
25645
25646# check prerequisites-1 success:    1
25647# check COUNT(*) success:    1
25648# check MIN/MAX(f_int1) success:    1
25649# check MIN/MAX(f_int2) success:    1
25650INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25651SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
25652CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
25653WHERE f_int1 IN (2,3);
25654ERROR 23000: Duplicate entry '2-2' for key 'uidx'
25655# check prerequisites-3 success:    1
25656# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
25657INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25658SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
25659CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
25660WHERE f_int1 IN (2,3);
25661DELETE FROM t1 WHERE f_charbig = 'delete me';
25662INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25663SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
25664CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
25665WHERE f_int1 IN (2,3);
25666DELETE FROM t1 WHERE f_charbig = 'delete me';
25667# check read via f_int1 success: 1
25668# check read via f_int2 success: 1
25669
25670# check multiple-1 success: 	1
25671DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
25672
25673# check multiple-2 success: 	1
25674INSERT INTO t1 SELECT * FROM t0_template
25675WHERE MOD(f_int1,3) = 0;
25676
25677# check multiple-3 success: 	1
25678UPDATE t1 SET f_int1 = f_int1 + @max_row
25679WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
25680AND @max_row_div2 + @max_row_div4;
25681
25682# check multiple-4 success: 	1
25683DELETE FROM t1
25684WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
25685AND @max_row_div2 + @max_row_div4 + @max_row;
25686
25687# check multiple-5 success: 	1
25688SELECT COUNT(*) INTO @try_count FROM t0_template
25689WHERE MOD(f_int1,3) = 0
25690AND f_int1 BETWEEN @max_row_div2 AND @max_row;
25691SELECT COUNT(*) INTO @clash_count
25692FROM t1 INNER JOIN t0_template USING(f_int1)
25693WHERE MOD(f_int1,3) = 0
25694AND f_int1 BETWEEN @max_row_div2 AND @max_row;
25695SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
25696INSERT INTO t1
25697SET f_int1 = @cur_value , f_int2 = @cur_value,
25698f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
25699f_charbig = '#SINGLE#';
25700
25701# check single-1 success: 	1
25702SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
25703INSERT INTO t1
25704SET f_int1 = @cur_value , f_int2 = @cur_value,
25705f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
25706f_charbig = '#SINGLE#';
25707
25708# check single-2 success: 	1
25709SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
25710SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
25711UPDATE t1 SET f_int1 = @cur_value2
25712WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
25713
25714# check single-3 success: 	1
25715SET @cur_value1= -1;
25716SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
25717UPDATE t1 SET f_int1 = @cur_value1
25718WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
25719
25720# check single-4 success: 	1
25721SELECT MAX(f_int1) INTO @cur_value FROM t1;
25722DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
25723
25724# check single-5 success: 	1
25725DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
25726
25727# check single-6 success: 	1
25728INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
25729Warnings:
25730Warning	1264	Out of range value for column 'f_int1' at row 1
25731Warning	1264	Out of range value for column 'f_int2' at row 1
25732
25733# check single-7 success: 	1
25734DELETE FROM t1 WHERE f_charbig = '#2147483647##';
25735DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
25736INSERT t1 SET f_int1 = 0 , f_int2 = 0,
25737f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
25738f_charbig = '#NULL#';
25739INSERT INTO t1
25740SET f_int1 = NULL , f_int2 = -@max_row,
25741f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
25742f_charbig = '#NULL#';
25743# check null success:    1
25744
25745# check null-1 success: 	1
25746UPDATE t1 SET f_int1 = -@max_row
25747WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
25748AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
25749
25750# check null-2 success: 	1
25751UPDATE t1 SET f_int1 = NULL
25752WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
25753AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
25754
25755# check null-3 success: 	1
25756DELETE FROM t1
25757WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
25758AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
25759
25760# check null-4 success: 	1
25761DELETE FROM t1
25762WHERE f_int1 = 0 AND f_int2 = 0
25763AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
25764AND f_charbig = '#NULL#';
25765INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25766SELECT f_int1, f_int1, '', '', 'was inserted'
25767   FROM t0_template source_tab
25768WHERE MOD(f_int1,3) = 0
25769AND f_int1 BETWEEN @max_row_div2 AND @max_row
25770ON DUPLICATE KEY
25771UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
25772f_int2 = 2 * @max_row + source_tab.f_int1,
25773f_charbig = 'was updated';
25774
25775# check unique-1-a success: 	1
25776
25777# check unique-1-b success: 	1
25778DELETE FROM t1 WHERE f_charbig = 'was inserted';
25779UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25780f_int2 = CAST(f_char1 AS SIGNED INT),
25781f_charbig = CONCAT('===',f_char1,'===')
25782WHERE f_charbig = 'was updated';
25783REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25784SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
25785   FROM t0_template source_tab
25786WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
25787
25788# check replace success: 	1
25789DELETE FROM t1
25790WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
25791DELETE FROM t1
25792WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
25793f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
25794UPDATE t1 SET f_int2 = f_int1,
25795f_char1 = CAST(f_int1 AS CHAR),
25796f_char2 = CAST(f_int1 AS CHAR),
25797f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
25798WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
25799SET AUTOCOMMIT= 0;
25800INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25801SELECT f_int1, f_int1, '', '', 'was inserted'
25802FROM t0_template source_tab
25803WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
25804
25805# check transactions-1 success: 	1
25806COMMIT WORK;
25807
25808# check transactions-2 success: 	1
25809ROLLBACK WORK;
25810
25811# check transactions-3 success: 	1
25812DELETE FROM t1 WHERE f_charbig = 'was inserted';
25813COMMIT WORK;
25814ROLLBACK WORK;
25815
25816# check transactions-4 success: 	1
25817INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25818SELECT f_int1, f_int1, '', '', 'was inserted'
25819FROM t0_template source_tab
25820WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
25821
25822# check transactions-5 success: 	1
25823ROLLBACK WORK;
25824Warnings:
25825Warning	1196	Some non-transactional changed tables couldn't be rolled back
25826
25827# check transactions-6 success: 	1
25828# INFO: Storage engine used for t1 seems to be not transactional.
25829COMMIT;
25830
25831# check transactions-7 success: 	1
25832DELETE FROM t1 WHERE f_charbig = 'was inserted';
25833COMMIT WORK;
25834SET @@session.sql_mode = 'traditional';
25835Warnings:
25836Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
25837SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
25838INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25839SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
25840'', '', 'was inserted' FROM t0_template
25841WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
25842ERROR 22012: Division by 0
25843COMMIT;
25844
25845# check transactions-8 success: 	1
25846# INFO: Storage engine used for t1 seems to be unable to revert
25847#       changes made by the failing statement.
25848SET @@session.sql_mode = '';
25849Warnings:
25850Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
25851SET AUTOCOMMIT= 1;
25852DELETE FROM t1 WHERE f_charbig = 'was inserted';
25853COMMIT WORK;
25854UPDATE t1 SET f_charbig = REPEAT('b', 1000);
25855
25856# check special-1 success: 	1
25857UPDATE t1 SET f_charbig = '';
25858
25859# check special-2 success: 	1
25860UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
25861INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
25862SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
25863WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25864INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25865SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25866'just inserted' FROM t0_template
25867WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25868CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
25869BEGIN
25870UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25871f_charbig = 'updated by trigger'
25872      WHERE f_int1 = new.f_int1;
25873END|
25874INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25875SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
25876WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25877
25878# check trigger-1 success: 	1
25879DROP TRIGGER trg_1;
25880UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25881f_int2 = CAST(f_char1 AS SIGNED INT),
25882f_charbig = 'just inserted'
25883   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25884DELETE FROM t0_aux
25885WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25886INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25887SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25888'just inserted' FROM t0_template
25889WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25890CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
25891BEGIN
25892UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25893f_charbig = 'updated by trigger'
25894      WHERE f_int1 = new.f_int1;
25895END|
25896INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25897SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
25898WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25899
25900# check trigger-2 success: 	1
25901DROP TRIGGER trg_1;
25902UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25903f_int2 = CAST(f_char1 AS SIGNED INT),
25904f_charbig = 'just inserted'
25905   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25906DELETE FROM t0_aux
25907WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25908INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25909SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25910'just inserted' FROM t0_template
25911WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25912CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
25913BEGIN
25914UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25915f_charbig = 'updated by trigger'
25916      WHERE f_int1 = new.f_int1;
25917END|
25918UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
25919WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25920
25921# check trigger-3 success: 	1
25922DROP TRIGGER trg_1;
25923UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25924f_int2 = CAST(f_char1 AS SIGNED INT),
25925f_charbig = 'just inserted'
25926   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25927DELETE FROM t0_aux
25928WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25929INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25930SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25931'just inserted' FROM t0_template
25932WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25933CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
25934BEGIN
25935UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25936f_charbig = 'updated by trigger'
25937      WHERE f_int1 = - old.f_int1;
25938END|
25939UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
25940WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25941
25942# check trigger-4 success: 	1
25943DROP TRIGGER trg_1;
25944UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25945f_int2 = CAST(f_char1 AS SIGNED INT),
25946f_charbig = 'just inserted'
25947   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25948DELETE FROM t0_aux
25949WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25950INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25951SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25952'just inserted' FROM t0_template
25953WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25954CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
25955BEGIN
25956UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25957f_charbig = 'updated by trigger'
25958      WHERE f_int1 = new.f_int1;
25959END|
25960UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
25961WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25962
25963# check trigger-5 success: 	1
25964DROP TRIGGER trg_1;
25965UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25966f_int2 = CAST(f_char1 AS SIGNED INT),
25967f_charbig = 'just inserted'
25968   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25969DELETE FROM t0_aux
25970WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25971INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25972SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25973'just inserted' FROM t0_template
25974WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25975CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
25976BEGIN
25977UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25978f_charbig = 'updated by trigger'
25979      WHERE f_int1 = - old.f_int1;
25980END|
25981UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
25982WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25983
25984# check trigger-6 success: 	1
25985DROP TRIGGER trg_1;
25986UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25987f_int2 = CAST(f_char1 AS SIGNED INT),
25988f_charbig = 'just inserted'
25989   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25990DELETE FROM t0_aux
25991WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25992INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25993SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25994'just inserted' FROM t0_template
25995WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25996CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
25997BEGIN
25998UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25999f_charbig = 'updated by trigger'
26000      WHERE f_int1 = - old.f_int1;
26001END|
26002DELETE FROM t0_aux
26003WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26004
26005# check trigger-7 success: 	1
26006DROP TRIGGER trg_1;
26007UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26008f_int2 = CAST(f_char1 AS SIGNED INT),
26009f_charbig = 'just inserted'
26010   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26011DELETE FROM t0_aux
26012WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26013INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26014SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26015'just inserted' FROM t0_template
26016WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26017CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
26018BEGIN
26019UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26020f_charbig = 'updated by trigger'
26021      WHERE f_int1 = - old.f_int1;
26022END|
26023DELETE FROM t0_aux
26024WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26025
26026# check trigger-8 success: 	1
26027DROP TRIGGER trg_1;
26028UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26029f_int2 = CAST(f_char1 AS SIGNED INT),
26030f_charbig = 'just inserted'
26031   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26032DELETE FROM t0_aux
26033WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26034DELETE FROM t1
26035WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26036CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
26037BEGIN
26038SET new.f_int1 = old.f_int1 + @max_row,
26039new.f_int2 = old.f_int2 - @max_row,
26040new.f_charbig = '####updated per update trigger####';
26041END|
26042UPDATE t1
26043SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
26044f_charbig = '####updated per update statement itself####';
26045Warnings:
26046Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
26047
26048# check trigger-9 success: 	1
26049DROP TRIGGER trg_2;
26050UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26051f_int2 = CAST(f_char1 AS SIGNED INT),
26052f_charbig = CONCAT('===',f_char1,'===');
26053Warnings:
26054Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
26055CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
26056BEGIN
26057SET new.f_int1 = new.f_int1 + @max_row,
26058new.f_int2 = new.f_int2 - @max_row,
26059new.f_charbig = '####updated per update trigger####';
26060END|
26061UPDATE t1
26062SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
26063f_charbig = '####updated per update statement itself####';
26064Warnings:
26065Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
26066
26067# check trigger-10 success: 	1
26068DROP TRIGGER trg_2;
26069UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26070f_int2 = CAST(f_char1 AS SIGNED INT),
26071f_charbig = CONCAT('===',f_char1,'===');
26072Warnings:
26073Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
26074CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
26075BEGIN
26076SET new.f_int1 = @my_max1 + @counter,
26077new.f_int2 = @my_min2 - @counter,
26078new.f_charbig = '####updated per insert trigger####';
26079SET @counter = @counter + 1;
26080END|
26081SET @counter = 1;
26082SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
26083Warnings:
26084Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
26085INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26086SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
26087CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
26088WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
26089ORDER BY f_int1;
26090DROP TRIGGER trg_3;
26091
26092# check trigger-11 success: 	1
26093Warnings:
26094Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
26095DELETE FROM t1
26096WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
26097AND f_int2 <> CAST(f_char1 AS SIGNED INT)
26098AND f_charbig = '####updated per insert trigger####';
26099CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
26100BEGIN
26101SET new.f_int1 = @my_max1 + @counter,
26102new.f_int2 = @my_min2 - @counter,
26103new.f_charbig = '####updated per insert trigger####';
26104SET @counter = @counter + 1;
26105END|
26106SET @counter = 1;
26107SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
26108Warnings:
26109Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
26110INSERT INTO t1 (f_char1, f_char2, f_charbig)
26111SELECT CAST(f_int1 AS CHAR),
26112CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
26113WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
26114ORDER BY f_int1;
26115DROP TRIGGER trg_3;
26116
26117# check trigger-12 success: 	1
26118Warnings:
26119Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
26120DELETE FROM t1
26121WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
26122AND f_int2 <> CAST(f_char1 AS SIGNED INT)
26123AND f_charbig = '####updated per insert trigger####';
26124ANALYZE  TABLE t1;
26125Table	Op	Msg_type	Msg_text
26126test.t1	analyze	status	OK
26127test.t1	analyze	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
26128CHECK    TABLE t1 EXTENDED;
26129Table	Op	Msg_type	Msg_text
26130test.t1	check	status	OK
26131test.t1	check	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
26132CHECKSUM TABLE t1 EXTENDED;
26133Table	Checksum
26134test.t1	<some_value>
26135OPTIMIZE TABLE t1;
26136Table	Op	Msg_type	Msg_text
26137test.t1	optimize	status	OK
26138test.t1	optimize	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
26139# check layout success:    1
26140REPAIR   TABLE t1 EXTENDED;
26141Table	Op	Msg_type	Msg_text
26142test.t1	repair	status	OK
26143test.t1	repair	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
26144# check layout success:    1
26145TRUNCATE t1;
26146Warnings:
26147Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
26148
26149# check TRUNCATE success: 	1
26150# check layout success:    1
26151# End usability test (inc/partition_check.inc)
26152DROP TABLE t1;
26153CREATE TABLE t1 (
26154f_int1 INTEGER,
26155f_int2 INTEGER,
26156f_char1 CHAR(20),
26157f_char2 CHAR(20),
26158f_charbig VARCHAR(1000)
26159, UNIQUE INDEX uidx (f_int2,f_int1)
26160)
26161PARTITION BY LIST(ABS(MOD(f_int1,2)))
26162SUBPARTITION BY KEY(f_int2)  SUBPARTITIONS 3
26163(PARTITION part1 VALUES IN (0),
26164PARTITION part2 VALUES IN (1),
26165PARTITION part3 VALUES IN (NULL));
26166Warnings:
26167Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
26168INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
26169SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
26170WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
26171Warnings:
26172Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
26173ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
26174Warnings:
26175Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
26176INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
26177SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
26178WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
26179Warnings:
26180Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
26181# Start usability test (inc/partition_check.inc)
26182create_command
26183SHOW CREATE TABLE t1;
26184Table	Create Table
26185t1	CREATE TABLE `t1` (
26186  `f_int1` mediumint(9) DEFAULT NULL,
26187  `f_int2` mediumint(9) DEFAULT NULL,
26188  `f_char1` char(20) DEFAULT NULL,
26189  `f_char2` char(20) DEFAULT NULL,
26190  `f_charbig` varchar(1000) DEFAULT NULL,
26191  UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
26192) ENGINE=MyISAM DEFAULT CHARSET=latin1
26193/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
26194SUBPARTITION BY KEY (f_int2)
26195SUBPARTITIONS 3
26196(PARTITION part1 VALUES IN (0) ENGINE = MyISAM,
26197 PARTITION part2 VALUES IN (1) ENGINE = MyISAM,
26198 PARTITION part3 VALUES IN (NULL) ENGINE = MyISAM) */
26199
26200unified filelist
26201t1#P#part1#SP#part1sp0.MYD
26202t1#P#part1#SP#part1sp0.MYI
26203t1#P#part1#SP#part1sp1.MYD
26204t1#P#part1#SP#part1sp1.MYI
26205t1#P#part1#SP#part1sp2.MYD
26206t1#P#part1#SP#part1sp2.MYI
26207t1#P#part2#SP#part2sp0.MYD
26208t1#P#part2#SP#part2sp0.MYI
26209t1#P#part2#SP#part2sp1.MYD
26210t1#P#part2#SP#part2sp1.MYI
26211t1#P#part2#SP#part2sp2.MYD
26212t1#P#part2#SP#part2sp2.MYI
26213t1#P#part3#SP#part3sp0.MYD
26214t1#P#part3#SP#part3sp0.MYI
26215t1#P#part3#SP#part3sp1.MYD
26216t1#P#part3#SP#part3sp1.MYI
26217t1#P#part3#SP#part3sp2.MYD
26218t1#P#part3#SP#part3sp2.MYI
26219t1.frm
26220t1.par
26221
26222# check prerequisites-1 success:    1
26223# check COUNT(*) success:    1
26224# check MIN/MAX(f_int1) success:    1
26225# check MIN/MAX(f_int2) success:    1
26226INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26227SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
26228CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
26229WHERE f_int1 IN (2,3);
26230ERROR 23000: Duplicate entry '2-2' for key 'uidx'
26231# check prerequisites-3 success:    1
26232# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
26233INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26234SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
26235CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
26236WHERE f_int1 IN (2,3);
26237DELETE FROM t1 WHERE f_charbig = 'delete me';
26238INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26239SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
26240CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
26241WHERE f_int1 IN (2,3);
26242DELETE FROM t1 WHERE f_charbig = 'delete me';
26243# check read via f_int1 success: 1
26244# check read via f_int2 success: 1
26245
26246# check multiple-1 success: 	1
26247DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
26248
26249# check multiple-2 success: 	1
26250INSERT INTO t1 SELECT * FROM t0_template
26251WHERE MOD(f_int1,3) = 0;
26252
26253# check multiple-3 success: 	1
26254UPDATE t1 SET f_int1 = f_int1 + @max_row
26255WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
26256AND @max_row_div2 + @max_row_div4;
26257
26258# check multiple-4 success: 	1
26259DELETE FROM t1
26260WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
26261AND @max_row_div2 + @max_row_div4 + @max_row;
26262
26263# check multiple-5 success: 	1
26264SELECT COUNT(*) INTO @try_count FROM t0_template
26265WHERE MOD(f_int1,3) = 0
26266AND f_int1 BETWEEN @max_row_div2 AND @max_row;
26267SELECT COUNT(*) INTO @clash_count
26268FROM t1 INNER JOIN t0_template USING(f_int1)
26269WHERE MOD(f_int1,3) = 0
26270AND f_int1 BETWEEN @max_row_div2 AND @max_row;
26271SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
26272INSERT INTO t1
26273SET f_int1 = @cur_value , f_int2 = @cur_value,
26274f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
26275f_charbig = '#SINGLE#';
26276
26277# check single-1 success: 	1
26278SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
26279INSERT INTO t1
26280SET f_int1 = @cur_value , f_int2 = @cur_value,
26281f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
26282f_charbig = '#SINGLE#';
26283
26284# check single-2 success: 	1
26285SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
26286SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
26287UPDATE t1 SET f_int1 = @cur_value2
26288WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
26289
26290# check single-3 success: 	1
26291SET @cur_value1= -1;
26292SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
26293UPDATE t1 SET f_int1 = @cur_value1
26294WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
26295
26296# check single-4 success: 	1
26297SELECT MAX(f_int1) INTO @cur_value FROM t1;
26298DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
26299
26300# check single-5 success: 	1
26301DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
26302
26303# check single-6 success: 	1
26304INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
26305Warnings:
26306Warning	1264	Out of range value for column 'f_int1' at row 1
26307Warning	1264	Out of range value for column 'f_int2' at row 1
26308
26309# check single-7 success: 	1
26310DELETE FROM t1 WHERE f_charbig = '#2147483647##';
26311DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
26312INSERT t1 SET f_int1 = 0 , f_int2 = 0,
26313f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
26314f_charbig = '#NULL#';
26315INSERT INTO t1
26316SET f_int1 = NULL , f_int2 = -@max_row,
26317f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
26318f_charbig = '#NULL#';
26319# check null success:    1
26320
26321# check null-1 success: 	1
26322UPDATE t1 SET f_int1 = -@max_row
26323WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
26324AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
26325
26326# check null-2 success: 	1
26327UPDATE t1 SET f_int1 = NULL
26328WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
26329AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
26330
26331# check null-3 success: 	1
26332DELETE FROM t1
26333WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
26334AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
26335
26336# check null-4 success: 	1
26337DELETE FROM t1
26338WHERE f_int1 = 0 AND f_int2 = 0
26339AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
26340AND f_charbig = '#NULL#';
26341INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26342SELECT f_int1, f_int1, '', '', 'was inserted'
26343   FROM t0_template source_tab
26344WHERE MOD(f_int1,3) = 0
26345AND f_int1 BETWEEN @max_row_div2 AND @max_row
26346ON DUPLICATE KEY
26347UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
26348f_int2 = 2 * @max_row + source_tab.f_int1,
26349f_charbig = 'was updated';
26350
26351# check unique-1-a success: 	1
26352
26353# check unique-1-b success: 	1
26354DELETE FROM t1 WHERE f_charbig = 'was inserted';
26355UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26356f_int2 = CAST(f_char1 AS SIGNED INT),
26357f_charbig = CONCAT('===',f_char1,'===')
26358WHERE f_charbig = 'was updated';
26359REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26360SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
26361   FROM t0_template source_tab
26362WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
26363
26364# check replace success: 	1
26365DELETE FROM t1
26366WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
26367DELETE FROM t1
26368WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
26369f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
26370UPDATE t1 SET f_int2 = f_int1,
26371f_char1 = CAST(f_int1 AS CHAR),
26372f_char2 = CAST(f_int1 AS CHAR),
26373f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
26374WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
26375SET AUTOCOMMIT= 0;
26376INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26377SELECT f_int1, f_int1, '', '', 'was inserted'
26378FROM t0_template source_tab
26379WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
26380
26381# check transactions-1 success: 	1
26382COMMIT WORK;
26383
26384# check transactions-2 success: 	1
26385ROLLBACK WORK;
26386
26387# check transactions-3 success: 	1
26388DELETE FROM t1 WHERE f_charbig = 'was inserted';
26389COMMIT WORK;
26390ROLLBACK WORK;
26391
26392# check transactions-4 success: 	1
26393INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26394SELECT f_int1, f_int1, '', '', 'was inserted'
26395FROM t0_template source_tab
26396WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
26397
26398# check transactions-5 success: 	1
26399ROLLBACK WORK;
26400Warnings:
26401Warning	1196	Some non-transactional changed tables couldn't be rolled back
26402
26403# check transactions-6 success: 	1
26404# INFO: Storage engine used for t1 seems to be not transactional.
26405COMMIT;
26406
26407# check transactions-7 success: 	1
26408DELETE FROM t1 WHERE f_charbig = 'was inserted';
26409COMMIT WORK;
26410SET @@session.sql_mode = 'traditional';
26411Warnings:
26412Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
26413SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
26414INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26415SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
26416'', '', 'was inserted' FROM t0_template
26417WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
26418ERROR 22012: Division by 0
26419COMMIT;
26420
26421# check transactions-8 success: 	1
26422# INFO: Storage engine used for t1 seems to be unable to revert
26423#       changes made by the failing statement.
26424SET @@session.sql_mode = '';
26425Warnings:
26426Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
26427SET AUTOCOMMIT= 1;
26428DELETE FROM t1 WHERE f_charbig = 'was inserted';
26429COMMIT WORK;
26430UPDATE t1 SET f_charbig = REPEAT('b', 1000);
26431
26432# check special-1 success: 	1
26433UPDATE t1 SET f_charbig = '';
26434
26435# check special-2 success: 	1
26436UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
26437INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
26438SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
26439WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26440INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26441SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26442'just inserted' FROM t0_template
26443WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26444CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
26445BEGIN
26446UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26447f_charbig = 'updated by trigger'
26448      WHERE f_int1 = new.f_int1;
26449END|
26450INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26451SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
26452WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26453
26454# check trigger-1 success: 	1
26455DROP TRIGGER trg_1;
26456UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26457f_int2 = CAST(f_char1 AS SIGNED INT),
26458f_charbig = 'just inserted'
26459   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26460DELETE FROM t0_aux
26461WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26462INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26463SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26464'just inserted' FROM t0_template
26465WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26466CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
26467BEGIN
26468UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26469f_charbig = 'updated by trigger'
26470      WHERE f_int1 = new.f_int1;
26471END|
26472INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26473SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
26474WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26475
26476# check trigger-2 success: 	1
26477DROP TRIGGER trg_1;
26478UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26479f_int2 = CAST(f_char1 AS SIGNED INT),
26480f_charbig = 'just inserted'
26481   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26482DELETE FROM t0_aux
26483WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26484INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26485SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26486'just inserted' FROM t0_template
26487WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26488CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
26489BEGIN
26490UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26491f_charbig = 'updated by trigger'
26492      WHERE f_int1 = new.f_int1;
26493END|
26494UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
26495WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26496
26497# check trigger-3 success: 	1
26498DROP TRIGGER trg_1;
26499UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26500f_int2 = CAST(f_char1 AS SIGNED INT),
26501f_charbig = 'just inserted'
26502   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26503DELETE FROM t0_aux
26504WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26505INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26506SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26507'just inserted' FROM t0_template
26508WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26509CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
26510BEGIN
26511UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26512f_charbig = 'updated by trigger'
26513      WHERE f_int1 = - old.f_int1;
26514END|
26515UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
26516WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26517
26518# check trigger-4 success: 	1
26519DROP TRIGGER trg_1;
26520UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26521f_int2 = CAST(f_char1 AS SIGNED INT),
26522f_charbig = 'just inserted'
26523   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26524DELETE FROM t0_aux
26525WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26526INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26527SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26528'just inserted' FROM t0_template
26529WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26530CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
26531BEGIN
26532UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26533f_charbig = 'updated by trigger'
26534      WHERE f_int1 = new.f_int1;
26535END|
26536UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
26537WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26538
26539# check trigger-5 success: 	1
26540DROP TRIGGER trg_1;
26541UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26542f_int2 = CAST(f_char1 AS SIGNED INT),
26543f_charbig = 'just inserted'
26544   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26545DELETE FROM t0_aux
26546WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26547INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26548SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26549'just inserted' FROM t0_template
26550WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26551CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
26552BEGIN
26553UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26554f_charbig = 'updated by trigger'
26555      WHERE f_int1 = - old.f_int1;
26556END|
26557UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
26558WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26559
26560# check trigger-6 success: 	1
26561DROP TRIGGER trg_1;
26562UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26563f_int2 = CAST(f_char1 AS SIGNED INT),
26564f_charbig = 'just inserted'
26565   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26566DELETE FROM t0_aux
26567WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26568INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26569SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26570'just inserted' FROM t0_template
26571WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26572CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
26573BEGIN
26574UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26575f_charbig = 'updated by trigger'
26576      WHERE f_int1 = - old.f_int1;
26577END|
26578DELETE FROM t0_aux
26579WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26580
26581# check trigger-7 success: 	1
26582DROP TRIGGER trg_1;
26583UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26584f_int2 = CAST(f_char1 AS SIGNED INT),
26585f_charbig = 'just inserted'
26586   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26587DELETE FROM t0_aux
26588WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26589INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26590SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26591'just inserted' FROM t0_template
26592WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26593CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
26594BEGIN
26595UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26596f_charbig = 'updated by trigger'
26597      WHERE f_int1 = - old.f_int1;
26598END|
26599DELETE FROM t0_aux
26600WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26601
26602# check trigger-8 success: 	1
26603DROP TRIGGER trg_1;
26604UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26605f_int2 = CAST(f_char1 AS SIGNED INT),
26606f_charbig = 'just inserted'
26607   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26608DELETE FROM t0_aux
26609WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26610DELETE FROM t1
26611WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26612CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
26613BEGIN
26614SET new.f_int1 = old.f_int1 + @max_row,
26615new.f_int2 = old.f_int2 - @max_row,
26616new.f_charbig = '####updated per update trigger####';
26617END|
26618UPDATE t1
26619SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
26620f_charbig = '####updated per update statement itself####';
26621Warnings:
26622Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
26623
26624# check trigger-9 success: 	1
26625DROP TRIGGER trg_2;
26626UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26627f_int2 = CAST(f_char1 AS SIGNED INT),
26628f_charbig = CONCAT('===',f_char1,'===');
26629Warnings:
26630Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
26631CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
26632BEGIN
26633SET new.f_int1 = new.f_int1 + @max_row,
26634new.f_int2 = new.f_int2 - @max_row,
26635new.f_charbig = '####updated per update trigger####';
26636END|
26637UPDATE t1
26638SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
26639f_charbig = '####updated per update statement itself####';
26640Warnings:
26641Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
26642
26643# check trigger-10 success: 	1
26644DROP TRIGGER trg_2;
26645UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26646f_int2 = CAST(f_char1 AS SIGNED INT),
26647f_charbig = CONCAT('===',f_char1,'===');
26648Warnings:
26649Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
26650CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
26651BEGIN
26652SET new.f_int1 = @my_max1 + @counter,
26653new.f_int2 = @my_min2 - @counter,
26654new.f_charbig = '####updated per insert trigger####';
26655SET @counter = @counter + 1;
26656END|
26657SET @counter = 1;
26658SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
26659Warnings:
26660Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
26661INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26662SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
26663CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
26664WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
26665ORDER BY f_int1;
26666DROP TRIGGER trg_3;
26667
26668# check trigger-11 success: 	1
26669Warnings:
26670Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
26671DELETE FROM t1
26672WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
26673AND f_int2 <> CAST(f_char1 AS SIGNED INT)
26674AND f_charbig = '####updated per insert trigger####';
26675CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
26676BEGIN
26677SET new.f_int1 = @my_max1 + @counter,
26678new.f_int2 = @my_min2 - @counter,
26679new.f_charbig = '####updated per insert trigger####';
26680SET @counter = @counter + 1;
26681END|
26682SET @counter = 1;
26683SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
26684Warnings:
26685Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
26686INSERT INTO t1 (f_char1, f_char2, f_charbig)
26687SELECT CAST(f_int1 AS CHAR),
26688CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
26689WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
26690ORDER BY f_int1;
26691DROP TRIGGER trg_3;
26692
26693# check trigger-12 success: 	1
26694Warnings:
26695Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
26696DELETE FROM t1
26697WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
26698AND f_int2 <> CAST(f_char1 AS SIGNED INT)
26699AND f_charbig = '####updated per insert trigger####';
26700ANALYZE  TABLE t1;
26701Table	Op	Msg_type	Msg_text
26702test.t1	analyze	status	OK
26703test.t1	analyze	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
26704CHECK    TABLE t1 EXTENDED;
26705Table	Op	Msg_type	Msg_text
26706test.t1	check	status	OK
26707test.t1	check	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
26708CHECKSUM TABLE t1 EXTENDED;
26709Table	Checksum
26710test.t1	<some_value>
26711OPTIMIZE TABLE t1;
26712Table	Op	Msg_type	Msg_text
26713test.t1	optimize	status	OK
26714test.t1	optimize	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
26715# check layout success:    1
26716REPAIR   TABLE t1 EXTENDED;
26717Table	Op	Msg_type	Msg_text
26718test.t1	repair	status	OK
26719test.t1	repair	warning	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
26720# check layout success:    1
26721TRUNCATE t1;
26722Warnings:
26723Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
26724
26725# check TRUNCATE success: 	1
26726# check layout success:    1
26727# End usability test (inc/partition_check.inc)
26728DROP TABLE t1;
26729DROP VIEW  IF EXISTS v1;
26730DROP TABLE IF EXISTS t1;
26731DROP TABLE IF EXISTS t0_aux;
26732DROP TABLE IF EXISTS t0_definition;
26733DROP TABLE IF EXISTS t0_template;
26734