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# 0.5 use partition_basic with DATA/INDEX DIRECTORY
45#========================================================================
46
47#========================================================================
48#  Check partitioning methods on just created tables
49#  The tables should be defined without/with PRIMARY KEY and
50#  UNIQUE INDEXes.
51#  Every test round has to check
52#        PARTITION BY HASH/KEY/LIST/RANGE
53#        PARTITION BY RANGE/LIST ... SUBPARTITION BY HASH/KEY ...
54#========================================================================
55#------------------------------------------------------------------------
56#  1   Tables without PRIMARY KEY or UNIQUE INDEXes
57#------------------------------------------------------------------------
58#  1.1 The partitioning function contains one column.
59DROP TABLE IF EXISTS t1;
60CREATE TABLE t1 (
61f_int1 INTEGER,
62f_int2 INTEGER,
63f_char1 CHAR(20),
64f_char2 CHAR(20),
65f_charbig VARCHAR(1000)
66
67)
68PARTITION BY HASH(f_int1) PARTITIONS 2
69(PARTITION p1
70DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
71INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
72PARTITION p2
73DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
74INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir');
75Warnings:
76Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
77INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
78SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
79Warnings:
80Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
81# Start usability test (inc/partition_check.inc)
82create_command
83SHOW CREATE TABLE t1;
84Table	Create Table
85t1	CREATE TABLE `t1` (
86  `f_int1` int(11) DEFAULT NULL,
87  `f_int2` int(11) DEFAULT NULL,
88  `f_char1` char(20) DEFAULT NULL,
89  `f_char2` char(20) DEFAULT NULL,
90  `f_charbig` varchar(1000) DEFAULT NULL
91) ENGINE=MyISAM DEFAULT CHARSET=latin1
92/*!50100 PARTITION BY HASH (f_int1)
93(PARTITION p1 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
94 PARTITION p2 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM) */
95
96unified filelist
97t1#P#p1.MYD
98t1#P#p1.MYI
99t1#P#p2.MYD
100t1#P#p2.MYI
101t1.frm
102t1.par
103t1#P#p1.MYD
104t1#P#p2.MYD
105t1#P#p1.MYI
106t1#P#p2.MYI
107
108# check prerequisites-1 success:    1
109# check COUNT(*) success:    1
110# check MIN/MAX(f_int1) success:    1
111# check MIN/MAX(f_int2) success:    1
112INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
113SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
114CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
115WHERE f_int1 IN (2,3);
116# check prerequisites-3 success:    1
117DELETE FROM t1 WHERE f_charbig = 'delete me';
118# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
119# check read via f_int1 success: 1
120# check read via f_int2 success: 1
121
122# check multiple-1 success: 	1
123DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
124
125# check multiple-2 success: 	1
126INSERT INTO t1 SELECT * FROM t0_template
127WHERE MOD(f_int1,3) = 0;
128
129# check multiple-3 success: 	1
130UPDATE t1 SET f_int1 = f_int1 + @max_row
131WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
132AND @max_row_div2 + @max_row_div4;
133
134# check multiple-4 success: 	1
135DELETE FROM t1
136WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
137AND @max_row_div2 + @max_row_div4 + @max_row;
138
139# check multiple-5 success: 	1
140SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
141INSERT INTO t1
142SET f_int1 = @cur_value , f_int2 = @cur_value,
143f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
144f_charbig = '#SINGLE#';
145
146# check single-1 success: 	1
147SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
148INSERT INTO t1
149SET f_int1 = @cur_value , f_int2 = @cur_value,
150f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
151f_charbig = '#SINGLE#';
152
153# check single-2 success: 	1
154SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
155SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
156UPDATE t1 SET f_int1 = @cur_value2
157WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
158
159# check single-3 success: 	1
160SET @cur_value1= -1;
161SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
162UPDATE t1 SET f_int1 = @cur_value1
163WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
164
165# check single-4 success: 	1
166SELECT MAX(f_int1) INTO @cur_value FROM t1;
167DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
168
169# check single-5 success: 	1
170DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
171
172# check single-6 success: 	1
173INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
174
175# check single-7 success: 	1
176DELETE FROM t1 WHERE f_charbig = '#2147483647##';
177DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
178INSERT t1 SET f_int1 = 0 , f_int2 = 0,
179f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
180f_charbig = '#NULL#';
181INSERT INTO t1
182SET f_int1 = NULL , f_int2 = -@max_row,
183f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
184f_charbig = '#NULL#';
185# check null success:    1
186
187# check null-1 success: 	1
188UPDATE t1 SET f_int1 = -@max_row
189WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
190AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
191
192# check null-2 success: 	1
193UPDATE t1 SET f_int1 = NULL
194WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
195AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
196
197# check null-3 success: 	1
198DELETE FROM t1
199WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
200AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
201
202# check null-4 success: 	1
203DELETE FROM t1
204WHERE f_int1 = 0 AND f_int2 = 0
205AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
206AND f_charbig = '#NULL#';
207SET AUTOCOMMIT= 0;
208INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
209SELECT f_int1, f_int1, '', '', 'was inserted'
210FROM t0_template source_tab
211WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
212
213# check transactions-1 success: 	1
214COMMIT WORK;
215
216# check transactions-2 success: 	1
217ROLLBACK WORK;
218
219# check transactions-3 success: 	1
220DELETE FROM t1 WHERE f_charbig = 'was inserted';
221COMMIT WORK;
222ROLLBACK WORK;
223
224# check transactions-4 success: 	1
225INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
226SELECT f_int1, f_int1, '', '', 'was inserted'
227FROM t0_template source_tab
228WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
229
230# check transactions-5 success: 	1
231ROLLBACK WORK;
232Warnings:
233Warning	1196	Some non-transactional changed tables couldn't be rolled back
234
235# check transactions-6 success: 	1
236# INFO: Storage engine used for t1 seems to be not transactional.
237COMMIT;
238
239# check transactions-7 success: 	1
240DELETE FROM t1 WHERE f_charbig = 'was inserted';
241COMMIT WORK;
242SET @@session.sql_mode = 'traditional';
243Warnings:
244Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
245SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
246INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
247SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
248'', '', 'was inserted' FROM t0_template
249WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
250ERROR 22012: Division by 0
251COMMIT;
252
253# check transactions-8 success: 	1
254# INFO: Storage engine used for t1 seems to be unable to revert
255#       changes made by the failing statement.
256SET @@session.sql_mode = '';
257Warnings:
258Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
259SET AUTOCOMMIT= 1;
260DELETE FROM t1 WHERE f_charbig = 'was inserted';
261COMMIT WORK;
262UPDATE t1 SET f_charbig = REPEAT('b', 1000);
263
264# check special-1 success: 	1
265UPDATE t1 SET f_charbig = '';
266
267# check special-2 success: 	1
268UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
269INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
270SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
271WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
272INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
273SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
274'just inserted' FROM t0_template
275WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
276CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
277BEGIN
278UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
279f_charbig = 'updated by trigger'
280      WHERE f_int1 = new.f_int1;
281END|
282INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
283SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
284WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
285
286# check trigger-1 success: 	1
287DROP TRIGGER trg_1;
288UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
289f_int2 = CAST(f_char1 AS SIGNED INT),
290f_charbig = 'just inserted'
291   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
292DELETE FROM t0_aux
293WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
294INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
295SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
296'just inserted' FROM t0_template
297WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
298CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
299BEGIN
300UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
301f_charbig = 'updated by trigger'
302      WHERE f_int1 = new.f_int1;
303END|
304INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
305SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
306WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
307
308# check trigger-2 success: 	1
309DROP TRIGGER trg_1;
310UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
311f_int2 = CAST(f_char1 AS SIGNED INT),
312f_charbig = 'just inserted'
313   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
314DELETE FROM t0_aux
315WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
316INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
317SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
318'just inserted' FROM t0_template
319WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
320CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
321BEGIN
322UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
323f_charbig = 'updated by trigger'
324      WHERE f_int1 = new.f_int1;
325END|
326UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
327WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
328
329# check trigger-3 success: 	1
330DROP TRIGGER trg_1;
331UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
332f_int2 = CAST(f_char1 AS SIGNED INT),
333f_charbig = 'just inserted'
334   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
335DELETE FROM t0_aux
336WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
337INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
338SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
339'just inserted' FROM t0_template
340WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
341CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
342BEGIN
343UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
344f_charbig = 'updated by trigger'
345      WHERE f_int1 = - old.f_int1;
346END|
347UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
348WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
349
350# check trigger-4 success: 	1
351DROP TRIGGER trg_1;
352UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
353f_int2 = CAST(f_char1 AS SIGNED INT),
354f_charbig = 'just inserted'
355   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
356DELETE FROM t0_aux
357WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
358INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
359SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
360'just inserted' FROM t0_template
361WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
362CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
363BEGIN
364UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
365f_charbig = 'updated by trigger'
366      WHERE f_int1 = new.f_int1;
367END|
368UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
369WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
370
371# check trigger-5 success: 	1
372DROP TRIGGER trg_1;
373UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
374f_int2 = CAST(f_char1 AS SIGNED INT),
375f_charbig = 'just inserted'
376   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
377DELETE FROM t0_aux
378WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
379INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
380SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
381'just inserted' FROM t0_template
382WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
383CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
384BEGIN
385UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
386f_charbig = 'updated by trigger'
387      WHERE f_int1 = - old.f_int1;
388END|
389UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
390WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
391
392# check trigger-6 success: 	1
393DROP TRIGGER trg_1;
394UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
395f_int2 = CAST(f_char1 AS SIGNED INT),
396f_charbig = 'just inserted'
397   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
398DELETE FROM t0_aux
399WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
400INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
401SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
402'just inserted' FROM t0_template
403WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
404CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
405BEGIN
406UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
407f_charbig = 'updated by trigger'
408      WHERE f_int1 = - old.f_int1;
409END|
410DELETE FROM t0_aux
411WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
412
413# check trigger-7 success: 	1
414DROP TRIGGER trg_1;
415UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
416f_int2 = CAST(f_char1 AS SIGNED INT),
417f_charbig = 'just inserted'
418   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
419DELETE FROM t0_aux
420WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
421INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
422SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
423'just inserted' FROM t0_template
424WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
425CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
426BEGIN
427UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
428f_charbig = 'updated by trigger'
429      WHERE f_int1 = - old.f_int1;
430END|
431DELETE FROM t0_aux
432WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
433
434# check trigger-8 success: 	1
435DROP TRIGGER trg_1;
436UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
437f_int2 = CAST(f_char1 AS SIGNED INT),
438f_charbig = 'just inserted'
439   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
440DELETE FROM t0_aux
441WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
442DELETE FROM t1
443WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
444CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
445BEGIN
446SET new.f_int1 = old.f_int1 + @max_row,
447new.f_int2 = old.f_int2 - @max_row,
448new.f_charbig = '####updated per update trigger####';
449END|
450UPDATE t1
451SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
452f_charbig = '####updated per update statement itself####';
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.
455
456# check trigger-9 success: 	1
457DROP TRIGGER trg_2;
458UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
459f_int2 = CAST(f_char1 AS SIGNED INT),
460f_charbig = CONCAT('===',f_char1,'===');
461Warnings:
462Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
463CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
464BEGIN
465SET new.f_int1 = new.f_int1 + @max_row,
466new.f_int2 = new.f_int2 - @max_row,
467new.f_charbig = '####updated per update trigger####';
468END|
469UPDATE t1
470SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
471f_charbig = '####updated per update statement itself####';
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.
474
475# check trigger-10 success: 	1
476DROP TRIGGER trg_2;
477UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
478f_int2 = CAST(f_char1 AS SIGNED INT),
479f_charbig = CONCAT('===',f_char1,'===');
480Warnings:
481Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
482CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
483BEGIN
484SET new.f_int1 = @my_max1 + @counter,
485new.f_int2 = @my_min2 - @counter,
486new.f_charbig = '####updated per insert trigger####';
487SET @counter = @counter + 1;
488END|
489SET @counter = 1;
490SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
491Warnings:
492Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
493INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
494SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
495CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
496WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
497ORDER BY f_int1;
498DROP TRIGGER trg_3;
499
500# check trigger-11 success: 	1
501Warnings:
502Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
503DELETE FROM t1
504WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
505AND f_int2 <> CAST(f_char1 AS SIGNED INT)
506AND f_charbig = '####updated per insert trigger####';
507CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
508BEGIN
509SET new.f_int1 = @my_max1 + @counter,
510new.f_int2 = @my_min2 - @counter,
511new.f_charbig = '####updated per insert trigger####';
512SET @counter = @counter + 1;
513END|
514SET @counter = 1;
515SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
516Warnings:
517Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
518INSERT INTO t1 (f_char1, f_char2, f_charbig)
519SELECT CAST(f_int1 AS CHAR),
520CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
521WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
522ORDER BY f_int1;
523DROP TRIGGER trg_3;
524
525# check trigger-12 success: 	1
526Warnings:
527Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
528DELETE FROM t1
529WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
530AND f_int2 <> CAST(f_char1 AS SIGNED INT)
531AND f_charbig = '####updated per insert trigger####';
532ANALYZE  TABLE t1;
533Table	Op	Msg_type	Msg_text
534test.t1	analyze	status	OK
535test.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.
536CHECK    TABLE t1 EXTENDED;
537Table	Op	Msg_type	Msg_text
538test.t1	check	status	OK
539test.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.
540CHECKSUM TABLE t1 EXTENDED;
541Table	Checksum
542test.t1	<some_value>
543OPTIMIZE TABLE t1;
544Table	Op	Msg_type	Msg_text
545test.t1	optimize	status	OK
546test.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.
547# check layout success:    1
548REPAIR   TABLE t1 EXTENDED;
549Table	Op	Msg_type	Msg_text
550test.t1	repair	status	OK
551test.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.
552# check layout success:    1
553TRUNCATE t1;
554Warnings:
555Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
556
557# check TRUNCATE success: 	1
558# check layout success:    1
559# End usability test (inc/partition_check.inc)
560DROP TABLE t1;
561CREATE TABLE t1 (
562f_int1 INTEGER,
563f_int2 INTEGER,
564f_char1 CHAR(20),
565f_char2 CHAR(20),
566f_charbig VARCHAR(1000)
567
568)
569PARTITION BY KEY(f_int1) PARTITIONS 5
570(PARTITION p1
571DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
572INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
573PARTITION p2
574DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
575INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
576PARTITION p3
577DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
578INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
579PARTITION p4
580DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
581INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
582PARTITION p5
583DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
584INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir');
585Warnings:
586Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
587INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
588SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
589Warnings:
590Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
591# Start usability test (inc/partition_check.inc)
592create_command
593SHOW CREATE TABLE t1;
594Table	Create Table
595t1	CREATE TABLE `t1` (
596  `f_int1` int(11) DEFAULT NULL,
597  `f_int2` int(11) DEFAULT NULL,
598  `f_char1` char(20) DEFAULT NULL,
599  `f_char2` char(20) DEFAULT NULL,
600  `f_charbig` varchar(1000) DEFAULT NULL
601) ENGINE=MyISAM DEFAULT CHARSET=latin1
602/*!50100 PARTITION BY KEY (f_int1)
603(PARTITION p1 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
604 PARTITION p2 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
605 PARTITION p3 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
606 PARTITION p4 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
607 PARTITION p5 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM) */
608
609unified filelist
610t1#P#p1.MYD
611t1#P#p1.MYI
612t1#P#p2.MYD
613t1#P#p2.MYI
614t1#P#p3.MYD
615t1#P#p3.MYI
616t1#P#p4.MYD
617t1#P#p4.MYI
618t1#P#p5.MYD
619t1#P#p5.MYI
620t1.frm
621t1.par
622t1#P#p1.MYD
623t1#P#p2.MYD
624t1#P#p3.MYD
625t1#P#p4.MYD
626t1#P#p5.MYD
627t1#P#p1.MYI
628t1#P#p2.MYI
629t1#P#p3.MYI
630t1#P#p4.MYI
631t1#P#p5.MYI
632
633# check prerequisites-1 success:    1
634# check COUNT(*) success:    1
635# check MIN/MAX(f_int1) success:    1
636# check MIN/MAX(f_int2) success:    1
637INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
638SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
639CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
640WHERE f_int1 IN (2,3);
641# check prerequisites-3 success:    1
642DELETE FROM t1 WHERE f_charbig = 'delete me';
643# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
644# check read via f_int1 success: 1
645# check read via f_int2 success: 1
646
647# check multiple-1 success: 	1
648DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
649
650# check multiple-2 success: 	1
651INSERT INTO t1 SELECT * FROM t0_template
652WHERE MOD(f_int1,3) = 0;
653
654# check multiple-3 success: 	1
655UPDATE t1 SET f_int1 = f_int1 + @max_row
656WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
657AND @max_row_div2 + @max_row_div4;
658
659# check multiple-4 success: 	1
660DELETE FROM t1
661WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
662AND @max_row_div2 + @max_row_div4 + @max_row;
663
664# check multiple-5 success: 	1
665SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
666INSERT INTO t1
667SET f_int1 = @cur_value , f_int2 = @cur_value,
668f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
669f_charbig = '#SINGLE#';
670
671# check single-1 success: 	1
672SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
673INSERT INTO t1
674SET f_int1 = @cur_value , f_int2 = @cur_value,
675f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
676f_charbig = '#SINGLE#';
677
678# check single-2 success: 	1
679SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
680SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
681UPDATE t1 SET f_int1 = @cur_value2
682WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
683
684# check single-3 success: 	1
685SET @cur_value1= -1;
686SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
687UPDATE t1 SET f_int1 = @cur_value1
688WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
689
690# check single-4 success: 	1
691SELECT MAX(f_int1) INTO @cur_value FROM t1;
692DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
693
694# check single-5 success: 	1
695DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
696
697# check single-6 success: 	1
698INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
699
700# check single-7 success: 	1
701DELETE FROM t1 WHERE f_charbig = '#2147483647##';
702DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
703INSERT t1 SET f_int1 = 0 , f_int2 = 0,
704f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
705f_charbig = '#NULL#';
706INSERT INTO t1
707SET f_int1 = NULL , f_int2 = -@max_row,
708f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
709f_charbig = '#NULL#';
710# check null success:    1
711
712# check null-1 success: 	1
713UPDATE t1 SET f_int1 = -@max_row
714WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
715AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
716
717# check null-2 success: 	1
718UPDATE t1 SET f_int1 = NULL
719WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
720AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
721
722# check null-3 success: 	1
723DELETE FROM t1
724WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
725AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
726
727# check null-4 success: 	1
728DELETE FROM t1
729WHERE f_int1 = 0 AND f_int2 = 0
730AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
731AND f_charbig = '#NULL#';
732SET AUTOCOMMIT= 0;
733INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
734SELECT f_int1, f_int1, '', '', 'was inserted'
735FROM t0_template source_tab
736WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
737
738# check transactions-1 success: 	1
739COMMIT WORK;
740
741# check transactions-2 success: 	1
742ROLLBACK WORK;
743
744# check transactions-3 success: 	1
745DELETE FROM t1 WHERE f_charbig = 'was inserted';
746COMMIT WORK;
747ROLLBACK WORK;
748
749# check transactions-4 success: 	1
750INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
751SELECT f_int1, f_int1, '', '', 'was inserted'
752FROM t0_template source_tab
753WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
754
755# check transactions-5 success: 	1
756ROLLBACK WORK;
757Warnings:
758Warning	1196	Some non-transactional changed tables couldn't be rolled back
759
760# check transactions-6 success: 	1
761# INFO: Storage engine used for t1 seems to be not transactional.
762COMMIT;
763
764# check transactions-7 success: 	1
765DELETE FROM t1 WHERE f_charbig = 'was inserted';
766COMMIT WORK;
767SET @@session.sql_mode = 'traditional';
768Warnings:
769Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
770SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
771INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
772SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
773'', '', 'was inserted' FROM t0_template
774WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
775ERROR 22012: Division by 0
776COMMIT;
777
778# check transactions-8 success: 	1
779# INFO: Storage engine used for t1 seems to be unable to revert
780#       changes made by the failing statement.
781SET @@session.sql_mode = '';
782Warnings:
783Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
784SET AUTOCOMMIT= 1;
785DELETE FROM t1 WHERE f_charbig = 'was inserted';
786COMMIT WORK;
787UPDATE t1 SET f_charbig = REPEAT('b', 1000);
788
789# check special-1 success: 	1
790UPDATE t1 SET f_charbig = '';
791
792# check special-2 success: 	1
793UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
794INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
795SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
796WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
797INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
798SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
799'just inserted' FROM t0_template
800WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
801CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
802BEGIN
803UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
804f_charbig = 'updated by trigger'
805      WHERE f_int1 = new.f_int1;
806END|
807INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
808SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
809WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
810
811# check trigger-1 success: 	1
812DROP TRIGGER trg_1;
813UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
814f_int2 = CAST(f_char1 AS SIGNED INT),
815f_charbig = 'just inserted'
816   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
817DELETE FROM t0_aux
818WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
819INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
820SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
821'just inserted' FROM t0_template
822WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
823CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
824BEGIN
825UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
826f_charbig = 'updated by trigger'
827      WHERE f_int1 = new.f_int1;
828END|
829INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
830SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
831WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
832
833# check trigger-2 success: 	1
834DROP TRIGGER trg_1;
835UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
836f_int2 = CAST(f_char1 AS SIGNED INT),
837f_charbig = 'just inserted'
838   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
839DELETE FROM t0_aux
840WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
841INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
842SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
843'just inserted' FROM t0_template
844WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
845CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
846BEGIN
847UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
848f_charbig = 'updated by trigger'
849      WHERE f_int1 = new.f_int1;
850END|
851UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
852WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
853
854# check trigger-3 success: 	1
855DROP TRIGGER trg_1;
856UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
857f_int2 = CAST(f_char1 AS SIGNED INT),
858f_charbig = 'just inserted'
859   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
860DELETE FROM t0_aux
861WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
862INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
863SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
864'just inserted' FROM t0_template
865WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
866CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
867BEGIN
868UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
869f_charbig = 'updated by trigger'
870      WHERE f_int1 = - old.f_int1;
871END|
872UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
873WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
874
875# check trigger-4 success: 	1
876DROP TRIGGER trg_1;
877UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
878f_int2 = CAST(f_char1 AS SIGNED INT),
879f_charbig = 'just inserted'
880   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
881DELETE FROM t0_aux
882WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
883INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
884SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
885'just inserted' FROM t0_template
886WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
887CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
888BEGIN
889UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
890f_charbig = 'updated by trigger'
891      WHERE f_int1 = new.f_int1;
892END|
893UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
894WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
895
896# check trigger-5 success: 	1
897DROP TRIGGER trg_1;
898UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
899f_int2 = CAST(f_char1 AS SIGNED INT),
900f_charbig = 'just inserted'
901   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
902DELETE FROM t0_aux
903WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
904INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
905SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
906'just inserted' FROM t0_template
907WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
908CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
909BEGIN
910UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
911f_charbig = 'updated by trigger'
912      WHERE f_int1 = - old.f_int1;
913END|
914UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
915WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
916
917# check trigger-6 success: 	1
918DROP TRIGGER trg_1;
919UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
920f_int2 = CAST(f_char1 AS SIGNED INT),
921f_charbig = 'just inserted'
922   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
923DELETE FROM t0_aux
924WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
925INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
926SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
927'just inserted' FROM t0_template
928WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
929CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
930BEGIN
931UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
932f_charbig = 'updated by trigger'
933      WHERE f_int1 = - old.f_int1;
934END|
935DELETE FROM t0_aux
936WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
937
938# check trigger-7 success: 	1
939DROP TRIGGER trg_1;
940UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
941f_int2 = CAST(f_char1 AS SIGNED INT),
942f_charbig = 'just inserted'
943   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
944DELETE FROM t0_aux
945WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
946INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
947SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
948'just inserted' FROM t0_template
949WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
950CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
951BEGIN
952UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
953f_charbig = 'updated by trigger'
954      WHERE f_int1 = - old.f_int1;
955END|
956DELETE FROM t0_aux
957WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
958
959# check trigger-8 success: 	1
960DROP TRIGGER trg_1;
961UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
962f_int2 = CAST(f_char1 AS SIGNED INT),
963f_charbig = 'just inserted'
964   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
965DELETE FROM t0_aux
966WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
967DELETE FROM t1
968WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
969CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
970BEGIN
971SET new.f_int1 = old.f_int1 + @max_row,
972new.f_int2 = old.f_int2 - @max_row,
973new.f_charbig = '####updated per update trigger####';
974END|
975UPDATE t1
976SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
977f_charbig = '####updated per update statement itself####';
978Warnings:
979Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
980
981# check trigger-9 success: 	1
982DROP TRIGGER trg_2;
983UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
984f_int2 = CAST(f_char1 AS SIGNED INT),
985f_charbig = CONCAT('===',f_char1,'===');
986Warnings:
987Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
988CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
989BEGIN
990SET new.f_int1 = new.f_int1 + @max_row,
991new.f_int2 = new.f_int2 - @max_row,
992new.f_charbig = '####updated per update trigger####';
993END|
994UPDATE t1
995SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
996f_charbig = '####updated per update statement itself####';
997Warnings:
998Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
999
1000# check trigger-10 success: 	1
1001DROP TRIGGER trg_2;
1002UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1003f_int2 = CAST(f_char1 AS SIGNED INT),
1004f_charbig = CONCAT('===',f_char1,'===');
1005Warnings:
1006Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
1007CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
1008BEGIN
1009SET new.f_int1 = @my_max1 + @counter,
1010new.f_int2 = @my_min2 - @counter,
1011new.f_charbig = '####updated per insert trigger####';
1012SET @counter = @counter + 1;
1013END|
1014SET @counter = 1;
1015SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
1016Warnings:
1017Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
1018INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1019SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
1020CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
1021WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
1022ORDER BY f_int1;
1023DROP TRIGGER trg_3;
1024
1025# check trigger-11 success: 	1
1026Warnings:
1027Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
1028DELETE FROM t1
1029WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
1030AND f_int2 <> CAST(f_char1 AS SIGNED INT)
1031AND f_charbig = '####updated per insert trigger####';
1032CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
1033BEGIN
1034SET new.f_int1 = @my_max1 + @counter,
1035new.f_int2 = @my_min2 - @counter,
1036new.f_charbig = '####updated per insert trigger####';
1037SET @counter = @counter + 1;
1038END|
1039SET @counter = 1;
1040SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
1041Warnings:
1042Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
1043INSERT INTO t1 (f_char1, f_char2, f_charbig)
1044SELECT CAST(f_int1 AS CHAR),
1045CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
1046WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
1047ORDER BY f_int1;
1048DROP TRIGGER trg_3;
1049
1050# check trigger-12 success: 	1
1051Warnings:
1052Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
1053DELETE FROM t1
1054WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
1055AND f_int2 <> CAST(f_char1 AS SIGNED INT)
1056AND f_charbig = '####updated per insert trigger####';
1057ANALYZE  TABLE t1;
1058Table	Op	Msg_type	Msg_text
1059test.t1	analyze	status	OK
1060test.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.
1061CHECK    TABLE t1 EXTENDED;
1062Table	Op	Msg_type	Msg_text
1063test.t1	check	status	OK
1064test.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.
1065CHECKSUM TABLE t1 EXTENDED;
1066Table	Checksum
1067test.t1	<some_value>
1068OPTIMIZE TABLE t1;
1069Table	Op	Msg_type	Msg_text
1070test.t1	optimize	status	OK
1071test.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.
1072# check layout success:    1
1073REPAIR   TABLE t1 EXTENDED;
1074Table	Op	Msg_type	Msg_text
1075test.t1	repair	status	OK
1076test.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.
1077# check layout success:    1
1078TRUNCATE t1;
1079Warnings:
1080Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
1081
1082# check TRUNCATE success: 	1
1083# check layout success:    1
1084# End usability test (inc/partition_check.inc)
1085DROP TABLE t1;
1086CREATE TABLE t1 (
1087f_int1 INTEGER,
1088f_int2 INTEGER,
1089f_char1 CHAR(20),
1090f_char2 CHAR(20),
1091f_charbig VARCHAR(1000)
1092
1093)
1094PARTITION BY LIST(MOD(f_int1,4))
1095(PARTITION part_3 VALUES IN (-3)
1096DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
1097PARTITION part_2 VALUES IN (-2)
1098DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
1099PARTITION part_1 VALUES IN (-1)
1100DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
1101PARTITION part_N VALUES IN (NULL)
1102DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
1103PARTITION part0 VALUES IN (0)
1104DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
1105PARTITION part1 VALUES IN (1)
1106DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
1107PARTITION part2 VALUES IN (2)
1108DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
1109PARTITION part3 VALUES IN (3)
1110DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir');
1111Warnings:
1112Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
1113INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
1114SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
1115Warnings:
1116Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
1117# Start usability test (inc/partition_check.inc)
1118create_command
1119SHOW CREATE TABLE t1;
1120Table	Create Table
1121t1	CREATE TABLE `t1` (
1122  `f_int1` int(11) DEFAULT NULL,
1123  `f_int2` int(11) DEFAULT NULL,
1124  `f_char1` char(20) DEFAULT NULL,
1125  `f_char2` char(20) DEFAULT NULL,
1126  `f_charbig` varchar(1000) DEFAULT NULL
1127) ENGINE=MyISAM DEFAULT CHARSET=latin1
1128/*!50100 PARTITION BY LIST (MOD(f_int1,4))
1129(PARTITION part_3 VALUES IN (-3) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
1130 PARTITION part_2 VALUES IN (-2) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
1131 PARTITION part_1 VALUES IN (-1) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
1132 PARTITION part_N VALUES IN (NULL) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
1133 PARTITION part0 VALUES IN (0) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
1134 PARTITION part1 VALUES IN (1) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
1135 PARTITION part2 VALUES IN (2) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
1136 PARTITION part3 VALUES IN (3) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM) */
1137
1138unified filelist
1139t1#P#part0.MYD
1140t1#P#part0.MYI
1141t1#P#part1.MYD
1142t1#P#part1.MYI
1143t1#P#part2.MYD
1144t1#P#part2.MYI
1145t1#P#part3.MYD
1146t1#P#part3.MYI
1147t1#P#part_1.MYD
1148t1#P#part_1.MYI
1149t1#P#part_2.MYD
1150t1#P#part_2.MYI
1151t1#P#part_3.MYD
1152t1#P#part_3.MYI
1153t1#P#part_N.MYD
1154t1#P#part_N.MYI
1155t1.frm
1156t1.par
1157t1#P#part0.MYD
1158t1#P#part1.MYD
1159t1#P#part2.MYD
1160t1#P#part3.MYD
1161t1#P#part_1.MYD
1162t1#P#part_2.MYD
1163t1#P#part_3.MYD
1164t1#P#part_N.MYD
1165t1#P#part0.MYI
1166t1#P#part1.MYI
1167t1#P#part2.MYI
1168t1#P#part3.MYI
1169t1#P#part_1.MYI
1170t1#P#part_2.MYI
1171t1#P#part_3.MYI
1172t1#P#part_N.MYI
1173
1174# check prerequisites-1 success:    1
1175# check COUNT(*) success:    1
1176# check MIN/MAX(f_int1) success:    1
1177# check MIN/MAX(f_int2) success:    1
1178INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1179SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
1180CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
1181WHERE f_int1 IN (2,3);
1182# check prerequisites-3 success:    1
1183DELETE FROM t1 WHERE f_charbig = 'delete me';
1184# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
1185# check read via f_int1 success: 1
1186# check read via f_int2 success: 1
1187
1188# check multiple-1 success: 	1
1189DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
1190
1191# check multiple-2 success: 	1
1192INSERT INTO t1 SELECT * FROM t0_template
1193WHERE MOD(f_int1,3) = 0;
1194
1195# check multiple-3 success: 	1
1196UPDATE t1 SET f_int1 = f_int1 + @max_row
1197WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
1198AND @max_row_div2 + @max_row_div4;
1199
1200# check multiple-4 success: 	1
1201DELETE FROM t1
1202WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
1203AND @max_row_div2 + @max_row_div4 + @max_row;
1204
1205# check multiple-5 success: 	1
1206SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
1207INSERT INTO t1
1208SET f_int1 = @cur_value , f_int2 = @cur_value,
1209f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
1210f_charbig = '#SINGLE#';
1211
1212# check single-1 success: 	1
1213SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
1214INSERT INTO t1
1215SET f_int1 = @cur_value , f_int2 = @cur_value,
1216f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
1217f_charbig = '#SINGLE#';
1218
1219# check single-2 success: 	1
1220SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
1221SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
1222UPDATE t1 SET f_int1 = @cur_value2
1223WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
1224
1225# check single-3 success: 	1
1226SET @cur_value1= -1;
1227SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
1228UPDATE t1 SET f_int1 = @cur_value1
1229WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
1230
1231# check single-4 success: 	1
1232SELECT MAX(f_int1) INTO @cur_value FROM t1;
1233DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
1234
1235# check single-5 success: 	1
1236DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
1237
1238# check single-6 success: 	1
1239INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
1240
1241# check single-7 success: 	1
1242DELETE FROM t1 WHERE f_charbig = '#2147483647##';
1243DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
1244INSERT t1 SET f_int1 = 0 , f_int2 = 0,
1245f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
1246f_charbig = '#NULL#';
1247INSERT INTO t1
1248SET f_int1 = NULL , f_int2 = -@max_row,
1249f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
1250f_charbig = '#NULL#';
1251# check null success:    1
1252
1253# check null-1 success: 	1
1254UPDATE t1 SET f_int1 = -@max_row
1255WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
1256AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
1257
1258# check null-2 success: 	1
1259UPDATE t1 SET f_int1 = NULL
1260WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
1261AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
1262
1263# check null-3 success: 	1
1264DELETE FROM t1
1265WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
1266AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
1267
1268# check null-4 success: 	1
1269DELETE FROM t1
1270WHERE f_int1 = 0 AND f_int2 = 0
1271AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
1272AND f_charbig = '#NULL#';
1273SET AUTOCOMMIT= 0;
1274INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1275SELECT f_int1, f_int1, '', '', 'was inserted'
1276FROM t0_template source_tab
1277WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
1278
1279# check transactions-1 success: 	1
1280COMMIT WORK;
1281
1282# check transactions-2 success: 	1
1283ROLLBACK WORK;
1284
1285# check transactions-3 success: 	1
1286DELETE FROM t1 WHERE f_charbig = 'was inserted';
1287COMMIT WORK;
1288ROLLBACK WORK;
1289
1290# check transactions-4 success: 	1
1291INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1292SELECT f_int1, f_int1, '', '', 'was inserted'
1293FROM t0_template source_tab
1294WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
1295
1296# check transactions-5 success: 	1
1297ROLLBACK WORK;
1298Warnings:
1299Warning	1196	Some non-transactional changed tables couldn't be rolled back
1300
1301# check transactions-6 success: 	1
1302# INFO: Storage engine used for t1 seems to be not transactional.
1303COMMIT;
1304
1305# check transactions-7 success: 	1
1306DELETE FROM t1 WHERE f_charbig = 'was inserted';
1307COMMIT WORK;
1308SET @@session.sql_mode = 'traditional';
1309Warnings:
1310Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
1311SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
1312INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1313SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
1314'', '', 'was inserted' FROM t0_template
1315WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
1316ERROR 22012: Division by 0
1317COMMIT;
1318
1319# check transactions-8 success: 	1
1320# INFO: Storage engine used for t1 seems to be unable to revert
1321#       changes made by the failing statement.
1322SET @@session.sql_mode = '';
1323Warnings:
1324Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
1325SET AUTOCOMMIT= 1;
1326DELETE FROM t1 WHERE f_charbig = 'was inserted';
1327COMMIT WORK;
1328UPDATE t1 SET f_charbig = REPEAT('b', 1000);
1329
1330# check special-1 success: 	1
1331UPDATE t1 SET f_charbig = '';
1332
1333# check special-2 success: 	1
1334UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
1335INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
1336SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
1337WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1338INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1339SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1340'just inserted' FROM t0_template
1341WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1342CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
1343BEGIN
1344UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1345f_charbig = 'updated by trigger'
1346      WHERE f_int1 = new.f_int1;
1347END|
1348INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1349SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
1350WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1351
1352# check trigger-1 success: 	1
1353DROP TRIGGER trg_1;
1354UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1355f_int2 = CAST(f_char1 AS SIGNED INT),
1356f_charbig = 'just inserted'
1357   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1358DELETE FROM t0_aux
1359WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1360INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1361SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1362'just inserted' FROM t0_template
1363WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1364CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
1365BEGIN
1366UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1367f_charbig = 'updated by trigger'
1368      WHERE f_int1 = new.f_int1;
1369END|
1370INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1371SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
1372WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1373
1374# check trigger-2 success: 	1
1375DROP TRIGGER trg_1;
1376UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1377f_int2 = CAST(f_char1 AS SIGNED INT),
1378f_charbig = 'just inserted'
1379   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1380DELETE FROM t0_aux
1381WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1382INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1383SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1384'just inserted' FROM t0_template
1385WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1386CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
1387BEGIN
1388UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1389f_charbig = 'updated by trigger'
1390      WHERE f_int1 = new.f_int1;
1391END|
1392UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
1393WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1394
1395# check trigger-3 success: 	1
1396DROP TRIGGER trg_1;
1397UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1398f_int2 = CAST(f_char1 AS SIGNED INT),
1399f_charbig = 'just inserted'
1400   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1401DELETE FROM t0_aux
1402WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1403INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1404SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1405'just inserted' FROM t0_template
1406WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1407CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
1408BEGIN
1409UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1410f_charbig = 'updated by trigger'
1411      WHERE f_int1 = - old.f_int1;
1412END|
1413UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
1414WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1415
1416# check trigger-4 success: 	1
1417DROP TRIGGER trg_1;
1418UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1419f_int2 = CAST(f_char1 AS SIGNED INT),
1420f_charbig = 'just inserted'
1421   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1422DELETE FROM t0_aux
1423WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1424INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1425SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1426'just inserted' FROM t0_template
1427WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1428CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
1429BEGIN
1430UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1431f_charbig = 'updated by trigger'
1432      WHERE f_int1 = new.f_int1;
1433END|
1434UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
1435WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1436
1437# check trigger-5 success: 	1
1438DROP TRIGGER trg_1;
1439UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1440f_int2 = CAST(f_char1 AS SIGNED INT),
1441f_charbig = 'just inserted'
1442   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1443DELETE FROM t0_aux
1444WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1445INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1446SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1447'just inserted' FROM t0_template
1448WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1449CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
1450BEGIN
1451UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1452f_charbig = 'updated by trigger'
1453      WHERE f_int1 = - old.f_int1;
1454END|
1455UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
1456WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1457
1458# check trigger-6 success: 	1
1459DROP TRIGGER trg_1;
1460UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1461f_int2 = CAST(f_char1 AS SIGNED INT),
1462f_charbig = 'just inserted'
1463   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1464DELETE FROM t0_aux
1465WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1466INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1467SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1468'just inserted' FROM t0_template
1469WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1470CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
1471BEGIN
1472UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1473f_charbig = 'updated by trigger'
1474      WHERE f_int1 = - old.f_int1;
1475END|
1476DELETE FROM t0_aux
1477WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1478
1479# check trigger-7 success: 	1
1480DROP TRIGGER trg_1;
1481UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1482f_int2 = CAST(f_char1 AS SIGNED INT),
1483f_charbig = 'just inserted'
1484   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1485DELETE FROM t0_aux
1486WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1487INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1488SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1489'just inserted' FROM t0_template
1490WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1491CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
1492BEGIN
1493UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1494f_charbig = 'updated by trigger'
1495      WHERE f_int1 = - old.f_int1;
1496END|
1497DELETE FROM t0_aux
1498WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1499
1500# check trigger-8 success: 	1
1501DROP TRIGGER trg_1;
1502UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1503f_int2 = CAST(f_char1 AS SIGNED INT),
1504f_charbig = 'just inserted'
1505   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1506DELETE FROM t0_aux
1507WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1508DELETE FROM t1
1509WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1510CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
1511BEGIN
1512SET new.f_int1 = old.f_int1 + @max_row,
1513new.f_int2 = old.f_int2 - @max_row,
1514new.f_charbig = '####updated per update trigger####';
1515END|
1516UPDATE t1
1517SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
1518f_charbig = '####updated per update statement itself####';
1519Warnings:
1520Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
1521
1522# check trigger-9 success: 	1
1523DROP TRIGGER trg_2;
1524UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1525f_int2 = CAST(f_char1 AS SIGNED INT),
1526f_charbig = CONCAT('===',f_char1,'===');
1527Warnings:
1528Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
1529CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
1530BEGIN
1531SET new.f_int1 = new.f_int1 + @max_row,
1532new.f_int2 = new.f_int2 - @max_row,
1533new.f_charbig = '####updated per update trigger####';
1534END|
1535UPDATE t1
1536SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
1537f_charbig = '####updated per update statement itself####';
1538Warnings:
1539Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
1540
1541# check trigger-10 success: 	1
1542DROP TRIGGER trg_2;
1543UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1544f_int2 = CAST(f_char1 AS SIGNED INT),
1545f_charbig = CONCAT('===',f_char1,'===');
1546Warnings:
1547Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
1548CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
1549BEGIN
1550SET new.f_int1 = @my_max1 + @counter,
1551new.f_int2 = @my_min2 - @counter,
1552new.f_charbig = '####updated per insert trigger####';
1553SET @counter = @counter + 1;
1554END|
1555SET @counter = 1;
1556SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
1557Warnings:
1558Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
1559INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1560SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
1561CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
1562WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
1563ORDER BY f_int1;
1564DROP TRIGGER trg_3;
1565
1566# check trigger-11 success: 	1
1567Warnings:
1568Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
1569DELETE FROM t1
1570WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
1571AND f_int2 <> CAST(f_char1 AS SIGNED INT)
1572AND f_charbig = '####updated per insert trigger####';
1573CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
1574BEGIN
1575SET new.f_int1 = @my_max1 + @counter,
1576new.f_int2 = @my_min2 - @counter,
1577new.f_charbig = '####updated per insert trigger####';
1578SET @counter = @counter + 1;
1579END|
1580SET @counter = 1;
1581SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
1582Warnings:
1583Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
1584INSERT INTO t1 (f_char1, f_char2, f_charbig)
1585SELECT CAST(f_int1 AS CHAR),
1586CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
1587WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
1588ORDER BY f_int1;
1589DROP TRIGGER trg_3;
1590
1591# check trigger-12 success: 	1
1592Warnings:
1593Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
1594DELETE FROM t1
1595WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
1596AND f_int2 <> CAST(f_char1 AS SIGNED INT)
1597AND f_charbig = '####updated per insert trigger####';
1598ANALYZE  TABLE t1;
1599Table	Op	Msg_type	Msg_text
1600test.t1	analyze	status	OK
1601test.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.
1602CHECK    TABLE t1 EXTENDED;
1603Table	Op	Msg_type	Msg_text
1604test.t1	check	status	OK
1605test.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.
1606CHECKSUM TABLE t1 EXTENDED;
1607Table	Checksum
1608test.t1	<some_value>
1609OPTIMIZE TABLE t1;
1610Table	Op	Msg_type	Msg_text
1611test.t1	optimize	status	OK
1612test.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.
1613# check layout success:    1
1614REPAIR   TABLE t1 EXTENDED;
1615Table	Op	Msg_type	Msg_text
1616test.t1	repair	status	OK
1617test.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.
1618# check layout success:    1
1619TRUNCATE t1;
1620Warnings:
1621Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
1622
1623# check TRUNCATE success: 	1
1624# check layout success:    1
1625# End usability test (inc/partition_check.inc)
1626DROP TABLE t1;
1627CREATE TABLE t1 (
1628f_int1 INTEGER,
1629f_int2 INTEGER,
1630f_char1 CHAR(20),
1631f_char2 CHAR(20),
1632f_charbig VARCHAR(1000)
1633
1634)
1635PARTITION BY RANGE(f_int1)
1636(PARTITION parta VALUES LESS THAN (0)
1637DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
1638INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
1639PARTITION partb VALUES LESS THAN (5)
1640DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
1641INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
1642PARTITION partc VALUES LESS THAN (10)
1643DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
1644INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
1645PARTITION partd VALUES LESS THAN (10 + 5)
1646DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
1647INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
1648PARTITION parte VALUES LESS THAN (20)
1649DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
1650INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
1651PARTITION partf VALUES LESS THAN (2147483646)
1652DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
1653INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir');
1654Warnings:
1655Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
1656INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
1657SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
1658Warnings:
1659Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
1660# Start usability test (inc/partition_check.inc)
1661create_command
1662SHOW CREATE TABLE t1;
1663Table	Create Table
1664t1	CREATE TABLE `t1` (
1665  `f_int1` int(11) DEFAULT NULL,
1666  `f_int2` int(11) DEFAULT NULL,
1667  `f_char1` char(20) DEFAULT NULL,
1668  `f_char2` char(20) DEFAULT NULL,
1669  `f_charbig` varchar(1000) DEFAULT NULL
1670) ENGINE=MyISAM DEFAULT CHARSET=latin1
1671/*!50100 PARTITION BY RANGE (f_int1)
1672(PARTITION parta VALUES LESS THAN (0) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
1673 PARTITION partb VALUES LESS THAN (5) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
1674 PARTITION partc VALUES LESS THAN (10) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
1675 PARTITION partd VALUES LESS THAN (15) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
1676 PARTITION parte VALUES LESS THAN (20) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
1677 PARTITION partf VALUES LESS THAN (2147483646) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM) */
1678
1679unified filelist
1680t1#P#parta.MYD
1681t1#P#parta.MYI
1682t1#P#partb.MYD
1683t1#P#partb.MYI
1684t1#P#partc.MYD
1685t1#P#partc.MYI
1686t1#P#partd.MYD
1687t1#P#partd.MYI
1688t1#P#parte.MYD
1689t1#P#parte.MYI
1690t1#P#partf.MYD
1691t1#P#partf.MYI
1692t1.frm
1693t1.par
1694t1#P#parta.MYD
1695t1#P#partb.MYD
1696t1#P#partc.MYD
1697t1#P#partd.MYD
1698t1#P#parte.MYD
1699t1#P#partf.MYD
1700t1#P#parta.MYI
1701t1#P#partb.MYI
1702t1#P#partc.MYI
1703t1#P#partd.MYI
1704t1#P#parte.MYI
1705t1#P#partf.MYI
1706
1707# check prerequisites-1 success:    1
1708# check COUNT(*) success:    1
1709# check MIN/MAX(f_int1) success:    1
1710# check MIN/MAX(f_int2) success:    1
1711INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1712SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
1713CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
1714WHERE f_int1 IN (2,3);
1715# check prerequisites-3 success:    1
1716DELETE FROM t1 WHERE f_charbig = 'delete me';
1717# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
1718# check read via f_int1 success: 1
1719# check read via f_int2 success: 1
1720
1721# check multiple-1 success: 	1
1722DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
1723
1724# check multiple-2 success: 	1
1725INSERT INTO t1 SELECT * FROM t0_template
1726WHERE MOD(f_int1,3) = 0;
1727
1728# check multiple-3 success: 	1
1729UPDATE t1 SET f_int1 = f_int1 + @max_row
1730WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
1731AND @max_row_div2 + @max_row_div4;
1732
1733# check multiple-4 success: 	1
1734DELETE FROM t1
1735WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
1736AND @max_row_div2 + @max_row_div4 + @max_row;
1737
1738# check multiple-5 success: 	1
1739SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
1740INSERT INTO t1
1741SET f_int1 = @cur_value , f_int2 = @cur_value,
1742f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
1743f_charbig = '#SINGLE#';
1744
1745# check single-1 success: 	1
1746SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
1747INSERT INTO t1
1748SET f_int1 = @cur_value , f_int2 = @cur_value,
1749f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
1750f_charbig = '#SINGLE#';
1751
1752# check single-2 success: 	1
1753SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
1754SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
1755UPDATE t1 SET f_int1 = @cur_value2
1756WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
1757
1758# check single-3 success: 	1
1759SET @cur_value1= -1;
1760SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
1761UPDATE t1 SET f_int1 = @cur_value1
1762WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
1763
1764# check single-4 success: 	1
1765SELECT MAX(f_int1) INTO @cur_value FROM t1;
1766DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
1767
1768# check single-5 success: 	1
1769DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
1770
1771# check single-6 success: 	1
1772INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
1773ERROR HY000: Table has no partition for value 2147483647
1774DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
1775INSERT t1 SET f_int1 = 0 , f_int2 = 0,
1776f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
1777f_charbig = '#NULL#';
1778INSERT INTO t1
1779SET f_int1 = NULL , f_int2 = -@max_row,
1780f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
1781f_charbig = '#NULL#';
1782# check null success:    1
1783
1784# check null-1 success: 	1
1785UPDATE t1 SET f_int1 = -@max_row
1786WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
1787AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
1788
1789# check null-2 success: 	1
1790UPDATE t1 SET f_int1 = NULL
1791WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
1792AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
1793
1794# check null-3 success: 	1
1795DELETE FROM t1
1796WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
1797AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
1798
1799# check null-4 success: 	1
1800DELETE FROM t1
1801WHERE f_int1 = 0 AND f_int2 = 0
1802AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
1803AND f_charbig = '#NULL#';
1804SET AUTOCOMMIT= 0;
1805INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1806SELECT f_int1, f_int1, '', '', 'was inserted'
1807FROM t0_template source_tab
1808WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
1809
1810# check transactions-1 success: 	1
1811COMMIT WORK;
1812
1813# check transactions-2 success: 	1
1814ROLLBACK WORK;
1815
1816# check transactions-3 success: 	1
1817DELETE FROM t1 WHERE f_charbig = 'was inserted';
1818COMMIT WORK;
1819ROLLBACK WORK;
1820
1821# check transactions-4 success: 	1
1822INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1823SELECT f_int1, f_int1, '', '', 'was inserted'
1824FROM t0_template source_tab
1825WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
1826
1827# check transactions-5 success: 	1
1828ROLLBACK WORK;
1829Warnings:
1830Warning	1196	Some non-transactional changed tables couldn't be rolled back
1831
1832# check transactions-6 success: 	1
1833# INFO: Storage engine used for t1 seems to be not transactional.
1834COMMIT;
1835
1836# check transactions-7 success: 	1
1837DELETE FROM t1 WHERE f_charbig = 'was inserted';
1838COMMIT WORK;
1839SET @@session.sql_mode = 'traditional';
1840Warnings:
1841Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
1842SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
1843INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1844SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
1845'', '', 'was inserted' FROM t0_template
1846WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
1847ERROR 22012: Division by 0
1848COMMIT;
1849
1850# check transactions-8 success: 	1
1851# INFO: Storage engine used for t1 seems to be unable to revert
1852#       changes made by the failing statement.
1853SET @@session.sql_mode = '';
1854Warnings:
1855Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
1856SET AUTOCOMMIT= 1;
1857DELETE FROM t1 WHERE f_charbig = 'was inserted';
1858COMMIT WORK;
1859UPDATE t1 SET f_charbig = REPEAT('b', 1000);
1860
1861# check special-1 success: 	1
1862UPDATE t1 SET f_charbig = '';
1863
1864# check special-2 success: 	1
1865UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
1866INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
1867SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
1868WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1869INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1870SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1871'just inserted' FROM t0_template
1872WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1873CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
1874BEGIN
1875UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1876f_charbig = 'updated by trigger'
1877      WHERE f_int1 = new.f_int1;
1878END|
1879INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1880SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
1881WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1882
1883# check trigger-1 success: 	1
1884DROP TRIGGER trg_1;
1885UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1886f_int2 = CAST(f_char1 AS SIGNED INT),
1887f_charbig = 'just inserted'
1888   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1889DELETE FROM t0_aux
1890WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1891INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1892SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1893'just inserted' FROM t0_template
1894WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1895CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
1896BEGIN
1897UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1898f_charbig = 'updated by trigger'
1899      WHERE f_int1 = new.f_int1;
1900END|
1901INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1902SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
1903WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1904
1905# check trigger-2 success: 	1
1906DROP TRIGGER trg_1;
1907UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1908f_int2 = CAST(f_char1 AS SIGNED INT),
1909f_charbig = 'just inserted'
1910   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1911DELETE FROM t0_aux
1912WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1913INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1914SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1915'just inserted' FROM t0_template
1916WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1917CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
1918BEGIN
1919UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1920f_charbig = 'updated by trigger'
1921      WHERE f_int1 = new.f_int1;
1922END|
1923UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
1924WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1925
1926# check trigger-3 success: 	1
1927DROP TRIGGER trg_1;
1928UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1929f_int2 = CAST(f_char1 AS SIGNED INT),
1930f_charbig = 'just inserted'
1931   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1932DELETE FROM t0_aux
1933WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1934INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1935SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1936'just inserted' FROM t0_template
1937WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1938CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
1939BEGIN
1940UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1941f_charbig = 'updated by trigger'
1942      WHERE f_int1 = - old.f_int1;
1943END|
1944UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
1945WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1946
1947# check trigger-4 success: 	1
1948DROP TRIGGER trg_1;
1949UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1950f_int2 = CAST(f_char1 AS SIGNED INT),
1951f_charbig = 'just inserted'
1952   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1953DELETE FROM t0_aux
1954WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1955INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1956SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1957'just inserted' FROM t0_template
1958WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1959CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
1960BEGIN
1961UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1962f_charbig = 'updated by trigger'
1963      WHERE f_int1 = new.f_int1;
1964END|
1965UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
1966WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1967
1968# check trigger-5 success: 	1
1969DROP TRIGGER trg_1;
1970UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1971f_int2 = CAST(f_char1 AS SIGNED INT),
1972f_charbig = 'just inserted'
1973   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1974DELETE FROM t0_aux
1975WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1976INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1977SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1978'just inserted' FROM t0_template
1979WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1980CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
1981BEGIN
1982UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1983f_charbig = 'updated by trigger'
1984      WHERE f_int1 = - old.f_int1;
1985END|
1986UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
1987WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1988
1989# check trigger-6 success: 	1
1990DROP TRIGGER trg_1;
1991UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1992f_int2 = CAST(f_char1 AS SIGNED INT),
1993f_charbig = 'just inserted'
1994   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1995DELETE FROM t0_aux
1996WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1997INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1998SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1999'just inserted' FROM t0_template
2000WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2001CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
2002BEGIN
2003UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2004f_charbig = 'updated by trigger'
2005      WHERE f_int1 = - old.f_int1;
2006END|
2007DELETE FROM t0_aux
2008WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2009
2010# check trigger-7 success: 	1
2011DROP TRIGGER trg_1;
2012UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2013f_int2 = CAST(f_char1 AS SIGNED INT),
2014f_charbig = 'just inserted'
2015   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2016DELETE FROM t0_aux
2017WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2018INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2019SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2020'just inserted' FROM t0_template
2021WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2022CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
2023BEGIN
2024UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2025f_charbig = 'updated by trigger'
2026      WHERE f_int1 = - old.f_int1;
2027END|
2028DELETE FROM t0_aux
2029WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2030
2031# check trigger-8 success: 	1
2032DROP TRIGGER trg_1;
2033UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2034f_int2 = CAST(f_char1 AS SIGNED INT),
2035f_charbig = 'just inserted'
2036   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2037DELETE FROM t0_aux
2038WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2039DELETE FROM t1
2040WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2041CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
2042BEGIN
2043SET new.f_int1 = old.f_int1 + @max_row,
2044new.f_int2 = old.f_int2 - @max_row,
2045new.f_charbig = '####updated per update trigger####';
2046END|
2047UPDATE t1
2048SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
2049f_charbig = '####updated per update statement itself####';
2050Warnings:
2051Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
2052
2053# check trigger-9 success: 	1
2054DROP TRIGGER trg_2;
2055UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2056f_int2 = CAST(f_char1 AS SIGNED INT),
2057f_charbig = CONCAT('===',f_char1,'===');
2058Warnings:
2059Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
2060CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
2061BEGIN
2062SET new.f_int1 = new.f_int1 + @max_row,
2063new.f_int2 = new.f_int2 - @max_row,
2064new.f_charbig = '####updated per update trigger####';
2065END|
2066UPDATE t1
2067SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
2068f_charbig = '####updated per update statement itself####';
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.
2071
2072# check trigger-10 success: 	1
2073DROP TRIGGER trg_2;
2074UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2075f_int2 = CAST(f_char1 AS SIGNED INT),
2076f_charbig = CONCAT('===',f_char1,'===');
2077Warnings:
2078Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
2079CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
2080BEGIN
2081SET new.f_int1 = @my_max1 + @counter,
2082new.f_int2 = @my_min2 - @counter,
2083new.f_charbig = '####updated per insert trigger####';
2084SET @counter = @counter + 1;
2085END|
2086SET @counter = 1;
2087SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
2088Warnings:
2089Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
2090INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2091SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
2092CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
2093WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
2094ORDER BY f_int1;
2095DROP TRIGGER trg_3;
2096
2097# check trigger-11 success: 	1
2098Warnings:
2099Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
2100DELETE FROM t1
2101WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
2102AND f_int2 <> CAST(f_char1 AS SIGNED INT)
2103AND f_charbig = '####updated per insert trigger####';
2104CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
2105BEGIN
2106SET new.f_int1 = @my_max1 + @counter,
2107new.f_int2 = @my_min2 - @counter,
2108new.f_charbig = '####updated per insert trigger####';
2109SET @counter = @counter + 1;
2110END|
2111SET @counter = 1;
2112SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
2113Warnings:
2114Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
2115INSERT INTO t1 (f_char1, f_char2, f_charbig)
2116SELECT CAST(f_int1 AS CHAR),
2117CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
2118WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
2119ORDER BY f_int1;
2120DROP TRIGGER trg_3;
2121
2122# check trigger-12 success: 	1
2123Warnings:
2124Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
2125DELETE FROM t1
2126WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
2127AND f_int2 <> CAST(f_char1 AS SIGNED INT)
2128AND f_charbig = '####updated per insert trigger####';
2129ANALYZE  TABLE t1;
2130Table	Op	Msg_type	Msg_text
2131test.t1	analyze	status	OK
2132test.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.
2133CHECK    TABLE t1 EXTENDED;
2134Table	Op	Msg_type	Msg_text
2135test.t1	check	status	OK
2136test.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.
2137CHECKSUM TABLE t1 EXTENDED;
2138Table	Checksum
2139test.t1	<some_value>
2140OPTIMIZE TABLE t1;
2141Table	Op	Msg_type	Msg_text
2142test.t1	optimize	status	OK
2143test.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.
2144# check layout success:    1
2145REPAIR   TABLE t1 EXTENDED;
2146Table	Op	Msg_type	Msg_text
2147test.t1	repair	status	OK
2148test.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.
2149# check layout success:    1
2150TRUNCATE t1;
2151Warnings:
2152Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
2153
2154# check TRUNCATE success: 	1
2155# check layout success:    1
2156# End usability test (inc/partition_check.inc)
2157DROP TABLE t1;
2158CREATE TABLE t1 (
2159f_int1 INTEGER,
2160f_int2 INTEGER,
2161f_char1 CHAR(20),
2162f_char2 CHAR(20),
2163f_charbig VARCHAR(1000)
2164
2165)
2166PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
2167(PARTITION parta VALUES LESS THAN (0)
2168DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
2169INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
2170PARTITION partb VALUES LESS THAN (5)
2171DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
2172INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
2173PARTITION partc VALUES LESS THAN (10)
2174DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
2175INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
2176PARTITION partd VALUES LESS THAN (2147483646)
2177DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
2178INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir');
2179Warnings:
2180Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
2181INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
2182SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
2183Warnings:
2184Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
2185# Start usability test (inc/partition_check.inc)
2186create_command
2187SHOW CREATE TABLE t1;
2188Table	Create Table
2189t1	CREATE TABLE `t1` (
2190  `f_int1` int(11) DEFAULT NULL,
2191  `f_int2` int(11) DEFAULT NULL,
2192  `f_char1` char(20) DEFAULT NULL,
2193  `f_char2` char(20) DEFAULT NULL,
2194  `f_charbig` varchar(1000) DEFAULT NULL
2195) ENGINE=MyISAM DEFAULT CHARSET=latin1
2196/*!50100 PARTITION BY RANGE (f_int1 DIV 2)
2197SUBPARTITION BY HASH (f_int1)
2198SUBPARTITIONS 2
2199(PARTITION parta VALUES LESS THAN (0) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
2200 PARTITION partb VALUES LESS THAN (5) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
2201 PARTITION partc VALUES LESS THAN (10) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
2202 PARTITION partd VALUES LESS THAN (2147483646) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM) */
2203
2204unified filelist
2205t1#P#parta#SP#partasp0.MYD
2206t1#P#parta#SP#partasp0.MYI
2207t1#P#parta#SP#partasp1.MYD
2208t1#P#parta#SP#partasp1.MYI
2209t1#P#partb#SP#partbsp0.MYD
2210t1#P#partb#SP#partbsp0.MYI
2211t1#P#partb#SP#partbsp1.MYD
2212t1#P#partb#SP#partbsp1.MYI
2213t1#P#partc#SP#partcsp0.MYD
2214t1#P#partc#SP#partcsp0.MYI
2215t1#P#partc#SP#partcsp1.MYD
2216t1#P#partc#SP#partcsp1.MYI
2217t1#P#partd#SP#partdsp0.MYD
2218t1#P#partd#SP#partdsp0.MYI
2219t1#P#partd#SP#partdsp1.MYD
2220t1#P#partd#SP#partdsp1.MYI
2221t1.frm
2222t1.par
2223t1#P#parta#SP#partasp0.MYD
2224t1#P#parta#SP#partasp1.MYD
2225t1#P#partb#SP#partbsp0.MYD
2226t1#P#partb#SP#partbsp1.MYD
2227t1#P#partc#SP#partcsp0.MYD
2228t1#P#partc#SP#partcsp1.MYD
2229t1#P#partd#SP#partdsp0.MYD
2230t1#P#partd#SP#partdsp1.MYD
2231t1#P#parta#SP#partasp0.MYI
2232t1#P#parta#SP#partasp1.MYI
2233t1#P#partb#SP#partbsp0.MYI
2234t1#P#partb#SP#partbsp1.MYI
2235t1#P#partc#SP#partcsp0.MYI
2236t1#P#partc#SP#partcsp1.MYI
2237t1#P#partd#SP#partdsp0.MYI
2238t1#P#partd#SP#partdsp1.MYI
2239
2240# check prerequisites-1 success:    1
2241# check COUNT(*) success:    1
2242# check MIN/MAX(f_int1) success:    1
2243# check MIN/MAX(f_int2) success:    1
2244INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2245SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
2246CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
2247WHERE f_int1 IN (2,3);
2248# check prerequisites-3 success:    1
2249DELETE FROM t1 WHERE f_charbig = 'delete me';
2250# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
2251# check read via f_int1 success: 1
2252# check read via f_int2 success: 1
2253
2254# check multiple-1 success: 	1
2255DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
2256
2257# check multiple-2 success: 	1
2258INSERT INTO t1 SELECT * FROM t0_template
2259WHERE MOD(f_int1,3) = 0;
2260
2261# check multiple-3 success: 	1
2262UPDATE t1 SET f_int1 = f_int1 + @max_row
2263WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
2264AND @max_row_div2 + @max_row_div4;
2265
2266# check multiple-4 success: 	1
2267DELETE FROM t1
2268WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
2269AND @max_row_div2 + @max_row_div4 + @max_row;
2270
2271# check multiple-5 success: 	1
2272SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
2273INSERT INTO t1
2274SET f_int1 = @cur_value , f_int2 = @cur_value,
2275f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
2276f_charbig = '#SINGLE#';
2277
2278# check single-1 success: 	1
2279SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
2280INSERT INTO t1
2281SET f_int1 = @cur_value , f_int2 = @cur_value,
2282f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
2283f_charbig = '#SINGLE#';
2284
2285# check single-2 success: 	1
2286SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
2287SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
2288UPDATE t1 SET f_int1 = @cur_value2
2289WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
2290
2291# check single-3 success: 	1
2292SET @cur_value1= -1;
2293SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
2294UPDATE t1 SET f_int1 = @cur_value1
2295WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
2296
2297# check single-4 success: 	1
2298SELECT MAX(f_int1) INTO @cur_value FROM t1;
2299DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
2300
2301# check single-5 success: 	1
2302DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
2303
2304# check single-6 success: 	1
2305INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
2306
2307# check single-7 success: 	1
2308DELETE FROM t1 WHERE f_charbig = '#2147483647##';
2309DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
2310INSERT t1 SET f_int1 = 0 , f_int2 = 0,
2311f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
2312f_charbig = '#NULL#';
2313INSERT INTO t1
2314SET f_int1 = NULL , f_int2 = -@max_row,
2315f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
2316f_charbig = '#NULL#';
2317# check null success:    1
2318
2319# check null-1 success: 	1
2320UPDATE t1 SET f_int1 = -@max_row
2321WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
2322AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
2323
2324# check null-2 success: 	1
2325UPDATE t1 SET f_int1 = NULL
2326WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
2327AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
2328
2329# check null-3 success: 	1
2330DELETE FROM t1
2331WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
2332AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
2333
2334# check null-4 success: 	1
2335DELETE FROM t1
2336WHERE f_int1 = 0 AND f_int2 = 0
2337AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
2338AND f_charbig = '#NULL#';
2339SET AUTOCOMMIT= 0;
2340INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2341SELECT f_int1, f_int1, '', '', 'was inserted'
2342FROM t0_template source_tab
2343WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
2344
2345# check transactions-1 success: 	1
2346COMMIT WORK;
2347
2348# check transactions-2 success: 	1
2349ROLLBACK WORK;
2350
2351# check transactions-3 success: 	1
2352DELETE FROM t1 WHERE f_charbig = 'was inserted';
2353COMMIT WORK;
2354ROLLBACK WORK;
2355
2356# check transactions-4 success: 	1
2357INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2358SELECT f_int1, f_int1, '', '', 'was inserted'
2359FROM t0_template source_tab
2360WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
2361
2362# check transactions-5 success: 	1
2363ROLLBACK WORK;
2364Warnings:
2365Warning	1196	Some non-transactional changed tables couldn't be rolled back
2366
2367# check transactions-6 success: 	1
2368# INFO: Storage engine used for t1 seems to be not transactional.
2369COMMIT;
2370
2371# check transactions-7 success: 	1
2372DELETE FROM t1 WHERE f_charbig = 'was inserted';
2373COMMIT WORK;
2374SET @@session.sql_mode = 'traditional';
2375Warnings:
2376Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
2377SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
2378INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2379SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
2380'', '', 'was inserted' FROM t0_template
2381WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
2382ERROR 22012: Division by 0
2383COMMIT;
2384
2385# check transactions-8 success: 	1
2386# INFO: Storage engine used for t1 seems to be unable to revert
2387#       changes made by the failing statement.
2388SET @@session.sql_mode = '';
2389Warnings:
2390Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
2391SET AUTOCOMMIT= 1;
2392DELETE FROM t1 WHERE f_charbig = 'was inserted';
2393COMMIT WORK;
2394UPDATE t1 SET f_charbig = REPEAT('b', 1000);
2395
2396# check special-1 success: 	1
2397UPDATE t1 SET f_charbig = '';
2398
2399# check special-2 success: 	1
2400UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
2401INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
2402SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
2403WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2404INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2405SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2406'just inserted' FROM t0_template
2407WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2408CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
2409BEGIN
2410UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2411f_charbig = 'updated by trigger'
2412      WHERE f_int1 = new.f_int1;
2413END|
2414INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2415SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
2416WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2417
2418# check trigger-1 success: 	1
2419DROP TRIGGER trg_1;
2420UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2421f_int2 = CAST(f_char1 AS SIGNED INT),
2422f_charbig = 'just inserted'
2423   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2424DELETE FROM t0_aux
2425WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2426INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2427SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2428'just inserted' FROM t0_template
2429WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2430CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
2431BEGIN
2432UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2433f_charbig = 'updated by trigger'
2434      WHERE f_int1 = new.f_int1;
2435END|
2436INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2437SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
2438WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2439
2440# check trigger-2 success: 	1
2441DROP TRIGGER trg_1;
2442UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2443f_int2 = CAST(f_char1 AS SIGNED INT),
2444f_charbig = 'just inserted'
2445   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2446DELETE FROM t0_aux
2447WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2448INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2449SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2450'just inserted' FROM t0_template
2451WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2452CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
2453BEGIN
2454UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2455f_charbig = 'updated by trigger'
2456      WHERE f_int1 = new.f_int1;
2457END|
2458UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
2459WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2460
2461# check trigger-3 success: 	1
2462DROP TRIGGER trg_1;
2463UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2464f_int2 = CAST(f_char1 AS SIGNED INT),
2465f_charbig = 'just inserted'
2466   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2467DELETE FROM t0_aux
2468WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2469INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2470SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2471'just inserted' FROM t0_template
2472WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2473CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
2474BEGIN
2475UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2476f_charbig = 'updated by trigger'
2477      WHERE f_int1 = - old.f_int1;
2478END|
2479UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
2480WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2481
2482# check trigger-4 success: 	1
2483DROP TRIGGER trg_1;
2484UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2485f_int2 = CAST(f_char1 AS SIGNED INT),
2486f_charbig = 'just inserted'
2487   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2488DELETE FROM t0_aux
2489WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2490INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2491SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2492'just inserted' FROM t0_template
2493WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2494CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
2495BEGIN
2496UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2497f_charbig = 'updated by trigger'
2498      WHERE f_int1 = new.f_int1;
2499END|
2500UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
2501WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2502
2503# check trigger-5 success: 	1
2504DROP TRIGGER trg_1;
2505UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2506f_int2 = CAST(f_char1 AS SIGNED INT),
2507f_charbig = 'just inserted'
2508   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2509DELETE FROM t0_aux
2510WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2511INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2512SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2513'just inserted' FROM t0_template
2514WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2515CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
2516BEGIN
2517UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2518f_charbig = 'updated by trigger'
2519      WHERE f_int1 = - old.f_int1;
2520END|
2521UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
2522WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2523
2524# check trigger-6 success: 	1
2525DROP TRIGGER trg_1;
2526UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2527f_int2 = CAST(f_char1 AS SIGNED INT),
2528f_charbig = 'just inserted'
2529   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2530DELETE FROM t0_aux
2531WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2532INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2533SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2534'just inserted' FROM t0_template
2535WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2536CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
2537BEGIN
2538UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2539f_charbig = 'updated by trigger'
2540      WHERE f_int1 = - old.f_int1;
2541END|
2542DELETE FROM t0_aux
2543WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2544
2545# check trigger-7 success: 	1
2546DROP TRIGGER trg_1;
2547UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2548f_int2 = CAST(f_char1 AS SIGNED INT),
2549f_charbig = 'just inserted'
2550   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2551DELETE FROM t0_aux
2552WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2553INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2554SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2555'just inserted' FROM t0_template
2556WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2557CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
2558BEGIN
2559UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2560f_charbig = 'updated by trigger'
2561      WHERE f_int1 = - old.f_int1;
2562END|
2563DELETE FROM t0_aux
2564WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2565
2566# check trigger-8 success: 	1
2567DROP TRIGGER trg_1;
2568UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2569f_int2 = CAST(f_char1 AS SIGNED INT),
2570f_charbig = 'just inserted'
2571   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2572DELETE FROM t0_aux
2573WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2574DELETE FROM t1
2575WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2576CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
2577BEGIN
2578SET new.f_int1 = old.f_int1 + @max_row,
2579new.f_int2 = old.f_int2 - @max_row,
2580new.f_charbig = '####updated per update trigger####';
2581END|
2582UPDATE t1
2583SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
2584f_charbig = '####updated per update statement itself####';
2585Warnings:
2586Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
2587
2588# check trigger-9 success: 	1
2589DROP TRIGGER trg_2;
2590UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2591f_int2 = CAST(f_char1 AS SIGNED INT),
2592f_charbig = CONCAT('===',f_char1,'===');
2593Warnings:
2594Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
2595CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
2596BEGIN
2597SET new.f_int1 = new.f_int1 + @max_row,
2598new.f_int2 = new.f_int2 - @max_row,
2599new.f_charbig = '####updated per update trigger####';
2600END|
2601UPDATE t1
2602SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
2603f_charbig = '####updated per update statement itself####';
2604Warnings:
2605Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
2606
2607# check trigger-10 success: 	1
2608DROP TRIGGER trg_2;
2609UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2610f_int2 = CAST(f_char1 AS SIGNED INT),
2611f_charbig = CONCAT('===',f_char1,'===');
2612Warnings:
2613Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
2614CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
2615BEGIN
2616SET new.f_int1 = @my_max1 + @counter,
2617new.f_int2 = @my_min2 - @counter,
2618new.f_charbig = '####updated per insert trigger####';
2619SET @counter = @counter + 1;
2620END|
2621SET @counter = 1;
2622SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
2623Warnings:
2624Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
2625INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2626SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
2627CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
2628WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
2629ORDER BY f_int1;
2630DROP TRIGGER trg_3;
2631
2632# check trigger-11 success: 	1
2633Warnings:
2634Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
2635DELETE FROM t1
2636WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
2637AND f_int2 <> CAST(f_char1 AS SIGNED INT)
2638AND f_charbig = '####updated per insert trigger####';
2639CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
2640BEGIN
2641SET new.f_int1 = @my_max1 + @counter,
2642new.f_int2 = @my_min2 - @counter,
2643new.f_charbig = '####updated per insert trigger####';
2644SET @counter = @counter + 1;
2645END|
2646SET @counter = 1;
2647SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
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.
2650INSERT INTO t1 (f_char1, f_char2, f_charbig)
2651SELECT CAST(f_int1 AS CHAR),
2652CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
2653WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
2654ORDER BY f_int1;
2655DROP TRIGGER trg_3;
2656
2657# check trigger-12 success: 	1
2658Warnings:
2659Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
2660DELETE FROM t1
2661WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
2662AND f_int2 <> CAST(f_char1 AS SIGNED INT)
2663AND f_charbig = '####updated per insert trigger####';
2664ANALYZE  TABLE t1;
2665Table	Op	Msg_type	Msg_text
2666test.t1	analyze	status	OK
2667test.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.
2668CHECK    TABLE t1 EXTENDED;
2669Table	Op	Msg_type	Msg_text
2670test.t1	check	status	OK
2671test.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.
2672CHECKSUM TABLE t1 EXTENDED;
2673Table	Checksum
2674test.t1	<some_value>
2675OPTIMIZE TABLE t1;
2676Table	Op	Msg_type	Msg_text
2677test.t1	optimize	status	OK
2678test.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.
2679# check layout success:    1
2680REPAIR   TABLE t1 EXTENDED;
2681Table	Op	Msg_type	Msg_text
2682test.t1	repair	status	OK
2683test.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.
2684# check layout success:    1
2685TRUNCATE t1;
2686Warnings:
2687Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
2688
2689# check TRUNCATE success: 	1
2690# check layout success:    1
2691# End usability test (inc/partition_check.inc)
2692DROP TABLE t1;
2693CREATE TABLE t1 (
2694f_int1 INTEGER,
2695f_int2 INTEGER,
2696f_char1 CHAR(20),
2697f_char2 CHAR(20),
2698f_charbig VARCHAR(1000)
2699
2700)
2701PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
2702(PARTITION part1 VALUES LESS THAN (0)
2703(SUBPARTITION subpart11 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
2704SUBPARTITION subpart12 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'),
2705PARTITION part2 VALUES LESS THAN (5)
2706(SUBPARTITION subpart21 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
2707SUBPARTITION subpart22 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'),
2708PARTITION part3 VALUES LESS THAN (10)
2709(SUBPARTITION subpart31 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
2710SUBPARTITION subpart32 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'),
2711PARTITION part4 VALUES LESS THAN (2147483646)
2712(SUBPARTITION subpart41 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
2713SUBPARTITION subpart42 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'));
2714Warnings:
2715Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
2716INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
2717SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
2718Warnings:
2719Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
2720# Start usability test (inc/partition_check.inc)
2721create_command
2722SHOW CREATE TABLE t1;
2723Table	Create Table
2724t1	CREATE TABLE `t1` (
2725  `f_int1` int(11) DEFAULT NULL,
2726  `f_int2` int(11) DEFAULT NULL,
2727  `f_char1` char(20) DEFAULT NULL,
2728  `f_char2` char(20) DEFAULT NULL,
2729  `f_charbig` varchar(1000) DEFAULT NULL
2730) ENGINE=MyISAM DEFAULT CHARSET=latin1
2731/*!50100 PARTITION BY RANGE (f_int1)
2732SUBPARTITION BY KEY (f_int1)
2733(PARTITION part1 VALUES LESS THAN (0)
2734 (SUBPARTITION subpart11 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
2735  SUBPARTITION subpart12 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM),
2736 PARTITION part2 VALUES LESS THAN (5)
2737 (SUBPARTITION subpart21 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
2738  SUBPARTITION subpart22 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM),
2739 PARTITION part3 VALUES LESS THAN (10)
2740 (SUBPARTITION subpart31 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
2741  SUBPARTITION subpart32 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM),
2742 PARTITION part4 VALUES LESS THAN (2147483646)
2743 (SUBPARTITION subpart41 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
2744  SUBPARTITION subpart42 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM)) */
2745
2746unified filelist
2747t1#P#part1#SP#subpart11.MYD
2748t1#P#part1#SP#subpart11.MYI
2749t1#P#part1#SP#subpart12.MYD
2750t1#P#part1#SP#subpart12.MYI
2751t1#P#part2#SP#subpart21.MYD
2752t1#P#part2#SP#subpart21.MYI
2753t1#P#part2#SP#subpart22.MYD
2754t1#P#part2#SP#subpart22.MYI
2755t1#P#part3#SP#subpart31.MYD
2756t1#P#part3#SP#subpart31.MYI
2757t1#P#part3#SP#subpart32.MYD
2758t1#P#part3#SP#subpart32.MYI
2759t1#P#part4#SP#subpart41.MYD
2760t1#P#part4#SP#subpart41.MYI
2761t1#P#part4#SP#subpart42.MYD
2762t1#P#part4#SP#subpart42.MYI
2763t1.frm
2764t1.par
2765t1#P#part1#SP#subpart11.MYD
2766t1#P#part1#SP#subpart12.MYD
2767t1#P#part2#SP#subpart21.MYD
2768t1#P#part2#SP#subpart22.MYD
2769t1#P#part3#SP#subpart31.MYD
2770t1#P#part3#SP#subpart32.MYD
2771t1#P#part4#SP#subpart41.MYD
2772t1#P#part4#SP#subpart42.MYD
2773t1#P#part1#SP#subpart11.MYI
2774t1#P#part1#SP#subpart12.MYI
2775t1#P#part2#SP#subpart21.MYI
2776t1#P#part2#SP#subpart22.MYI
2777t1#P#part3#SP#subpart31.MYI
2778t1#P#part3#SP#subpart32.MYI
2779t1#P#part4#SP#subpart41.MYI
2780t1#P#part4#SP#subpart42.MYI
2781
2782# check prerequisites-1 success:    1
2783# check COUNT(*) success:    1
2784# check MIN/MAX(f_int1) success:    1
2785# check MIN/MAX(f_int2) success:    1
2786INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2787SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
2788CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
2789WHERE f_int1 IN (2,3);
2790# check prerequisites-3 success:    1
2791DELETE FROM t1 WHERE f_charbig = 'delete me';
2792# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
2793# check read via f_int1 success: 1
2794# check read via f_int2 success: 1
2795
2796# check multiple-1 success: 	1
2797DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
2798
2799# check multiple-2 success: 	1
2800INSERT INTO t1 SELECT * FROM t0_template
2801WHERE MOD(f_int1,3) = 0;
2802
2803# check multiple-3 success: 	1
2804UPDATE t1 SET f_int1 = f_int1 + @max_row
2805WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
2806AND @max_row_div2 + @max_row_div4;
2807
2808# check multiple-4 success: 	1
2809DELETE FROM t1
2810WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
2811AND @max_row_div2 + @max_row_div4 + @max_row;
2812
2813# check multiple-5 success: 	1
2814SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
2815INSERT INTO t1
2816SET f_int1 = @cur_value , f_int2 = @cur_value,
2817f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
2818f_charbig = '#SINGLE#';
2819
2820# check single-1 success: 	1
2821SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
2822INSERT INTO t1
2823SET f_int1 = @cur_value , f_int2 = @cur_value,
2824f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
2825f_charbig = '#SINGLE#';
2826
2827# check single-2 success: 	1
2828SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
2829SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
2830UPDATE t1 SET f_int1 = @cur_value2
2831WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
2832
2833# check single-3 success: 	1
2834SET @cur_value1= -1;
2835SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
2836UPDATE t1 SET f_int1 = @cur_value1
2837WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
2838
2839# check single-4 success: 	1
2840SELECT MAX(f_int1) INTO @cur_value FROM t1;
2841DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
2842
2843# check single-5 success: 	1
2844DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
2845
2846# check single-6 success: 	1
2847INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
2848ERROR HY000: Table has no partition for value 2147483647
2849DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
2850INSERT t1 SET f_int1 = 0 , f_int2 = 0,
2851f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
2852f_charbig = '#NULL#';
2853INSERT INTO t1
2854SET f_int1 = NULL , f_int2 = -@max_row,
2855f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
2856f_charbig = '#NULL#';
2857# check null success:    1
2858
2859# check null-1 success: 	1
2860UPDATE t1 SET f_int1 = -@max_row
2861WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
2862AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
2863
2864# check null-2 success: 	1
2865UPDATE t1 SET f_int1 = NULL
2866WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
2867AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
2868
2869# check null-3 success: 	1
2870DELETE FROM t1
2871WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
2872AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
2873
2874# check null-4 success: 	1
2875DELETE FROM t1
2876WHERE f_int1 = 0 AND f_int2 = 0
2877AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
2878AND f_charbig = '#NULL#';
2879SET AUTOCOMMIT= 0;
2880INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2881SELECT f_int1, f_int1, '', '', 'was inserted'
2882FROM t0_template source_tab
2883WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
2884
2885# check transactions-1 success: 	1
2886COMMIT WORK;
2887
2888# check transactions-2 success: 	1
2889ROLLBACK WORK;
2890
2891# check transactions-3 success: 	1
2892DELETE FROM t1 WHERE f_charbig = 'was inserted';
2893COMMIT WORK;
2894ROLLBACK WORK;
2895
2896# check transactions-4 success: 	1
2897INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2898SELECT f_int1, f_int1, '', '', 'was inserted'
2899FROM t0_template source_tab
2900WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
2901
2902# check transactions-5 success: 	1
2903ROLLBACK WORK;
2904Warnings:
2905Warning	1196	Some non-transactional changed tables couldn't be rolled back
2906
2907# check transactions-6 success: 	1
2908# INFO: Storage engine used for t1 seems to be not transactional.
2909COMMIT;
2910
2911# check transactions-7 success: 	1
2912DELETE FROM t1 WHERE f_charbig = 'was inserted';
2913COMMIT WORK;
2914SET @@session.sql_mode = 'traditional';
2915Warnings:
2916Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
2917SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
2918INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2919SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
2920'', '', 'was inserted' FROM t0_template
2921WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
2922ERROR 22012: Division by 0
2923COMMIT;
2924
2925# check transactions-8 success: 	1
2926# INFO: Storage engine used for t1 seems to be unable to revert
2927#       changes made by the failing statement.
2928SET @@session.sql_mode = '';
2929Warnings:
2930Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
2931SET AUTOCOMMIT= 1;
2932DELETE FROM t1 WHERE f_charbig = 'was inserted';
2933COMMIT WORK;
2934UPDATE t1 SET f_charbig = REPEAT('b', 1000);
2935
2936# check special-1 success: 	1
2937UPDATE t1 SET f_charbig = '';
2938
2939# check special-2 success: 	1
2940UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
2941INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
2942SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
2943WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2944INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2945SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2946'just inserted' FROM t0_template
2947WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2948CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
2949BEGIN
2950UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2951f_charbig = 'updated by trigger'
2952      WHERE f_int1 = new.f_int1;
2953END|
2954INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2955SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
2956WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2957
2958# check trigger-1 success: 	1
2959DROP TRIGGER trg_1;
2960UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2961f_int2 = CAST(f_char1 AS SIGNED INT),
2962f_charbig = 'just inserted'
2963   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2964DELETE FROM t0_aux
2965WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2966INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2967SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2968'just inserted' FROM t0_template
2969WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2970CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
2971BEGIN
2972UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2973f_charbig = 'updated by trigger'
2974      WHERE f_int1 = new.f_int1;
2975END|
2976INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2977SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
2978WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2979
2980# check trigger-2 success: 	1
2981DROP TRIGGER trg_1;
2982UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2983f_int2 = CAST(f_char1 AS SIGNED INT),
2984f_charbig = 'just inserted'
2985   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2986DELETE FROM t0_aux
2987WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2988INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2989SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2990'just inserted' FROM t0_template
2991WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2992CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
2993BEGIN
2994UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2995f_charbig = 'updated by trigger'
2996      WHERE f_int1 = new.f_int1;
2997END|
2998UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
2999WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3000
3001# check trigger-3 success: 	1
3002DROP TRIGGER trg_1;
3003UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3004f_int2 = CAST(f_char1 AS SIGNED INT),
3005f_charbig = 'just inserted'
3006   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3007DELETE FROM t0_aux
3008WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3009INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3010SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3011'just inserted' FROM t0_template
3012WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3013CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
3014BEGIN
3015UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3016f_charbig = 'updated by trigger'
3017      WHERE f_int1 = - old.f_int1;
3018END|
3019UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
3020WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3021
3022# check trigger-4 success: 	1
3023DROP TRIGGER trg_1;
3024UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3025f_int2 = CAST(f_char1 AS SIGNED INT),
3026f_charbig = 'just inserted'
3027   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3028DELETE FROM t0_aux
3029WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3030INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3031SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3032'just inserted' FROM t0_template
3033WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3034CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
3035BEGIN
3036UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3037f_charbig = 'updated by trigger'
3038      WHERE f_int1 = new.f_int1;
3039END|
3040UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
3041WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3042
3043# check trigger-5 success: 	1
3044DROP TRIGGER trg_1;
3045UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3046f_int2 = CAST(f_char1 AS SIGNED INT),
3047f_charbig = 'just inserted'
3048   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3049DELETE FROM t0_aux
3050WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3051INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3052SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3053'just inserted' FROM t0_template
3054WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3055CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
3056BEGIN
3057UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3058f_charbig = 'updated by trigger'
3059      WHERE f_int1 = - old.f_int1;
3060END|
3061UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
3062WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3063
3064# check trigger-6 success: 	1
3065DROP TRIGGER trg_1;
3066UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3067f_int2 = CAST(f_char1 AS SIGNED INT),
3068f_charbig = 'just inserted'
3069   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3070DELETE FROM t0_aux
3071WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3072INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3073SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3074'just inserted' FROM t0_template
3075WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3076CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
3077BEGIN
3078UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3079f_charbig = 'updated by trigger'
3080      WHERE f_int1 = - old.f_int1;
3081END|
3082DELETE FROM t0_aux
3083WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3084
3085# check trigger-7 success: 	1
3086DROP TRIGGER trg_1;
3087UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3088f_int2 = CAST(f_char1 AS SIGNED INT),
3089f_charbig = 'just inserted'
3090   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3091DELETE FROM t0_aux
3092WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3093INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3094SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3095'just inserted' FROM t0_template
3096WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3097CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
3098BEGIN
3099UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3100f_charbig = 'updated by trigger'
3101      WHERE f_int1 = - old.f_int1;
3102END|
3103DELETE FROM t0_aux
3104WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3105
3106# check trigger-8 success: 	1
3107DROP TRIGGER trg_1;
3108UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3109f_int2 = CAST(f_char1 AS SIGNED INT),
3110f_charbig = 'just inserted'
3111   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3112DELETE FROM t0_aux
3113WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3114DELETE FROM t1
3115WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3116CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
3117BEGIN
3118SET new.f_int1 = old.f_int1 + @max_row,
3119new.f_int2 = old.f_int2 - @max_row,
3120new.f_charbig = '####updated per update trigger####';
3121END|
3122UPDATE t1
3123SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
3124f_charbig = '####updated per update statement itself####';
3125Warnings:
3126Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
3127
3128# check trigger-9 success: 	1
3129DROP TRIGGER trg_2;
3130UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3131f_int2 = CAST(f_char1 AS SIGNED INT),
3132f_charbig = CONCAT('===',f_char1,'===');
3133Warnings:
3134Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
3135CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
3136BEGIN
3137SET new.f_int1 = new.f_int1 + @max_row,
3138new.f_int2 = new.f_int2 - @max_row,
3139new.f_charbig = '####updated per update trigger####';
3140END|
3141UPDATE t1
3142SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
3143f_charbig = '####updated per update statement itself####';
3144Warnings:
3145Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
3146
3147# check trigger-10 success: 	1
3148DROP TRIGGER trg_2;
3149UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3150f_int2 = CAST(f_char1 AS SIGNED INT),
3151f_charbig = CONCAT('===',f_char1,'===');
3152Warnings:
3153Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
3154CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
3155BEGIN
3156SET new.f_int1 = @my_max1 + @counter,
3157new.f_int2 = @my_min2 - @counter,
3158new.f_charbig = '####updated per insert trigger####';
3159SET @counter = @counter + 1;
3160END|
3161SET @counter = 1;
3162SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
3163Warnings:
3164Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
3165INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3166SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
3167CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
3168WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
3169ORDER BY f_int1;
3170DROP TRIGGER trg_3;
3171
3172# check trigger-11 success: 	1
3173Warnings:
3174Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
3175DELETE FROM t1
3176WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
3177AND f_int2 <> CAST(f_char1 AS SIGNED INT)
3178AND f_charbig = '####updated per insert trigger####';
3179CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
3180BEGIN
3181SET new.f_int1 = @my_max1 + @counter,
3182new.f_int2 = @my_min2 - @counter,
3183new.f_charbig = '####updated per insert trigger####';
3184SET @counter = @counter + 1;
3185END|
3186SET @counter = 1;
3187SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
3188Warnings:
3189Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
3190INSERT INTO t1 (f_char1, f_char2, f_charbig)
3191SELECT CAST(f_int1 AS CHAR),
3192CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
3193WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
3194ORDER BY f_int1;
3195DROP TRIGGER trg_3;
3196
3197# check trigger-12 success: 	1
3198Warnings:
3199Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
3200DELETE FROM t1
3201WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
3202AND f_int2 <> CAST(f_char1 AS SIGNED INT)
3203AND f_charbig = '####updated per insert trigger####';
3204ANALYZE  TABLE t1;
3205Table	Op	Msg_type	Msg_text
3206test.t1	analyze	status	OK
3207test.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.
3208CHECK    TABLE t1 EXTENDED;
3209Table	Op	Msg_type	Msg_text
3210test.t1	check	status	OK
3211test.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.
3212CHECKSUM TABLE t1 EXTENDED;
3213Table	Checksum
3214test.t1	<some_value>
3215OPTIMIZE TABLE t1;
3216Table	Op	Msg_type	Msg_text
3217test.t1	optimize	status	OK
3218test.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.
3219# check layout success:    1
3220REPAIR   TABLE t1 EXTENDED;
3221Table	Op	Msg_type	Msg_text
3222test.t1	repair	status	OK
3223test.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.
3224# check layout success:    1
3225TRUNCATE t1;
3226Warnings:
3227Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
3228
3229# check TRUNCATE success: 	1
3230# check layout success:    1
3231# End usability test (inc/partition_check.inc)
3232DROP TABLE t1;
3233CREATE TABLE t1 (
3234f_int1 INTEGER,
3235f_int2 INTEGER,
3236f_char1 CHAR(20),
3237f_char2 CHAR(20),
3238f_charbig VARCHAR(1000)
3239
3240)
3241PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
3242(PARTITION part1 VALUES IN (0)
3243DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
3244INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'
3245(SUBPARTITION sp11
3246DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
3247INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
3248SUBPARTITION sp12
3249DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
3250INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'),
3251PARTITION part2 VALUES IN (1)
3252DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
3253INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'
3254(SUBPARTITION sp21
3255DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
3256INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
3257SUBPARTITION sp22
3258DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
3259INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'),
3260PARTITION part3 VALUES IN (2)
3261DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
3262INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'
3263(SUBPARTITION sp31,
3264SUBPARTITION sp32),
3265PARTITION part4 VALUES IN (NULL)
3266DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
3267INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'
3268(SUBPARTITION sp41
3269DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
3270INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
3271SUBPARTITION sp42
3272DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
3273INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'));
3274Warnings:
3275Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
3276INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
3277SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
3278Warnings:
3279Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
3280# Start usability test (inc/partition_check.inc)
3281create_command
3282SHOW CREATE TABLE t1;
3283Table	Create Table
3284t1	CREATE TABLE `t1` (
3285  `f_int1` int(11) DEFAULT NULL,
3286  `f_int2` int(11) DEFAULT NULL,
3287  `f_char1` char(20) DEFAULT NULL,
3288  `f_char2` char(20) DEFAULT NULL,
3289  `f_charbig` varchar(1000) DEFAULT NULL
3290) ENGINE=MyISAM DEFAULT CHARSET=latin1
3291/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
3292SUBPARTITION BY HASH (f_int1 + 1)
3293(PARTITION part1 VALUES IN (0)
3294 (SUBPARTITION sp11 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
3295  SUBPARTITION sp12 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM),
3296 PARTITION part2 VALUES IN (1)
3297 (SUBPARTITION sp21 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
3298  SUBPARTITION sp22 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM),
3299 PARTITION part3 VALUES IN (2)
3300 (SUBPARTITION sp31 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
3301  SUBPARTITION sp32 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM),
3302 PARTITION part4 VALUES IN (NULL)
3303 (SUBPARTITION sp41 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
3304  SUBPARTITION sp42 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM)) */
3305
3306unified filelist
3307t1#P#part1#SP#sp11.MYD
3308t1#P#part1#SP#sp11.MYI
3309t1#P#part1#SP#sp12.MYD
3310t1#P#part1#SP#sp12.MYI
3311t1#P#part2#SP#sp21.MYD
3312t1#P#part2#SP#sp21.MYI
3313t1#P#part2#SP#sp22.MYD
3314t1#P#part2#SP#sp22.MYI
3315t1#P#part3#SP#sp31.MYD
3316t1#P#part3#SP#sp31.MYI
3317t1#P#part3#SP#sp32.MYD
3318t1#P#part3#SP#sp32.MYI
3319t1#P#part4#SP#sp41.MYD
3320t1#P#part4#SP#sp41.MYI
3321t1#P#part4#SP#sp42.MYD
3322t1#P#part4#SP#sp42.MYI
3323t1.frm
3324t1.par
3325t1#P#part1#SP#sp11.MYD
3326t1#P#part1#SP#sp12.MYD
3327t1#P#part2#SP#sp21.MYD
3328t1#P#part2#SP#sp22.MYD
3329t1#P#part3#SP#sp31.MYD
3330t1#P#part3#SP#sp32.MYD
3331t1#P#part4#SP#sp41.MYD
3332t1#P#part4#SP#sp42.MYD
3333t1#P#part1#SP#sp11.MYI
3334t1#P#part1#SP#sp12.MYI
3335t1#P#part2#SP#sp21.MYI
3336t1#P#part2#SP#sp22.MYI
3337t1#P#part3#SP#sp31.MYI
3338t1#P#part3#SP#sp32.MYI
3339t1#P#part4#SP#sp41.MYI
3340t1#P#part4#SP#sp42.MYI
3341
3342# check prerequisites-1 success:    1
3343# check COUNT(*) success:    1
3344# check MIN/MAX(f_int1) success:    1
3345# check MIN/MAX(f_int2) success:    1
3346INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3347SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
3348CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
3349WHERE f_int1 IN (2,3);
3350# check prerequisites-3 success:    1
3351DELETE FROM t1 WHERE f_charbig = 'delete me';
3352# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
3353# check read via f_int1 success: 1
3354# check read via f_int2 success: 1
3355
3356# check multiple-1 success: 	1
3357DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
3358
3359# check multiple-2 success: 	1
3360INSERT INTO t1 SELECT * FROM t0_template
3361WHERE MOD(f_int1,3) = 0;
3362
3363# check multiple-3 success: 	1
3364UPDATE t1 SET f_int1 = f_int1 + @max_row
3365WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
3366AND @max_row_div2 + @max_row_div4;
3367
3368# check multiple-4 success: 	1
3369DELETE FROM t1
3370WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
3371AND @max_row_div2 + @max_row_div4 + @max_row;
3372
3373# check multiple-5 success: 	1
3374SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
3375INSERT INTO t1
3376SET f_int1 = @cur_value , f_int2 = @cur_value,
3377f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
3378f_charbig = '#SINGLE#';
3379
3380# check single-1 success: 	1
3381SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
3382INSERT INTO t1
3383SET f_int1 = @cur_value , f_int2 = @cur_value,
3384f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
3385f_charbig = '#SINGLE#';
3386
3387# check single-2 success: 	1
3388SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
3389SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
3390UPDATE t1 SET f_int1 = @cur_value2
3391WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
3392
3393# check single-3 success: 	1
3394SET @cur_value1= -1;
3395SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
3396UPDATE t1 SET f_int1 = @cur_value1
3397WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
3398
3399# check single-4 success: 	1
3400SELECT MAX(f_int1) INTO @cur_value FROM t1;
3401DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
3402
3403# check single-5 success: 	1
3404DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
3405
3406# check single-6 success: 	1
3407INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
3408
3409# check single-7 success: 	1
3410DELETE FROM t1 WHERE f_charbig = '#2147483647##';
3411DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
3412INSERT t1 SET f_int1 = 0 , f_int2 = 0,
3413f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
3414f_charbig = '#NULL#';
3415INSERT INTO t1
3416SET f_int1 = NULL , f_int2 = -@max_row,
3417f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
3418f_charbig = '#NULL#';
3419# check null success:    1
3420
3421# check null-1 success: 	1
3422UPDATE t1 SET f_int1 = -@max_row
3423WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
3424AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
3425
3426# check null-2 success: 	1
3427UPDATE t1 SET f_int1 = NULL
3428WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
3429AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
3430
3431# check null-3 success: 	1
3432DELETE FROM t1
3433WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
3434AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
3435
3436# check null-4 success: 	1
3437DELETE FROM t1
3438WHERE f_int1 = 0 AND f_int2 = 0
3439AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
3440AND f_charbig = '#NULL#';
3441SET AUTOCOMMIT= 0;
3442INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3443SELECT f_int1, f_int1, '', '', 'was inserted'
3444FROM t0_template source_tab
3445WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
3446
3447# check transactions-1 success: 	1
3448COMMIT WORK;
3449
3450# check transactions-2 success: 	1
3451ROLLBACK WORK;
3452
3453# check transactions-3 success: 	1
3454DELETE FROM t1 WHERE f_charbig = 'was inserted';
3455COMMIT WORK;
3456ROLLBACK WORK;
3457
3458# check transactions-4 success: 	1
3459INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3460SELECT f_int1, f_int1, '', '', 'was inserted'
3461FROM t0_template source_tab
3462WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
3463
3464# check transactions-5 success: 	1
3465ROLLBACK WORK;
3466Warnings:
3467Warning	1196	Some non-transactional changed tables couldn't be rolled back
3468
3469# check transactions-6 success: 	1
3470# INFO: Storage engine used for t1 seems to be not transactional.
3471COMMIT;
3472
3473# check transactions-7 success: 	1
3474DELETE FROM t1 WHERE f_charbig = 'was inserted';
3475COMMIT WORK;
3476SET @@session.sql_mode = 'traditional';
3477Warnings:
3478Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
3479SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
3480INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3481SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
3482'', '', 'was inserted' FROM t0_template
3483WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
3484ERROR 22012: Division by 0
3485COMMIT;
3486
3487# check transactions-8 success: 	1
3488# INFO: Storage engine used for t1 seems to be unable to revert
3489#       changes made by the failing statement.
3490SET @@session.sql_mode = '';
3491Warnings:
3492Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
3493SET AUTOCOMMIT= 1;
3494DELETE FROM t1 WHERE f_charbig = 'was inserted';
3495COMMIT WORK;
3496UPDATE t1 SET f_charbig = REPEAT('b', 1000);
3497
3498# check special-1 success: 	1
3499UPDATE t1 SET f_charbig = '';
3500
3501# check special-2 success: 	1
3502UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
3503INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
3504SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
3505WHERE 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 BEFORE INSERT 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 = new.f_int1;
3515END|
3516INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3517SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
3518WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3519
3520# check trigger-1 success: 	1
3521DROP TRIGGER trg_1;
3522UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3523f_int2 = CAST(f_char1 AS SIGNED INT),
3524f_charbig = 'just inserted'
3525   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3526DELETE FROM t0_aux
3527WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3528INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3529SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3530'just inserted' FROM t0_template
3531WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3532CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
3533BEGIN
3534UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3535f_charbig = 'updated by trigger'
3536      WHERE f_int1 = new.f_int1;
3537END|
3538INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3539SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
3540WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3541
3542# check trigger-2 success: 	1
3543DROP TRIGGER trg_1;
3544UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3545f_int2 = CAST(f_char1 AS SIGNED INT),
3546f_charbig = 'just inserted'
3547   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3548DELETE FROM t0_aux
3549WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3550INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3551SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3552'just inserted' FROM t0_template
3553WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3554CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
3555BEGIN
3556UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3557f_charbig = 'updated by trigger'
3558      WHERE f_int1 = new.f_int1;
3559END|
3560UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
3561WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3562
3563# check trigger-3 success: 	1
3564DROP TRIGGER trg_1;
3565UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3566f_int2 = CAST(f_char1 AS SIGNED INT),
3567f_charbig = 'just inserted'
3568   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3569DELETE FROM t0_aux
3570WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3571INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3572SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3573'just inserted' FROM t0_template
3574WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3575CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
3576BEGIN
3577UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3578f_charbig = 'updated by trigger'
3579      WHERE f_int1 = - old.f_int1;
3580END|
3581UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
3582WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3583
3584# check trigger-4 success: 	1
3585DROP TRIGGER trg_1;
3586UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3587f_int2 = CAST(f_char1 AS SIGNED INT),
3588f_charbig = 'just inserted'
3589   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3590DELETE FROM t0_aux
3591WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3592INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3593SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3594'just inserted' FROM t0_template
3595WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3596CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
3597BEGIN
3598UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3599f_charbig = 'updated by trigger'
3600      WHERE f_int1 = new.f_int1;
3601END|
3602UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
3603WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3604
3605# check trigger-5 success: 	1
3606DROP TRIGGER trg_1;
3607UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3608f_int2 = CAST(f_char1 AS SIGNED INT),
3609f_charbig = 'just inserted'
3610   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3611DELETE FROM t0_aux
3612WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3613INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3614SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3615'just inserted' FROM t0_template
3616WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3617CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
3618BEGIN
3619UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3620f_charbig = 'updated by trigger'
3621      WHERE f_int1 = - old.f_int1;
3622END|
3623UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
3624WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3625
3626# check trigger-6 success: 	1
3627DROP TRIGGER trg_1;
3628UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3629f_int2 = CAST(f_char1 AS SIGNED INT),
3630f_charbig = 'just inserted'
3631   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3632DELETE FROM t0_aux
3633WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3634INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3635SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3636'just inserted' FROM t0_template
3637WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3638CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
3639BEGIN
3640UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3641f_charbig = 'updated by trigger'
3642      WHERE f_int1 = - old.f_int1;
3643END|
3644DELETE FROM t0_aux
3645WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3646
3647# check trigger-7 success: 	1
3648DROP TRIGGER trg_1;
3649UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3650f_int2 = CAST(f_char1 AS SIGNED INT),
3651f_charbig = 'just inserted'
3652   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3653DELETE FROM t0_aux
3654WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3655INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3656SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3657'just inserted' FROM t0_template
3658WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3659CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
3660BEGIN
3661UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3662f_charbig = 'updated by trigger'
3663      WHERE f_int1 = - old.f_int1;
3664END|
3665DELETE FROM t0_aux
3666WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3667
3668# check trigger-8 success: 	1
3669DROP TRIGGER trg_1;
3670UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3671f_int2 = CAST(f_char1 AS SIGNED INT),
3672f_charbig = 'just inserted'
3673   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3674DELETE FROM t0_aux
3675WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3676DELETE FROM t1
3677WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3678CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
3679BEGIN
3680SET new.f_int1 = old.f_int1 + @max_row,
3681new.f_int2 = old.f_int2 - @max_row,
3682new.f_charbig = '####updated per update trigger####';
3683END|
3684UPDATE t1
3685SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
3686f_charbig = '####updated per update statement itself####';
3687Warnings:
3688Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
3689
3690# check trigger-9 success: 	1
3691DROP TRIGGER trg_2;
3692UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3693f_int2 = CAST(f_char1 AS SIGNED INT),
3694f_charbig = CONCAT('===',f_char1,'===');
3695Warnings:
3696Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
3697CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
3698BEGIN
3699SET new.f_int1 = new.f_int1 + @max_row,
3700new.f_int2 = new.f_int2 - @max_row,
3701new.f_charbig = '####updated per update trigger####';
3702END|
3703UPDATE t1
3704SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
3705f_charbig = '####updated per update statement itself####';
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.
3708
3709# check trigger-10 success: 	1
3710DROP TRIGGER trg_2;
3711UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3712f_int2 = CAST(f_char1 AS SIGNED INT),
3713f_charbig = CONCAT('===',f_char1,'===');
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.
3716CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
3717BEGIN
3718SET new.f_int1 = @my_max1 + @counter,
3719new.f_int2 = @my_min2 - @counter,
3720new.f_charbig = '####updated per insert trigger####';
3721SET @counter = @counter + 1;
3722END|
3723SET @counter = 1;
3724SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
3725Warnings:
3726Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
3727INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3728SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
3729CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
3730WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
3731ORDER BY f_int1;
3732DROP TRIGGER trg_3;
3733
3734# check trigger-11 success: 	1
3735Warnings:
3736Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
3737DELETE FROM t1
3738WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
3739AND f_int2 <> CAST(f_char1 AS SIGNED INT)
3740AND f_charbig = '####updated per insert trigger####';
3741CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
3742BEGIN
3743SET new.f_int1 = @my_max1 + @counter,
3744new.f_int2 = @my_min2 - @counter,
3745new.f_charbig = '####updated per insert trigger####';
3746SET @counter = @counter + 1;
3747END|
3748SET @counter = 1;
3749SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
3750Warnings:
3751Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
3752INSERT INTO t1 (f_char1, f_char2, f_charbig)
3753SELECT CAST(f_int1 AS CHAR),
3754CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
3755WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
3756ORDER BY f_int1;
3757DROP TRIGGER trg_3;
3758
3759# check trigger-12 success: 	1
3760Warnings:
3761Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
3762DELETE FROM t1
3763WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
3764AND f_int2 <> CAST(f_char1 AS SIGNED INT)
3765AND f_charbig = '####updated per insert trigger####';
3766ANALYZE  TABLE t1;
3767Table	Op	Msg_type	Msg_text
3768test.t1	analyze	status	OK
3769test.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.
3770CHECK    TABLE t1 EXTENDED;
3771Table	Op	Msg_type	Msg_text
3772test.t1	check	status	OK
3773test.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.
3774CHECKSUM TABLE t1 EXTENDED;
3775Table	Checksum
3776test.t1	<some_value>
3777OPTIMIZE TABLE t1;
3778Table	Op	Msg_type	Msg_text
3779test.t1	optimize	status	OK
3780test.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.
3781# check layout success:    1
3782REPAIR   TABLE t1 EXTENDED;
3783Table	Op	Msg_type	Msg_text
3784test.t1	repair	status	OK
3785test.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.
3786# check layout success:    1
3787TRUNCATE t1;
3788Warnings:
3789Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
3790
3791# check TRUNCATE success: 	1
3792# check layout success:    1
3793# End usability test (inc/partition_check.inc)
3794DROP TABLE t1;
3795CREATE TABLE t1 (
3796f_int1 INTEGER,
3797f_int2 INTEGER,
3798f_char1 CHAR(20),
3799f_char2 CHAR(20),
3800f_charbig VARCHAR(1000)
3801
3802)
3803PARTITION BY LIST(ABS(MOD(f_int1,2)))
3804SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
3805(PARTITION part1 VALUES IN (0)
3806DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
3807INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
3808PARTITION part2 VALUES IN (1)
3809DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
3810INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
3811PARTITION part3 VALUES IN (NULL)
3812DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
3813INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir');
3814Warnings:
3815Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
3816INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
3817SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
3818Warnings:
3819Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
3820# Start usability test (inc/partition_check.inc)
3821create_command
3822SHOW CREATE TABLE t1;
3823Table	Create Table
3824t1	CREATE TABLE `t1` (
3825  `f_int1` int(11) DEFAULT NULL,
3826  `f_int2` int(11) DEFAULT NULL,
3827  `f_char1` char(20) DEFAULT NULL,
3828  `f_char2` char(20) DEFAULT NULL,
3829  `f_charbig` varchar(1000) DEFAULT NULL
3830) ENGINE=MyISAM DEFAULT CHARSET=latin1
3831/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
3832SUBPARTITION BY KEY (f_int1)
3833SUBPARTITIONS 3
3834(PARTITION part1 VALUES IN (0) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
3835 PARTITION part2 VALUES IN (1) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
3836 PARTITION part3 VALUES IN (NULL) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM) */
3837
3838unified filelist
3839t1#P#part1#SP#part1sp0.MYD
3840t1#P#part1#SP#part1sp0.MYI
3841t1#P#part1#SP#part1sp1.MYD
3842t1#P#part1#SP#part1sp1.MYI
3843t1#P#part1#SP#part1sp2.MYD
3844t1#P#part1#SP#part1sp2.MYI
3845t1#P#part2#SP#part2sp0.MYD
3846t1#P#part2#SP#part2sp0.MYI
3847t1#P#part2#SP#part2sp1.MYD
3848t1#P#part2#SP#part2sp1.MYI
3849t1#P#part2#SP#part2sp2.MYD
3850t1#P#part2#SP#part2sp2.MYI
3851t1#P#part3#SP#part3sp0.MYD
3852t1#P#part3#SP#part3sp0.MYI
3853t1#P#part3#SP#part3sp1.MYD
3854t1#P#part3#SP#part3sp1.MYI
3855t1#P#part3#SP#part3sp2.MYD
3856t1#P#part3#SP#part3sp2.MYI
3857t1.frm
3858t1.par
3859t1#P#part1#SP#part1sp0.MYD
3860t1#P#part1#SP#part1sp1.MYD
3861t1#P#part1#SP#part1sp2.MYD
3862t1#P#part2#SP#part2sp0.MYD
3863t1#P#part2#SP#part2sp1.MYD
3864t1#P#part2#SP#part2sp2.MYD
3865t1#P#part3#SP#part3sp0.MYD
3866t1#P#part3#SP#part3sp1.MYD
3867t1#P#part3#SP#part3sp2.MYD
3868t1#P#part1#SP#part1sp0.MYI
3869t1#P#part1#SP#part1sp1.MYI
3870t1#P#part1#SP#part1sp2.MYI
3871t1#P#part2#SP#part2sp0.MYI
3872t1#P#part2#SP#part2sp1.MYI
3873t1#P#part2#SP#part2sp2.MYI
3874t1#P#part3#SP#part3sp0.MYI
3875t1#P#part3#SP#part3sp1.MYI
3876t1#P#part3#SP#part3sp2.MYI
3877
3878# check prerequisites-1 success:    1
3879# check COUNT(*) success:    1
3880# check MIN/MAX(f_int1) success:    1
3881# check MIN/MAX(f_int2) success:    1
3882INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3883SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
3884CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
3885WHERE f_int1 IN (2,3);
3886# check prerequisites-3 success:    1
3887DELETE FROM t1 WHERE f_charbig = 'delete me';
3888# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
3889# check read via f_int1 success: 1
3890# check read via f_int2 success: 1
3891
3892# check multiple-1 success: 	1
3893DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
3894
3895# check multiple-2 success: 	1
3896INSERT INTO t1 SELECT * FROM t0_template
3897WHERE MOD(f_int1,3) = 0;
3898
3899# check multiple-3 success: 	1
3900UPDATE t1 SET f_int1 = f_int1 + @max_row
3901WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
3902AND @max_row_div2 + @max_row_div4;
3903
3904# check multiple-4 success: 	1
3905DELETE FROM t1
3906WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
3907AND @max_row_div2 + @max_row_div4 + @max_row;
3908
3909# check multiple-5 success: 	1
3910SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
3911INSERT INTO t1
3912SET f_int1 = @cur_value , f_int2 = @cur_value,
3913f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
3914f_charbig = '#SINGLE#';
3915
3916# check single-1 success: 	1
3917SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
3918INSERT INTO t1
3919SET f_int1 = @cur_value , f_int2 = @cur_value,
3920f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
3921f_charbig = '#SINGLE#';
3922
3923# check single-2 success: 	1
3924SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
3925SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
3926UPDATE t1 SET f_int1 = @cur_value2
3927WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
3928
3929# check single-3 success: 	1
3930SET @cur_value1= -1;
3931SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
3932UPDATE t1 SET f_int1 = @cur_value1
3933WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
3934
3935# check single-4 success: 	1
3936SELECT MAX(f_int1) INTO @cur_value FROM t1;
3937DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
3938
3939# check single-5 success: 	1
3940DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
3941
3942# check single-6 success: 	1
3943INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
3944
3945# check single-7 success: 	1
3946DELETE FROM t1 WHERE f_charbig = '#2147483647##';
3947DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
3948INSERT t1 SET f_int1 = 0 , f_int2 = 0,
3949f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
3950f_charbig = '#NULL#';
3951INSERT INTO t1
3952SET f_int1 = NULL , f_int2 = -@max_row,
3953f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
3954f_charbig = '#NULL#';
3955# check null success:    1
3956
3957# check null-1 success: 	1
3958UPDATE t1 SET f_int1 = -@max_row
3959WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
3960AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
3961
3962# check null-2 success: 	1
3963UPDATE t1 SET f_int1 = NULL
3964WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
3965AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
3966
3967# check null-3 success: 	1
3968DELETE FROM t1
3969WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
3970AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
3971
3972# check null-4 success: 	1
3973DELETE FROM t1
3974WHERE f_int1 = 0 AND f_int2 = 0
3975AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
3976AND f_charbig = '#NULL#';
3977SET AUTOCOMMIT= 0;
3978INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3979SELECT f_int1, f_int1, '', '', 'was inserted'
3980FROM t0_template source_tab
3981WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
3982
3983# check transactions-1 success: 	1
3984COMMIT WORK;
3985
3986# check transactions-2 success: 	1
3987ROLLBACK WORK;
3988
3989# check transactions-3 success: 	1
3990DELETE FROM t1 WHERE f_charbig = 'was inserted';
3991COMMIT WORK;
3992ROLLBACK WORK;
3993
3994# check transactions-4 success: 	1
3995INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3996SELECT f_int1, f_int1, '', '', 'was inserted'
3997FROM t0_template source_tab
3998WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
3999
4000# check transactions-5 success: 	1
4001ROLLBACK WORK;
4002Warnings:
4003Warning	1196	Some non-transactional changed tables couldn't be rolled back
4004
4005# check transactions-6 success: 	1
4006# INFO: Storage engine used for t1 seems to be not transactional.
4007COMMIT;
4008
4009# check transactions-7 success: 	1
4010DELETE FROM t1 WHERE f_charbig = 'was inserted';
4011COMMIT WORK;
4012SET @@session.sql_mode = 'traditional';
4013Warnings:
4014Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
4015SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
4016INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4017SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
4018'', '', 'was inserted' FROM t0_template
4019WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
4020ERROR 22012: Division by 0
4021COMMIT;
4022
4023# check transactions-8 success: 	1
4024# INFO: Storage engine used for t1 seems to be unable to revert
4025#       changes made by the failing statement.
4026SET @@session.sql_mode = '';
4027Warnings:
4028Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
4029SET AUTOCOMMIT= 1;
4030DELETE FROM t1 WHERE f_charbig = 'was inserted';
4031COMMIT WORK;
4032UPDATE t1 SET f_charbig = REPEAT('b', 1000);
4033
4034# check special-1 success: 	1
4035UPDATE t1 SET f_charbig = '';
4036
4037# check special-2 success: 	1
4038UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
4039INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
4040SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
4041WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4042INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4043SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4044'just inserted' FROM t0_template
4045WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4046CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
4047BEGIN
4048UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4049f_charbig = 'updated by trigger'
4050      WHERE f_int1 = new.f_int1;
4051END|
4052INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4053SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
4054WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4055
4056# check trigger-1 success: 	1
4057DROP TRIGGER trg_1;
4058UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4059f_int2 = CAST(f_char1 AS SIGNED INT),
4060f_charbig = 'just inserted'
4061   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4062DELETE FROM t0_aux
4063WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4064INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4065SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4066'just inserted' FROM t0_template
4067WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4068CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
4069BEGIN
4070UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4071f_charbig = 'updated by trigger'
4072      WHERE f_int1 = new.f_int1;
4073END|
4074INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4075SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
4076WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4077
4078# check trigger-2 success: 	1
4079DROP TRIGGER trg_1;
4080UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4081f_int2 = CAST(f_char1 AS SIGNED INT),
4082f_charbig = 'just inserted'
4083   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4084DELETE FROM t0_aux
4085WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4086INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4087SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4088'just inserted' FROM t0_template
4089WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4090CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
4091BEGIN
4092UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4093f_charbig = 'updated by trigger'
4094      WHERE f_int1 = new.f_int1;
4095END|
4096UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
4097WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4098
4099# check trigger-3 success: 	1
4100DROP TRIGGER trg_1;
4101UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4102f_int2 = CAST(f_char1 AS SIGNED INT),
4103f_charbig = 'just inserted'
4104   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4105DELETE FROM t0_aux
4106WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4107INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4108SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4109'just inserted' FROM t0_template
4110WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4111CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
4112BEGIN
4113UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4114f_charbig = 'updated by trigger'
4115      WHERE f_int1 = - old.f_int1;
4116END|
4117UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
4118WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4119
4120# check trigger-4 success: 	1
4121DROP TRIGGER trg_1;
4122UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4123f_int2 = CAST(f_char1 AS SIGNED INT),
4124f_charbig = 'just inserted'
4125   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4126DELETE FROM t0_aux
4127WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4128INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4129SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4130'just inserted' FROM t0_template
4131WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4132CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
4133BEGIN
4134UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4135f_charbig = 'updated by trigger'
4136      WHERE f_int1 = new.f_int1;
4137END|
4138UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
4139WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4140
4141# check trigger-5 success: 	1
4142DROP TRIGGER trg_1;
4143UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4144f_int2 = CAST(f_char1 AS SIGNED INT),
4145f_charbig = 'just inserted'
4146   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4147DELETE FROM t0_aux
4148WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4149INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4150SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4151'just inserted' FROM t0_template
4152WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4153CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
4154BEGIN
4155UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4156f_charbig = 'updated by trigger'
4157      WHERE f_int1 = - old.f_int1;
4158END|
4159UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
4160WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4161
4162# check trigger-6 success: 	1
4163DROP TRIGGER trg_1;
4164UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4165f_int2 = CAST(f_char1 AS SIGNED INT),
4166f_charbig = 'just inserted'
4167   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4168DELETE FROM t0_aux
4169WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4170INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4171SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4172'just inserted' FROM t0_template
4173WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4174CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
4175BEGIN
4176UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4177f_charbig = 'updated by trigger'
4178      WHERE f_int1 = - old.f_int1;
4179END|
4180DELETE FROM t0_aux
4181WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4182
4183# check trigger-7 success: 	1
4184DROP TRIGGER trg_1;
4185UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4186f_int2 = CAST(f_char1 AS SIGNED INT),
4187f_charbig = 'just inserted'
4188   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4189DELETE FROM t0_aux
4190WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4191INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4192SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4193'just inserted' FROM t0_template
4194WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4195CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
4196BEGIN
4197UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4198f_charbig = 'updated by trigger'
4199      WHERE f_int1 = - old.f_int1;
4200END|
4201DELETE FROM t0_aux
4202WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4203
4204# check trigger-8 success: 	1
4205DROP TRIGGER trg_1;
4206UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4207f_int2 = CAST(f_char1 AS SIGNED INT),
4208f_charbig = 'just inserted'
4209   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4210DELETE FROM t0_aux
4211WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4212DELETE FROM t1
4213WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4214CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
4215BEGIN
4216SET new.f_int1 = old.f_int1 + @max_row,
4217new.f_int2 = old.f_int2 - @max_row,
4218new.f_charbig = '####updated per update trigger####';
4219END|
4220UPDATE t1
4221SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
4222f_charbig = '####updated per update statement itself####';
4223Warnings:
4224Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
4225
4226# check trigger-9 success: 	1
4227DROP TRIGGER trg_2;
4228UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4229f_int2 = CAST(f_char1 AS SIGNED INT),
4230f_charbig = CONCAT('===',f_char1,'===');
4231Warnings:
4232Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
4233CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
4234BEGIN
4235SET new.f_int1 = new.f_int1 + @max_row,
4236new.f_int2 = new.f_int2 - @max_row,
4237new.f_charbig = '####updated per update trigger####';
4238END|
4239UPDATE t1
4240SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
4241f_charbig = '####updated per update statement itself####';
4242Warnings:
4243Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
4244
4245# check trigger-10 success: 	1
4246DROP TRIGGER trg_2;
4247UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4248f_int2 = CAST(f_char1 AS SIGNED INT),
4249f_charbig = CONCAT('===',f_char1,'===');
4250Warnings:
4251Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
4252CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
4253BEGIN
4254SET new.f_int1 = @my_max1 + @counter,
4255new.f_int2 = @my_min2 - @counter,
4256new.f_charbig = '####updated per insert trigger####';
4257SET @counter = @counter + 1;
4258END|
4259SET @counter = 1;
4260SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
4261Warnings:
4262Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
4263INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4264SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
4265CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
4266WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
4267ORDER BY f_int1;
4268DROP TRIGGER trg_3;
4269
4270# check trigger-11 success: 	1
4271Warnings:
4272Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
4273DELETE FROM t1
4274WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
4275AND f_int2 <> CAST(f_char1 AS SIGNED INT)
4276AND f_charbig = '####updated per insert trigger####';
4277CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
4278BEGIN
4279SET new.f_int1 = @my_max1 + @counter,
4280new.f_int2 = @my_min2 - @counter,
4281new.f_charbig = '####updated per insert trigger####';
4282SET @counter = @counter + 1;
4283END|
4284SET @counter = 1;
4285SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
4286Warnings:
4287Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
4288INSERT INTO t1 (f_char1, f_char2, f_charbig)
4289SELECT CAST(f_int1 AS CHAR),
4290CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
4291WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
4292ORDER BY f_int1;
4293DROP TRIGGER trg_3;
4294
4295# check trigger-12 success: 	1
4296Warnings:
4297Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
4298DELETE FROM t1
4299WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
4300AND f_int2 <> CAST(f_char1 AS SIGNED INT)
4301AND f_charbig = '####updated per insert trigger####';
4302ANALYZE  TABLE t1;
4303Table	Op	Msg_type	Msg_text
4304test.t1	analyze	status	OK
4305test.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.
4306CHECK    TABLE t1 EXTENDED;
4307Table	Op	Msg_type	Msg_text
4308test.t1	check	status	OK
4309test.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.
4310CHECKSUM TABLE t1 EXTENDED;
4311Table	Checksum
4312test.t1	<some_value>
4313OPTIMIZE TABLE t1;
4314Table	Op	Msg_type	Msg_text
4315test.t1	optimize	status	OK
4316test.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.
4317# check layout success:    1
4318REPAIR   TABLE t1 EXTENDED;
4319Table	Op	Msg_type	Msg_text
4320test.t1	repair	status	OK
4321test.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.
4322# check layout success:    1
4323TRUNCATE t1;
4324Warnings:
4325Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
4326
4327# check TRUNCATE success: 	1
4328# check layout success:    1
4329# End usability test (inc/partition_check.inc)
4330DROP TABLE t1;
4331#  1.2 The partitioning function contains two columns.
4332DROP TABLE IF EXISTS t1;
4333CREATE TABLE t1 (
4334f_int1 INTEGER,
4335f_int2 INTEGER,
4336f_char1 CHAR(20),
4337f_char2 CHAR(20),
4338f_charbig VARCHAR(1000)
4339
4340)
4341PARTITION BY HASH(f_int1 + f_int2) PARTITIONS 2
4342(PARTITION p1
4343DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
4344INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
4345PARTITION p2
4346DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
4347INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir');
4348Warnings:
4349Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
4350INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
4351SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
4352Warnings:
4353Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
4354# Start usability test (inc/partition_check.inc)
4355create_command
4356SHOW CREATE TABLE t1;
4357Table	Create Table
4358t1	CREATE TABLE `t1` (
4359  `f_int1` int(11) DEFAULT NULL,
4360  `f_int2` int(11) DEFAULT NULL,
4361  `f_char1` char(20) DEFAULT NULL,
4362  `f_char2` char(20) DEFAULT NULL,
4363  `f_charbig` varchar(1000) DEFAULT NULL
4364) ENGINE=MyISAM DEFAULT CHARSET=latin1
4365/*!50100 PARTITION BY HASH (f_int1 + f_int2)
4366(PARTITION p1 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
4367 PARTITION p2 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM) */
4368
4369unified filelist
4370t1#P#p1.MYD
4371t1#P#p1.MYI
4372t1#P#p2.MYD
4373t1#P#p2.MYI
4374t1.frm
4375t1.par
4376t1#P#p1.MYD
4377t1#P#p2.MYD
4378t1#P#p1.MYI
4379t1#P#p2.MYI
4380
4381# check prerequisites-1 success:    1
4382# check COUNT(*) success:    1
4383# check MIN/MAX(f_int1) success:    1
4384# check MIN/MAX(f_int2) success:    1
4385INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4386SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
4387CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
4388WHERE f_int1 IN (2,3);
4389# check prerequisites-3 success:    1
4390DELETE FROM t1 WHERE f_charbig = 'delete me';
4391# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
4392# check read via f_int1 success: 1
4393# check read via f_int2 success: 1
4394
4395# check multiple-1 success: 	1
4396DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
4397
4398# check multiple-2 success: 	1
4399INSERT INTO t1 SELECT * FROM t0_template
4400WHERE MOD(f_int1,3) = 0;
4401
4402# check multiple-3 success: 	1
4403UPDATE t1 SET f_int1 = f_int1 + @max_row
4404WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
4405AND @max_row_div2 + @max_row_div4;
4406
4407# check multiple-4 success: 	1
4408DELETE FROM t1
4409WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
4410AND @max_row_div2 + @max_row_div4 + @max_row;
4411
4412# check multiple-5 success: 	1
4413SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
4414INSERT INTO t1
4415SET f_int1 = @cur_value , f_int2 = @cur_value,
4416f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
4417f_charbig = '#SINGLE#';
4418
4419# check single-1 success: 	1
4420SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
4421INSERT INTO t1
4422SET f_int1 = @cur_value , f_int2 = @cur_value,
4423f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
4424f_charbig = '#SINGLE#';
4425
4426# check single-2 success: 	1
4427SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
4428SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
4429UPDATE t1 SET f_int1 = @cur_value2
4430WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
4431
4432# check single-3 success: 	1
4433SET @cur_value1= -1;
4434SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
4435UPDATE t1 SET f_int1 = @cur_value1
4436WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
4437
4438# check single-4 success: 	1
4439SELECT MAX(f_int1) INTO @cur_value FROM t1;
4440DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
4441
4442# check single-5 success: 	1
4443DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
4444
4445# check single-6 success: 	1
4446INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
4447
4448# check single-7 success: 	1
4449DELETE FROM t1 WHERE f_charbig = '#2147483647##';
4450DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
4451INSERT t1 SET f_int1 = 0 , f_int2 = 0,
4452f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
4453f_charbig = '#NULL#';
4454INSERT INTO t1
4455SET f_int1 = NULL , f_int2 = -@max_row,
4456f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
4457f_charbig = '#NULL#';
4458# check null success:    1
4459
4460# check null-1 success: 	1
4461UPDATE t1 SET f_int1 = -@max_row
4462WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
4463AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
4464
4465# check null-2 success: 	1
4466UPDATE t1 SET f_int1 = NULL
4467WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
4468AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
4469
4470# check null-3 success: 	1
4471DELETE FROM t1
4472WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
4473AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
4474
4475# check null-4 success: 	1
4476DELETE FROM t1
4477WHERE f_int1 = 0 AND f_int2 = 0
4478AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
4479AND f_charbig = '#NULL#';
4480SET AUTOCOMMIT= 0;
4481INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4482SELECT f_int1, f_int1, '', '', 'was inserted'
4483FROM t0_template source_tab
4484WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
4485
4486# check transactions-1 success: 	1
4487COMMIT WORK;
4488
4489# check transactions-2 success: 	1
4490ROLLBACK WORK;
4491
4492# check transactions-3 success: 	1
4493DELETE FROM t1 WHERE f_charbig = 'was inserted';
4494COMMIT WORK;
4495ROLLBACK WORK;
4496
4497# check transactions-4 success: 	1
4498INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4499SELECT f_int1, f_int1, '', '', 'was inserted'
4500FROM t0_template source_tab
4501WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
4502
4503# check transactions-5 success: 	1
4504ROLLBACK WORK;
4505Warnings:
4506Warning	1196	Some non-transactional changed tables couldn't be rolled back
4507
4508# check transactions-6 success: 	1
4509# INFO: Storage engine used for t1 seems to be not transactional.
4510COMMIT;
4511
4512# check transactions-7 success: 	1
4513DELETE FROM t1 WHERE f_charbig = 'was inserted';
4514COMMIT WORK;
4515SET @@session.sql_mode = 'traditional';
4516Warnings:
4517Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
4518SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
4519INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4520SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
4521'', '', 'was inserted' FROM t0_template
4522WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
4523ERROR 22012: Division by 0
4524COMMIT;
4525
4526# check transactions-8 success: 	1
4527# INFO: Storage engine used for t1 seems to be unable to revert
4528#       changes made by the failing statement.
4529SET @@session.sql_mode = '';
4530Warnings:
4531Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
4532SET AUTOCOMMIT= 1;
4533DELETE FROM t1 WHERE f_charbig = 'was inserted';
4534COMMIT WORK;
4535UPDATE t1 SET f_charbig = REPEAT('b', 1000);
4536
4537# check special-1 success: 	1
4538UPDATE t1 SET f_charbig = '';
4539
4540# check special-2 success: 	1
4541UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
4542INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
4543SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
4544WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4545INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4546SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4547'just inserted' FROM t0_template
4548WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4549CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
4550BEGIN
4551UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4552f_charbig = 'updated by trigger'
4553      WHERE f_int1 = new.f_int1;
4554END|
4555INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4556SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
4557WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4558
4559# check trigger-1 success: 	1
4560DROP TRIGGER trg_1;
4561UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4562f_int2 = CAST(f_char1 AS SIGNED INT),
4563f_charbig = 'just inserted'
4564   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4565DELETE FROM t0_aux
4566WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4567INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4568SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4569'just inserted' FROM t0_template
4570WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4571CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
4572BEGIN
4573UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4574f_charbig = 'updated by trigger'
4575      WHERE f_int1 = new.f_int1;
4576END|
4577INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4578SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
4579WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4580
4581# check trigger-2 success: 	1
4582DROP TRIGGER trg_1;
4583UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4584f_int2 = CAST(f_char1 AS SIGNED INT),
4585f_charbig = 'just inserted'
4586   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4587DELETE FROM t0_aux
4588WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4589INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4590SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4591'just inserted' FROM t0_template
4592WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4593CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
4594BEGIN
4595UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4596f_charbig = 'updated by trigger'
4597      WHERE f_int1 = new.f_int1;
4598END|
4599UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
4600WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4601
4602# check trigger-3 success: 	1
4603DROP TRIGGER trg_1;
4604UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4605f_int2 = CAST(f_char1 AS SIGNED INT),
4606f_charbig = 'just inserted'
4607   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4608DELETE FROM t0_aux
4609WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4610INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4611SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4612'just inserted' FROM t0_template
4613WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4614CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
4615BEGIN
4616UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4617f_charbig = 'updated by trigger'
4618      WHERE f_int1 = - old.f_int1;
4619END|
4620UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
4621WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4622
4623# check trigger-4 success: 	1
4624DROP TRIGGER trg_1;
4625UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4626f_int2 = CAST(f_char1 AS SIGNED INT),
4627f_charbig = 'just inserted'
4628   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4629DELETE FROM t0_aux
4630WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4631INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4632SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4633'just inserted' FROM t0_template
4634WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4635CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
4636BEGIN
4637UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4638f_charbig = 'updated by trigger'
4639      WHERE f_int1 = new.f_int1;
4640END|
4641UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
4642WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4643
4644# check trigger-5 success: 	1
4645DROP TRIGGER trg_1;
4646UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4647f_int2 = CAST(f_char1 AS SIGNED INT),
4648f_charbig = 'just inserted'
4649   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4650DELETE FROM t0_aux
4651WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4652INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4653SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4654'just inserted' FROM t0_template
4655WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4656CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
4657BEGIN
4658UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4659f_charbig = 'updated by trigger'
4660      WHERE f_int1 = - old.f_int1;
4661END|
4662UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
4663WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4664
4665# check trigger-6 success: 	1
4666DROP TRIGGER trg_1;
4667UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4668f_int2 = CAST(f_char1 AS SIGNED INT),
4669f_charbig = 'just inserted'
4670   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4671DELETE FROM t0_aux
4672WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4673INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4674SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4675'just inserted' FROM t0_template
4676WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4677CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
4678BEGIN
4679UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4680f_charbig = 'updated by trigger'
4681      WHERE f_int1 = - old.f_int1;
4682END|
4683DELETE FROM t0_aux
4684WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4685
4686# check trigger-7 success: 	1
4687DROP TRIGGER trg_1;
4688UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4689f_int2 = CAST(f_char1 AS SIGNED INT),
4690f_charbig = 'just inserted'
4691   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4692DELETE FROM t0_aux
4693WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4694INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4695SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4696'just inserted' FROM t0_template
4697WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4698CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
4699BEGIN
4700UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4701f_charbig = 'updated by trigger'
4702      WHERE f_int1 = - old.f_int1;
4703END|
4704DELETE FROM t0_aux
4705WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4706
4707# check trigger-8 success: 	1
4708DROP TRIGGER trg_1;
4709UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4710f_int2 = CAST(f_char1 AS SIGNED INT),
4711f_charbig = 'just inserted'
4712   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4713DELETE FROM t0_aux
4714WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4715DELETE FROM t1
4716WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4717CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
4718BEGIN
4719SET new.f_int1 = old.f_int1 + @max_row,
4720new.f_int2 = old.f_int2 - @max_row,
4721new.f_charbig = '####updated per update trigger####';
4722END|
4723UPDATE t1
4724SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
4725f_charbig = '####updated per update statement itself####';
4726Warnings:
4727Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
4728
4729# check trigger-9 success: 	1
4730DROP TRIGGER trg_2;
4731UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4732f_int2 = CAST(f_char1 AS SIGNED INT),
4733f_charbig = CONCAT('===',f_char1,'===');
4734Warnings:
4735Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
4736CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
4737BEGIN
4738SET new.f_int1 = new.f_int1 + @max_row,
4739new.f_int2 = new.f_int2 - @max_row,
4740new.f_charbig = '####updated per update trigger####';
4741END|
4742UPDATE t1
4743SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
4744f_charbig = '####updated per update statement itself####';
4745Warnings:
4746Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
4747
4748# check trigger-10 success: 	1
4749DROP TRIGGER trg_2;
4750UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4751f_int2 = CAST(f_char1 AS SIGNED INT),
4752f_charbig = CONCAT('===',f_char1,'===');
4753Warnings:
4754Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
4755CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
4756BEGIN
4757SET new.f_int1 = @my_max1 + @counter,
4758new.f_int2 = @my_min2 - @counter,
4759new.f_charbig = '####updated per insert trigger####';
4760SET @counter = @counter + 1;
4761END|
4762SET @counter = 1;
4763SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
4764Warnings:
4765Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
4766INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4767SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
4768CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
4769WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
4770ORDER BY f_int1;
4771DROP TRIGGER trg_3;
4772
4773# check trigger-11 success: 	1
4774Warnings:
4775Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
4776DELETE FROM t1
4777WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
4778AND f_int2 <> CAST(f_char1 AS SIGNED INT)
4779AND f_charbig = '####updated per insert trigger####';
4780CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
4781BEGIN
4782SET new.f_int1 = @my_max1 + @counter,
4783new.f_int2 = @my_min2 - @counter,
4784new.f_charbig = '####updated per insert trigger####';
4785SET @counter = @counter + 1;
4786END|
4787SET @counter = 1;
4788SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
4789Warnings:
4790Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
4791INSERT INTO t1 (f_char1, f_char2, f_charbig)
4792SELECT CAST(f_int1 AS CHAR),
4793CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
4794WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
4795ORDER BY f_int1;
4796DROP TRIGGER trg_3;
4797
4798# check trigger-12 success: 	1
4799Warnings:
4800Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
4801DELETE FROM t1
4802WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
4803AND f_int2 <> CAST(f_char1 AS SIGNED INT)
4804AND f_charbig = '####updated per insert trigger####';
4805ANALYZE  TABLE t1;
4806Table	Op	Msg_type	Msg_text
4807test.t1	analyze	status	OK
4808test.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.
4809CHECK    TABLE t1 EXTENDED;
4810Table	Op	Msg_type	Msg_text
4811test.t1	check	status	OK
4812test.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.
4813CHECKSUM TABLE t1 EXTENDED;
4814Table	Checksum
4815test.t1	<some_value>
4816OPTIMIZE TABLE t1;
4817Table	Op	Msg_type	Msg_text
4818test.t1	optimize	status	OK
4819test.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.
4820# check layout success:    1
4821REPAIR   TABLE t1 EXTENDED;
4822Table	Op	Msg_type	Msg_text
4823test.t1	repair	status	OK
4824test.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.
4825# check layout success:    1
4826TRUNCATE t1;
4827Warnings:
4828Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
4829
4830# check TRUNCATE success: 	1
4831# check layout success:    1
4832# End usability test (inc/partition_check.inc)
4833DROP TABLE t1;
4834CREATE TABLE t1 (
4835f_int1 INTEGER,
4836f_int2 INTEGER,
4837f_char1 CHAR(20),
4838f_char2 CHAR(20),
4839f_charbig VARCHAR(1000)
4840
4841)
4842PARTITION BY KEY(f_int1,f_int2) PARTITIONS 5
4843(PARTITION p1
4844DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
4845INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
4846PARTITION p2
4847DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
4848INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
4849PARTITION p3
4850DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
4851INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
4852PARTITION p4
4853DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
4854INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
4855PARTITION p5
4856DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
4857INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir');
4858Warnings:
4859Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
4860INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
4861SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
4862Warnings:
4863Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
4864# Start usability test (inc/partition_check.inc)
4865create_command
4866SHOW CREATE TABLE t1;
4867Table	Create Table
4868t1	CREATE TABLE `t1` (
4869  `f_int1` int(11) DEFAULT NULL,
4870  `f_int2` int(11) DEFAULT NULL,
4871  `f_char1` char(20) DEFAULT NULL,
4872  `f_char2` char(20) DEFAULT NULL,
4873  `f_charbig` varchar(1000) DEFAULT NULL
4874) ENGINE=MyISAM DEFAULT CHARSET=latin1
4875/*!50100 PARTITION BY KEY (f_int1,f_int2)
4876(PARTITION p1 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
4877 PARTITION p2 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
4878 PARTITION p3 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
4879 PARTITION p4 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
4880 PARTITION p5 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM) */
4881
4882unified filelist
4883t1#P#p1.MYD
4884t1#P#p1.MYI
4885t1#P#p2.MYD
4886t1#P#p2.MYI
4887t1#P#p3.MYD
4888t1#P#p3.MYI
4889t1#P#p4.MYD
4890t1#P#p4.MYI
4891t1#P#p5.MYD
4892t1#P#p5.MYI
4893t1.frm
4894t1.par
4895t1#P#p1.MYD
4896t1#P#p2.MYD
4897t1#P#p3.MYD
4898t1#P#p4.MYD
4899t1#P#p5.MYD
4900t1#P#p1.MYI
4901t1#P#p2.MYI
4902t1#P#p3.MYI
4903t1#P#p4.MYI
4904t1#P#p5.MYI
4905
4906# check prerequisites-1 success:    1
4907# check COUNT(*) success:    1
4908# check MIN/MAX(f_int1) success:    1
4909# check MIN/MAX(f_int2) success:    1
4910INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4911SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
4912CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
4913WHERE f_int1 IN (2,3);
4914# check prerequisites-3 success:    1
4915DELETE FROM t1 WHERE f_charbig = 'delete me';
4916# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
4917# check read via f_int1 success: 1
4918# check read via f_int2 success: 1
4919
4920# check multiple-1 success: 	1
4921DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
4922
4923# check multiple-2 success: 	1
4924INSERT INTO t1 SELECT * FROM t0_template
4925WHERE MOD(f_int1,3) = 0;
4926
4927# check multiple-3 success: 	1
4928UPDATE t1 SET f_int1 = f_int1 + @max_row
4929WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
4930AND @max_row_div2 + @max_row_div4;
4931
4932# check multiple-4 success: 	1
4933DELETE FROM t1
4934WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
4935AND @max_row_div2 + @max_row_div4 + @max_row;
4936
4937# check multiple-5 success: 	1
4938SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
4939INSERT INTO t1
4940SET f_int1 = @cur_value , f_int2 = @cur_value,
4941f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
4942f_charbig = '#SINGLE#';
4943
4944# check single-1 success: 	1
4945SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
4946INSERT INTO t1
4947SET f_int1 = @cur_value , f_int2 = @cur_value,
4948f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
4949f_charbig = '#SINGLE#';
4950
4951# check single-2 success: 	1
4952SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
4953SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
4954UPDATE t1 SET f_int1 = @cur_value2
4955WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
4956
4957# check single-3 success: 	1
4958SET @cur_value1= -1;
4959SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
4960UPDATE t1 SET f_int1 = @cur_value1
4961WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
4962
4963# check single-4 success: 	1
4964SELECT MAX(f_int1) INTO @cur_value FROM t1;
4965DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
4966
4967# check single-5 success: 	1
4968DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
4969
4970# check single-6 success: 	1
4971INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
4972
4973# check single-7 success: 	1
4974DELETE FROM t1 WHERE f_charbig = '#2147483647##';
4975DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
4976INSERT t1 SET f_int1 = 0 , f_int2 = 0,
4977f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
4978f_charbig = '#NULL#';
4979INSERT INTO t1
4980SET f_int1 = NULL , f_int2 = -@max_row,
4981f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
4982f_charbig = '#NULL#';
4983# check null success:    1
4984
4985# check null-1 success: 	1
4986UPDATE t1 SET f_int1 = -@max_row
4987WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
4988AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
4989
4990# check null-2 success: 	1
4991UPDATE t1 SET f_int1 = NULL
4992WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
4993AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
4994
4995# check null-3 success: 	1
4996DELETE FROM t1
4997WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
4998AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
4999
5000# check null-4 success: 	1
5001DELETE FROM t1
5002WHERE f_int1 = 0 AND f_int2 = 0
5003AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
5004AND f_charbig = '#NULL#';
5005SET AUTOCOMMIT= 0;
5006INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5007SELECT f_int1, f_int1, '', '', 'was inserted'
5008FROM t0_template source_tab
5009WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
5010
5011# check transactions-1 success: 	1
5012COMMIT WORK;
5013
5014# check transactions-2 success: 	1
5015ROLLBACK WORK;
5016
5017# check transactions-3 success: 	1
5018DELETE FROM t1 WHERE f_charbig = 'was inserted';
5019COMMIT WORK;
5020ROLLBACK WORK;
5021
5022# check transactions-4 success: 	1
5023INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5024SELECT f_int1, f_int1, '', '', 'was inserted'
5025FROM t0_template source_tab
5026WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
5027
5028# check transactions-5 success: 	1
5029ROLLBACK WORK;
5030Warnings:
5031Warning	1196	Some non-transactional changed tables couldn't be rolled back
5032
5033# check transactions-6 success: 	1
5034# INFO: Storage engine used for t1 seems to be not transactional.
5035COMMIT;
5036
5037# check transactions-7 success: 	1
5038DELETE FROM t1 WHERE f_charbig = 'was inserted';
5039COMMIT WORK;
5040SET @@session.sql_mode = 'traditional';
5041Warnings:
5042Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
5043SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
5044INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5045SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
5046'', '', 'was inserted' FROM t0_template
5047WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
5048ERROR 22012: Division by 0
5049COMMIT;
5050
5051# check transactions-8 success: 	1
5052# INFO: Storage engine used for t1 seems to be unable to revert
5053#       changes made by the failing statement.
5054SET @@session.sql_mode = '';
5055Warnings:
5056Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
5057SET AUTOCOMMIT= 1;
5058DELETE FROM t1 WHERE f_charbig = 'was inserted';
5059COMMIT WORK;
5060UPDATE t1 SET f_charbig = REPEAT('b', 1000);
5061
5062# check special-1 success: 	1
5063UPDATE t1 SET f_charbig = '';
5064
5065# check special-2 success: 	1
5066UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
5067INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
5068SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
5069WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5070INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5071SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5072'just inserted' FROM t0_template
5073WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5074CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
5075BEGIN
5076UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5077f_charbig = 'updated by trigger'
5078      WHERE f_int1 = new.f_int1;
5079END|
5080INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5081SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
5082WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5083
5084# check trigger-1 success: 	1
5085DROP TRIGGER trg_1;
5086UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5087f_int2 = CAST(f_char1 AS SIGNED INT),
5088f_charbig = 'just inserted'
5089   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5090DELETE FROM t0_aux
5091WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5092INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5093SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5094'just inserted' FROM t0_template
5095WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5096CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
5097BEGIN
5098UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5099f_charbig = 'updated by trigger'
5100      WHERE f_int1 = new.f_int1;
5101END|
5102INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5103SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
5104WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5105
5106# check trigger-2 success: 	1
5107DROP TRIGGER trg_1;
5108UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5109f_int2 = CAST(f_char1 AS SIGNED INT),
5110f_charbig = 'just inserted'
5111   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5112DELETE FROM t0_aux
5113WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5114INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5115SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5116'just inserted' FROM t0_template
5117WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5118CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
5119BEGIN
5120UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5121f_charbig = 'updated by trigger'
5122      WHERE f_int1 = new.f_int1;
5123END|
5124UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
5125WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5126
5127# check trigger-3 success: 	1
5128DROP TRIGGER trg_1;
5129UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5130f_int2 = CAST(f_char1 AS SIGNED INT),
5131f_charbig = 'just inserted'
5132   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5133DELETE FROM t0_aux
5134WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5135INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5136SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5137'just inserted' FROM t0_template
5138WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5139CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
5140BEGIN
5141UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5142f_charbig = 'updated by trigger'
5143      WHERE f_int1 = - old.f_int1;
5144END|
5145UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
5146WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5147
5148# check trigger-4 success: 	1
5149DROP TRIGGER trg_1;
5150UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5151f_int2 = CAST(f_char1 AS SIGNED INT),
5152f_charbig = 'just inserted'
5153   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5154DELETE FROM t0_aux
5155WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5156INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5157SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5158'just inserted' FROM t0_template
5159WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5160CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
5161BEGIN
5162UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5163f_charbig = 'updated by trigger'
5164      WHERE f_int1 = new.f_int1;
5165END|
5166UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
5167WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5168
5169# check trigger-5 success: 	1
5170DROP TRIGGER trg_1;
5171UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5172f_int2 = CAST(f_char1 AS SIGNED INT),
5173f_charbig = 'just inserted'
5174   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5175DELETE FROM t0_aux
5176WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5177INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5178SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5179'just inserted' FROM t0_template
5180WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5181CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
5182BEGIN
5183UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5184f_charbig = 'updated by trigger'
5185      WHERE f_int1 = - old.f_int1;
5186END|
5187UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
5188WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5189
5190# check trigger-6 success: 	1
5191DROP TRIGGER trg_1;
5192UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5193f_int2 = CAST(f_char1 AS SIGNED INT),
5194f_charbig = 'just inserted'
5195   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5196DELETE FROM t0_aux
5197WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5198INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5199SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5200'just inserted' FROM t0_template
5201WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5202CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
5203BEGIN
5204UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5205f_charbig = 'updated by trigger'
5206      WHERE f_int1 = - old.f_int1;
5207END|
5208DELETE FROM t0_aux
5209WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5210
5211# check trigger-7 success: 	1
5212DROP TRIGGER trg_1;
5213UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5214f_int2 = CAST(f_char1 AS SIGNED INT),
5215f_charbig = 'just inserted'
5216   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5217DELETE FROM t0_aux
5218WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5219INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5220SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5221'just inserted' FROM t0_template
5222WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5223CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
5224BEGIN
5225UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5226f_charbig = 'updated by trigger'
5227      WHERE f_int1 = - old.f_int1;
5228END|
5229DELETE FROM t0_aux
5230WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5231
5232# check trigger-8 success: 	1
5233DROP TRIGGER trg_1;
5234UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5235f_int2 = CAST(f_char1 AS SIGNED INT),
5236f_charbig = 'just inserted'
5237   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5238DELETE FROM t0_aux
5239WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5240DELETE FROM t1
5241WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5242CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
5243BEGIN
5244SET new.f_int1 = old.f_int1 + @max_row,
5245new.f_int2 = old.f_int2 - @max_row,
5246new.f_charbig = '####updated per update trigger####';
5247END|
5248UPDATE t1
5249SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
5250f_charbig = '####updated per update statement itself####';
5251Warnings:
5252Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
5253
5254# check trigger-9 success: 	1
5255DROP TRIGGER trg_2;
5256UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5257f_int2 = CAST(f_char1 AS SIGNED INT),
5258f_charbig = CONCAT('===',f_char1,'===');
5259Warnings:
5260Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
5261CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
5262BEGIN
5263SET new.f_int1 = new.f_int1 + @max_row,
5264new.f_int2 = new.f_int2 - @max_row,
5265new.f_charbig = '####updated per update trigger####';
5266END|
5267UPDATE t1
5268SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
5269f_charbig = '####updated per update statement itself####';
5270Warnings:
5271Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
5272
5273# check trigger-10 success: 	1
5274DROP TRIGGER trg_2;
5275UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5276f_int2 = CAST(f_char1 AS SIGNED INT),
5277f_charbig = CONCAT('===',f_char1,'===');
5278Warnings:
5279Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
5280CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
5281BEGIN
5282SET new.f_int1 = @my_max1 + @counter,
5283new.f_int2 = @my_min2 - @counter,
5284new.f_charbig = '####updated per insert trigger####';
5285SET @counter = @counter + 1;
5286END|
5287SET @counter = 1;
5288SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
5289Warnings:
5290Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
5291INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5292SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
5293CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
5294WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
5295ORDER BY f_int1;
5296DROP TRIGGER trg_3;
5297
5298# check trigger-11 success: 	1
5299Warnings:
5300Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
5301DELETE FROM t1
5302WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
5303AND f_int2 <> CAST(f_char1 AS SIGNED INT)
5304AND f_charbig = '####updated per insert trigger####';
5305CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
5306BEGIN
5307SET new.f_int1 = @my_max1 + @counter,
5308new.f_int2 = @my_min2 - @counter,
5309new.f_charbig = '####updated per insert trigger####';
5310SET @counter = @counter + 1;
5311END|
5312SET @counter = 1;
5313SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
5314Warnings:
5315Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
5316INSERT INTO t1 (f_char1, f_char2, f_charbig)
5317SELECT CAST(f_int1 AS CHAR),
5318CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
5319WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
5320ORDER BY f_int1;
5321DROP TRIGGER trg_3;
5322
5323# check trigger-12 success: 	1
5324Warnings:
5325Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
5326DELETE FROM t1
5327WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
5328AND f_int2 <> CAST(f_char1 AS SIGNED INT)
5329AND f_charbig = '####updated per insert trigger####';
5330ANALYZE  TABLE t1;
5331Table	Op	Msg_type	Msg_text
5332test.t1	analyze	status	OK
5333test.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.
5334CHECK    TABLE t1 EXTENDED;
5335Table	Op	Msg_type	Msg_text
5336test.t1	check	status	OK
5337test.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.
5338CHECKSUM TABLE t1 EXTENDED;
5339Table	Checksum
5340test.t1	<some_value>
5341OPTIMIZE TABLE t1;
5342Table	Op	Msg_type	Msg_text
5343test.t1	optimize	status	OK
5344test.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.
5345# check layout success:    1
5346REPAIR   TABLE t1 EXTENDED;
5347Table	Op	Msg_type	Msg_text
5348test.t1	repair	status	OK
5349test.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.
5350# check layout success:    1
5351TRUNCATE t1;
5352Warnings:
5353Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
5354
5355# check TRUNCATE success: 	1
5356# check layout success:    1
5357# End usability test (inc/partition_check.inc)
5358DROP TABLE t1;
5359CREATE TABLE t1 (
5360f_int1 INTEGER,
5361f_int2 INTEGER,
5362f_char1 CHAR(20),
5363f_char2 CHAR(20),
5364f_charbig VARCHAR(1000)
5365
5366)
5367PARTITION BY LIST(MOD(f_int1 + f_int2,4))
5368(PARTITION part_3 VALUES IN (-3)
5369DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
5370PARTITION part_2 VALUES IN (-2)
5371DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
5372PARTITION part_1 VALUES IN (-1)
5373DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
5374PARTITION part_N VALUES IN (NULL)
5375DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
5376PARTITION part0 VALUES IN (0)
5377DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
5378PARTITION part1 VALUES IN (1)
5379DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
5380PARTITION part2 VALUES IN (2)
5381DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
5382PARTITION part3 VALUES IN (3)
5383DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir');
5384Warnings:
5385Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
5386INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
5387SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
5388Warnings:
5389Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
5390# Start usability test (inc/partition_check.inc)
5391create_command
5392SHOW CREATE TABLE t1;
5393Table	Create Table
5394t1	CREATE TABLE `t1` (
5395  `f_int1` int(11) DEFAULT NULL,
5396  `f_int2` int(11) DEFAULT NULL,
5397  `f_char1` char(20) DEFAULT NULL,
5398  `f_char2` char(20) DEFAULT NULL,
5399  `f_charbig` varchar(1000) DEFAULT NULL
5400) ENGINE=MyISAM DEFAULT CHARSET=latin1
5401/*!50100 PARTITION BY LIST (MOD(f_int1 + f_int2,4))
5402(PARTITION part_3 VALUES IN (-3) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
5403 PARTITION part_2 VALUES IN (-2) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
5404 PARTITION part_1 VALUES IN (-1) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
5405 PARTITION part_N VALUES IN (NULL) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
5406 PARTITION part0 VALUES IN (0) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
5407 PARTITION part1 VALUES IN (1) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
5408 PARTITION part2 VALUES IN (2) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
5409 PARTITION part3 VALUES IN (3) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM) */
5410
5411unified filelist
5412t1#P#part0.MYD
5413t1#P#part0.MYI
5414t1#P#part1.MYD
5415t1#P#part1.MYI
5416t1#P#part2.MYD
5417t1#P#part2.MYI
5418t1#P#part3.MYD
5419t1#P#part3.MYI
5420t1#P#part_1.MYD
5421t1#P#part_1.MYI
5422t1#P#part_2.MYD
5423t1#P#part_2.MYI
5424t1#P#part_3.MYD
5425t1#P#part_3.MYI
5426t1#P#part_N.MYD
5427t1#P#part_N.MYI
5428t1.frm
5429t1.par
5430t1#P#part0.MYD
5431t1#P#part1.MYD
5432t1#P#part2.MYD
5433t1#P#part3.MYD
5434t1#P#part_1.MYD
5435t1#P#part_2.MYD
5436t1#P#part_3.MYD
5437t1#P#part_N.MYD
5438t1#P#part0.MYI
5439t1#P#part1.MYI
5440t1#P#part2.MYI
5441t1#P#part3.MYI
5442t1#P#part_1.MYI
5443t1#P#part_2.MYI
5444t1#P#part_3.MYI
5445t1#P#part_N.MYI
5446
5447# check prerequisites-1 success:    1
5448# check COUNT(*) success:    1
5449# check MIN/MAX(f_int1) success:    1
5450# check MIN/MAX(f_int2) success:    1
5451INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5452SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
5453CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
5454WHERE f_int1 IN (2,3);
5455# check prerequisites-3 success:    1
5456DELETE FROM t1 WHERE f_charbig = 'delete me';
5457# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
5458# check read via f_int1 success: 1
5459# check read via f_int2 success: 1
5460
5461# check multiple-1 success: 	1
5462DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
5463
5464# check multiple-2 success: 	1
5465INSERT INTO t1 SELECT * FROM t0_template
5466WHERE MOD(f_int1,3) = 0;
5467
5468# check multiple-3 success: 	1
5469UPDATE t1 SET f_int1 = f_int1 + @max_row
5470WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
5471AND @max_row_div2 + @max_row_div4;
5472
5473# check multiple-4 success: 	1
5474DELETE FROM t1
5475WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
5476AND @max_row_div2 + @max_row_div4 + @max_row;
5477
5478# check multiple-5 success: 	1
5479SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
5480INSERT INTO t1
5481SET f_int1 = @cur_value , f_int2 = @cur_value,
5482f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
5483f_charbig = '#SINGLE#';
5484
5485# check single-1 success: 	1
5486SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
5487INSERT INTO t1
5488SET f_int1 = @cur_value , f_int2 = @cur_value,
5489f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
5490f_charbig = '#SINGLE#';
5491
5492# check single-2 success: 	1
5493SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
5494SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
5495UPDATE t1 SET f_int1 = @cur_value2
5496WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
5497
5498# check single-3 success: 	1
5499SET @cur_value1= -1;
5500SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
5501UPDATE t1 SET f_int1 = @cur_value1
5502WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
5503
5504# check single-4 success: 	1
5505SELECT MAX(f_int1) INTO @cur_value FROM t1;
5506DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
5507
5508# check single-5 success: 	1
5509DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
5510
5511# check single-6 success: 	1
5512INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
5513
5514# check single-7 success: 	1
5515DELETE FROM t1 WHERE f_charbig = '#2147483647##';
5516DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
5517INSERT t1 SET f_int1 = 0 , f_int2 = 0,
5518f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
5519f_charbig = '#NULL#';
5520INSERT INTO t1
5521SET f_int1 = NULL , f_int2 = -@max_row,
5522f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
5523f_charbig = '#NULL#';
5524# check null success:    1
5525
5526# check null-1 success: 	1
5527UPDATE t1 SET f_int1 = -@max_row
5528WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
5529AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
5530
5531# check null-2 success: 	1
5532UPDATE t1 SET f_int1 = NULL
5533WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
5534AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
5535
5536# check null-3 success: 	1
5537DELETE FROM t1
5538WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
5539AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
5540
5541# check null-4 success: 	1
5542DELETE FROM t1
5543WHERE f_int1 = 0 AND f_int2 = 0
5544AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
5545AND f_charbig = '#NULL#';
5546SET AUTOCOMMIT= 0;
5547INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5548SELECT f_int1, f_int1, '', '', 'was inserted'
5549FROM t0_template source_tab
5550WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
5551
5552# check transactions-1 success: 	1
5553COMMIT WORK;
5554
5555# check transactions-2 success: 	1
5556ROLLBACK WORK;
5557
5558# check transactions-3 success: 	1
5559DELETE FROM t1 WHERE f_charbig = 'was inserted';
5560COMMIT WORK;
5561ROLLBACK WORK;
5562
5563# check transactions-4 success: 	1
5564INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5565SELECT f_int1, f_int1, '', '', 'was inserted'
5566FROM t0_template source_tab
5567WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
5568
5569# check transactions-5 success: 	1
5570ROLLBACK WORK;
5571Warnings:
5572Warning	1196	Some non-transactional changed tables couldn't be rolled back
5573
5574# check transactions-6 success: 	1
5575# INFO: Storage engine used for t1 seems to be not transactional.
5576COMMIT;
5577
5578# check transactions-7 success: 	1
5579DELETE FROM t1 WHERE f_charbig = 'was inserted';
5580COMMIT WORK;
5581SET @@session.sql_mode = 'traditional';
5582Warnings:
5583Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
5584SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
5585INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5586SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
5587'', '', 'was inserted' FROM t0_template
5588WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
5589ERROR 22012: Division by 0
5590COMMIT;
5591
5592# check transactions-8 success: 	1
5593# INFO: Storage engine used for t1 seems to be unable to revert
5594#       changes made by the failing statement.
5595SET @@session.sql_mode = '';
5596Warnings:
5597Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
5598SET AUTOCOMMIT= 1;
5599DELETE FROM t1 WHERE f_charbig = 'was inserted';
5600COMMIT WORK;
5601UPDATE t1 SET f_charbig = REPEAT('b', 1000);
5602
5603# check special-1 success: 	1
5604UPDATE t1 SET f_charbig = '';
5605
5606# check special-2 success: 	1
5607UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
5608INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
5609SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
5610WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5611INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5612SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5613'just inserted' FROM t0_template
5614WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5615CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
5616BEGIN
5617UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5618f_charbig = 'updated by trigger'
5619      WHERE f_int1 = new.f_int1;
5620END|
5621INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5622SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
5623WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5624
5625# check trigger-1 success: 	1
5626DROP TRIGGER trg_1;
5627UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5628f_int2 = CAST(f_char1 AS SIGNED INT),
5629f_charbig = 'just inserted'
5630   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5631DELETE FROM t0_aux
5632WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5633INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5634SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5635'just inserted' FROM t0_template
5636WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5637CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
5638BEGIN
5639UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5640f_charbig = 'updated by trigger'
5641      WHERE f_int1 = new.f_int1;
5642END|
5643INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5644SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
5645WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5646
5647# check trigger-2 success: 	1
5648DROP TRIGGER trg_1;
5649UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5650f_int2 = CAST(f_char1 AS SIGNED INT),
5651f_charbig = 'just inserted'
5652   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5653DELETE FROM t0_aux
5654WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5655INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5656SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5657'just inserted' FROM t0_template
5658WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5659CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
5660BEGIN
5661UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5662f_charbig = 'updated by trigger'
5663      WHERE f_int1 = new.f_int1;
5664END|
5665UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
5666WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5667
5668# check trigger-3 success: 	1
5669DROP TRIGGER trg_1;
5670UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5671f_int2 = CAST(f_char1 AS SIGNED INT),
5672f_charbig = 'just inserted'
5673   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5674DELETE FROM t0_aux
5675WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5676INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5677SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5678'just inserted' FROM t0_template
5679WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5680CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
5681BEGIN
5682UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5683f_charbig = 'updated by trigger'
5684      WHERE f_int1 = - old.f_int1;
5685END|
5686UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
5687WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5688
5689# check trigger-4 success: 	1
5690DROP TRIGGER trg_1;
5691UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5692f_int2 = CAST(f_char1 AS SIGNED INT),
5693f_charbig = 'just inserted'
5694   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5695DELETE FROM t0_aux
5696WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5697INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5698SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5699'just inserted' FROM t0_template
5700WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5701CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
5702BEGIN
5703UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5704f_charbig = 'updated by trigger'
5705      WHERE f_int1 = new.f_int1;
5706END|
5707UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
5708WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5709
5710# check trigger-5 success: 	1
5711DROP TRIGGER trg_1;
5712UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5713f_int2 = CAST(f_char1 AS SIGNED INT),
5714f_charbig = 'just inserted'
5715   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5716DELETE FROM t0_aux
5717WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5718INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5719SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5720'just inserted' FROM t0_template
5721WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5722CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
5723BEGIN
5724UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5725f_charbig = 'updated by trigger'
5726      WHERE f_int1 = - old.f_int1;
5727END|
5728UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
5729WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5730
5731# check trigger-6 success: 	1
5732DROP TRIGGER trg_1;
5733UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5734f_int2 = CAST(f_char1 AS SIGNED INT),
5735f_charbig = 'just inserted'
5736   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5737DELETE FROM t0_aux
5738WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5739INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5740SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5741'just inserted' FROM t0_template
5742WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5743CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
5744BEGIN
5745UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5746f_charbig = 'updated by trigger'
5747      WHERE f_int1 = - old.f_int1;
5748END|
5749DELETE FROM t0_aux
5750WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5751
5752# check trigger-7 success: 	1
5753DROP TRIGGER trg_1;
5754UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5755f_int2 = CAST(f_char1 AS SIGNED INT),
5756f_charbig = 'just inserted'
5757   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5758DELETE FROM t0_aux
5759WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5760INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5761SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5762'just inserted' FROM t0_template
5763WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5764CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
5765BEGIN
5766UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5767f_charbig = 'updated by trigger'
5768      WHERE f_int1 = - old.f_int1;
5769END|
5770DELETE FROM t0_aux
5771WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5772
5773# check trigger-8 success: 	1
5774DROP TRIGGER trg_1;
5775UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5776f_int2 = CAST(f_char1 AS SIGNED INT),
5777f_charbig = 'just inserted'
5778   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5779DELETE FROM t0_aux
5780WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5781DELETE FROM t1
5782WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5783CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
5784BEGIN
5785SET new.f_int1 = old.f_int1 + @max_row,
5786new.f_int2 = old.f_int2 - @max_row,
5787new.f_charbig = '####updated per update trigger####';
5788END|
5789UPDATE t1
5790SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
5791f_charbig = '####updated per update statement itself####';
5792Warnings:
5793Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
5794
5795# check trigger-9 success: 	1
5796DROP TRIGGER trg_2;
5797UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5798f_int2 = CAST(f_char1 AS SIGNED INT),
5799f_charbig = CONCAT('===',f_char1,'===');
5800Warnings:
5801Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
5802CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
5803BEGIN
5804SET new.f_int1 = new.f_int1 + @max_row,
5805new.f_int2 = new.f_int2 - @max_row,
5806new.f_charbig = '####updated per update trigger####';
5807END|
5808UPDATE t1
5809SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
5810f_charbig = '####updated per update statement itself####';
5811Warnings:
5812Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
5813
5814# check trigger-10 success: 	1
5815DROP TRIGGER trg_2;
5816UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5817f_int2 = CAST(f_char1 AS SIGNED INT),
5818f_charbig = CONCAT('===',f_char1,'===');
5819Warnings:
5820Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
5821CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
5822BEGIN
5823SET new.f_int1 = @my_max1 + @counter,
5824new.f_int2 = @my_min2 - @counter,
5825new.f_charbig = '####updated per insert trigger####';
5826SET @counter = @counter + 1;
5827END|
5828SET @counter = 1;
5829SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
5830Warnings:
5831Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
5832INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5833SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
5834CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
5835WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
5836ORDER BY f_int1;
5837DROP TRIGGER trg_3;
5838
5839# check trigger-11 success: 	1
5840Warnings:
5841Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
5842DELETE FROM t1
5843WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
5844AND f_int2 <> CAST(f_char1 AS SIGNED INT)
5845AND f_charbig = '####updated per insert trigger####';
5846CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
5847BEGIN
5848SET new.f_int1 = @my_max1 + @counter,
5849new.f_int2 = @my_min2 - @counter,
5850new.f_charbig = '####updated per insert trigger####';
5851SET @counter = @counter + 1;
5852END|
5853SET @counter = 1;
5854SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
5855Warnings:
5856Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
5857INSERT INTO t1 (f_char1, f_char2, f_charbig)
5858SELECT CAST(f_int1 AS CHAR),
5859CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
5860WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
5861ORDER BY f_int1;
5862DROP TRIGGER trg_3;
5863
5864# check trigger-12 success: 	1
5865Warnings:
5866Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
5867DELETE FROM t1
5868WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
5869AND f_int2 <> CAST(f_char1 AS SIGNED INT)
5870AND f_charbig = '####updated per insert trigger####';
5871ANALYZE  TABLE t1;
5872Table	Op	Msg_type	Msg_text
5873test.t1	analyze	status	OK
5874test.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.
5875CHECK    TABLE t1 EXTENDED;
5876Table	Op	Msg_type	Msg_text
5877test.t1	check	status	OK
5878test.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.
5879CHECKSUM TABLE t1 EXTENDED;
5880Table	Checksum
5881test.t1	<some_value>
5882OPTIMIZE TABLE t1;
5883Table	Op	Msg_type	Msg_text
5884test.t1	optimize	status	OK
5885test.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.
5886# check layout success:    1
5887REPAIR   TABLE t1 EXTENDED;
5888Table	Op	Msg_type	Msg_text
5889test.t1	repair	status	OK
5890test.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.
5891# check layout success:    1
5892TRUNCATE t1;
5893Warnings:
5894Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
5895
5896# check TRUNCATE success: 	1
5897# check layout success:    1
5898# End usability test (inc/partition_check.inc)
5899DROP TABLE t1;
5900CREATE TABLE t1 (
5901f_int1 INTEGER,
5902f_int2 INTEGER,
5903f_char1 CHAR(20),
5904f_char2 CHAR(20),
5905f_charbig VARCHAR(1000)
5906
5907)
5908PARTITION BY RANGE((f_int1 + f_int2) DIV 2)
5909(PARTITION parta VALUES LESS THAN (0)
5910DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
5911INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
5912PARTITION partb VALUES LESS THAN (5)
5913DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
5914INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
5915PARTITION partc VALUES LESS THAN (10)
5916DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
5917INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
5918PARTITION partd VALUES LESS THAN (10 + 5)
5919DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
5920INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
5921PARTITION parte VALUES LESS THAN (20)
5922DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
5923INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
5924PARTITION partf VALUES LESS THAN (2147483646)
5925DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
5926INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir');
5927Warnings:
5928Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
5929INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
5930SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
5931Warnings:
5932Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
5933# Start usability test (inc/partition_check.inc)
5934create_command
5935SHOW CREATE TABLE t1;
5936Table	Create Table
5937t1	CREATE TABLE `t1` (
5938  `f_int1` int(11) DEFAULT NULL,
5939  `f_int2` int(11) DEFAULT NULL,
5940  `f_char1` char(20) DEFAULT NULL,
5941  `f_char2` char(20) DEFAULT NULL,
5942  `f_charbig` varchar(1000) DEFAULT NULL
5943) ENGINE=MyISAM DEFAULT CHARSET=latin1
5944/*!50100 PARTITION BY RANGE ((f_int1 + f_int2) DIV 2)
5945(PARTITION parta VALUES LESS THAN (0) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
5946 PARTITION partb VALUES LESS THAN (5) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
5947 PARTITION partc VALUES LESS THAN (10) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
5948 PARTITION partd VALUES LESS THAN (15) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
5949 PARTITION parte VALUES LESS THAN (20) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
5950 PARTITION partf VALUES LESS THAN (2147483646) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM) */
5951
5952unified filelist
5953t1#P#parta.MYD
5954t1#P#parta.MYI
5955t1#P#partb.MYD
5956t1#P#partb.MYI
5957t1#P#partc.MYD
5958t1#P#partc.MYI
5959t1#P#partd.MYD
5960t1#P#partd.MYI
5961t1#P#parte.MYD
5962t1#P#parte.MYI
5963t1#P#partf.MYD
5964t1#P#partf.MYI
5965t1.frm
5966t1.par
5967t1#P#parta.MYD
5968t1#P#partb.MYD
5969t1#P#partc.MYD
5970t1#P#partd.MYD
5971t1#P#parte.MYD
5972t1#P#partf.MYD
5973t1#P#parta.MYI
5974t1#P#partb.MYI
5975t1#P#partc.MYI
5976t1#P#partd.MYI
5977t1#P#parte.MYI
5978t1#P#partf.MYI
5979
5980# check prerequisites-1 success:    1
5981# check COUNT(*) success:    1
5982# check MIN/MAX(f_int1) success:    1
5983# check MIN/MAX(f_int2) success:    1
5984INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5985SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
5986CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
5987WHERE f_int1 IN (2,3);
5988# check prerequisites-3 success:    1
5989DELETE FROM t1 WHERE f_charbig = 'delete me';
5990# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
5991# check read via f_int1 success: 1
5992# check read via f_int2 success: 1
5993
5994# check multiple-1 success: 	1
5995DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
5996
5997# check multiple-2 success: 	1
5998INSERT INTO t1 SELECT * FROM t0_template
5999WHERE MOD(f_int1,3) = 0;
6000
6001# check multiple-3 success: 	1
6002UPDATE t1 SET f_int1 = f_int1 + @max_row
6003WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
6004AND @max_row_div2 + @max_row_div4;
6005
6006# check multiple-4 success: 	1
6007DELETE FROM t1
6008WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
6009AND @max_row_div2 + @max_row_div4 + @max_row;
6010
6011# check multiple-5 success: 	1
6012SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
6013INSERT INTO t1
6014SET f_int1 = @cur_value , f_int2 = @cur_value,
6015f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
6016f_charbig = '#SINGLE#';
6017
6018# check single-1 success: 	1
6019SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
6020INSERT INTO t1
6021SET f_int1 = @cur_value , f_int2 = @cur_value,
6022f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
6023f_charbig = '#SINGLE#';
6024
6025# check single-2 success: 	1
6026SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
6027SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
6028UPDATE t1 SET f_int1 = @cur_value2
6029WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
6030
6031# check single-3 success: 	1
6032SET @cur_value1= -1;
6033SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
6034UPDATE t1 SET f_int1 = @cur_value1
6035WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
6036
6037# check single-4 success: 	1
6038SELECT MAX(f_int1) INTO @cur_value FROM t1;
6039DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
6040
6041# check single-5 success: 	1
6042DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
6043
6044# check single-6 success: 	1
6045INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
6046ERROR HY000: Table has no partition for value 2147483647
6047DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
6048INSERT t1 SET f_int1 = 0 , f_int2 = 0,
6049f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
6050f_charbig = '#NULL#';
6051INSERT INTO t1
6052SET f_int1 = NULL , f_int2 = -@max_row,
6053f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
6054f_charbig = '#NULL#';
6055# check null success:    1
6056
6057# check null-1 success: 	1
6058UPDATE t1 SET f_int1 = -@max_row
6059WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
6060AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
6061
6062# check null-2 success: 	1
6063UPDATE t1 SET f_int1 = NULL
6064WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
6065AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
6066
6067# check null-3 success: 	1
6068DELETE FROM t1
6069WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
6070AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
6071
6072# check null-4 success: 	1
6073DELETE FROM t1
6074WHERE f_int1 = 0 AND f_int2 = 0
6075AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
6076AND f_charbig = '#NULL#';
6077SET AUTOCOMMIT= 0;
6078INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6079SELECT f_int1, f_int1, '', '', 'was inserted'
6080FROM t0_template source_tab
6081WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
6082
6083# check transactions-1 success: 	1
6084COMMIT WORK;
6085
6086# check transactions-2 success: 	1
6087ROLLBACK WORK;
6088
6089# check transactions-3 success: 	1
6090DELETE FROM t1 WHERE f_charbig = 'was inserted';
6091COMMIT WORK;
6092ROLLBACK WORK;
6093
6094# check transactions-4 success: 	1
6095INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6096SELECT f_int1, f_int1, '', '', 'was inserted'
6097FROM t0_template source_tab
6098WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
6099
6100# check transactions-5 success: 	1
6101ROLLBACK WORK;
6102Warnings:
6103Warning	1196	Some non-transactional changed tables couldn't be rolled back
6104
6105# check transactions-6 success: 	1
6106# INFO: Storage engine used for t1 seems to be not transactional.
6107COMMIT;
6108
6109# check transactions-7 success: 	1
6110DELETE FROM t1 WHERE f_charbig = 'was inserted';
6111COMMIT WORK;
6112SET @@session.sql_mode = 'traditional';
6113Warnings:
6114Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
6115SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
6116INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6117SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
6118'', '', 'was inserted' FROM t0_template
6119WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
6120ERROR 22012: Division by 0
6121COMMIT;
6122
6123# check transactions-8 success: 	1
6124# INFO: Storage engine used for t1 seems to be unable to revert
6125#       changes made by the failing statement.
6126SET @@session.sql_mode = '';
6127Warnings:
6128Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
6129SET AUTOCOMMIT= 1;
6130DELETE FROM t1 WHERE f_charbig = 'was inserted';
6131COMMIT WORK;
6132UPDATE t1 SET f_charbig = REPEAT('b', 1000);
6133
6134# check special-1 success: 	1
6135UPDATE t1 SET f_charbig = '';
6136
6137# check special-2 success: 	1
6138UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
6139INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
6140SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
6141WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6142INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6143SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6144'just inserted' FROM t0_template
6145WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6146CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
6147BEGIN
6148UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6149f_charbig = 'updated by trigger'
6150      WHERE f_int1 = new.f_int1;
6151END|
6152INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6153SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
6154WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6155
6156# check trigger-1 success: 	1
6157DROP TRIGGER trg_1;
6158UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6159f_int2 = CAST(f_char1 AS SIGNED INT),
6160f_charbig = 'just inserted'
6161   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6162DELETE FROM t0_aux
6163WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6164INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6165SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6166'just inserted' FROM t0_template
6167WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6168CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
6169BEGIN
6170UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6171f_charbig = 'updated by trigger'
6172      WHERE f_int1 = new.f_int1;
6173END|
6174INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6175SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
6176WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6177
6178# check trigger-2 success: 	1
6179DROP TRIGGER trg_1;
6180UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6181f_int2 = CAST(f_char1 AS SIGNED INT),
6182f_charbig = 'just inserted'
6183   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6184DELETE FROM t0_aux
6185WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6186INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6187SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6188'just inserted' FROM t0_template
6189WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6190CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
6191BEGIN
6192UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6193f_charbig = 'updated by trigger'
6194      WHERE f_int1 = new.f_int1;
6195END|
6196UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
6197WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6198
6199# check trigger-3 success: 	1
6200DROP TRIGGER trg_1;
6201UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6202f_int2 = CAST(f_char1 AS SIGNED INT),
6203f_charbig = 'just inserted'
6204   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6205DELETE FROM t0_aux
6206WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6207INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6208SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6209'just inserted' FROM t0_template
6210WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6211CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
6212BEGIN
6213UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6214f_charbig = 'updated by trigger'
6215      WHERE f_int1 = - old.f_int1;
6216END|
6217UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
6218WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6219
6220# check trigger-4 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 AFTER 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-5 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 AFTER 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-6 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 BEFORE DELETE 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 = - old.f_int1;
6279END|
6280DELETE FROM t0_aux
6281WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6282
6283# check trigger-7 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 DELETE 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|
6301DELETE FROM t0_aux
6302WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6303
6304# check trigger-8 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;
6312DELETE FROM t1
6313WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6314CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
6315BEGIN
6316SET new.f_int1 = old.f_int1 + @max_row,
6317new.f_int2 = old.f_int2 - @max_row,
6318new.f_charbig = '####updated per update trigger####';
6319END|
6320UPDATE t1
6321SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
6322f_charbig = '####updated per update statement itself####';
6323Warnings:
6324Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
6325
6326# check trigger-9 success: 	1
6327DROP TRIGGER trg_2;
6328UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6329f_int2 = CAST(f_char1 AS SIGNED INT),
6330f_charbig = CONCAT('===',f_char1,'===');
6331Warnings:
6332Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
6333CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
6334BEGIN
6335SET new.f_int1 = new.f_int1 + @max_row,
6336new.f_int2 = new.f_int2 - @max_row,
6337new.f_charbig = '####updated per update trigger####';
6338END|
6339UPDATE t1
6340SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
6341f_charbig = '####updated per update statement itself####';
6342Warnings:
6343Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
6344
6345# check trigger-10 success: 	1
6346DROP TRIGGER trg_2;
6347UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6348f_int2 = CAST(f_char1 AS SIGNED INT),
6349f_charbig = CONCAT('===',f_char1,'===');
6350Warnings:
6351Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
6352CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
6353BEGIN
6354SET new.f_int1 = @my_max1 + @counter,
6355new.f_int2 = @my_min2 - @counter,
6356new.f_charbig = '####updated per insert trigger####';
6357SET @counter = @counter + 1;
6358END|
6359SET @counter = 1;
6360SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
6361Warnings:
6362Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
6363INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6364SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
6365CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
6366WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
6367ORDER BY f_int1;
6368DROP TRIGGER trg_3;
6369
6370# check trigger-11 success: 	1
6371Warnings:
6372Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
6373DELETE FROM t1
6374WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
6375AND f_int2 <> CAST(f_char1 AS SIGNED INT)
6376AND f_charbig = '####updated per insert trigger####';
6377CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
6378BEGIN
6379SET new.f_int1 = @my_max1 + @counter,
6380new.f_int2 = @my_min2 - @counter,
6381new.f_charbig = '####updated per insert trigger####';
6382SET @counter = @counter + 1;
6383END|
6384SET @counter = 1;
6385SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
6386Warnings:
6387Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
6388INSERT INTO t1 (f_char1, f_char2, f_charbig)
6389SELECT CAST(f_int1 AS CHAR),
6390CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
6391WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
6392ORDER BY f_int1;
6393DROP TRIGGER trg_3;
6394
6395# check trigger-12 success: 	1
6396Warnings:
6397Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
6398DELETE FROM t1
6399WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
6400AND f_int2 <> CAST(f_char1 AS SIGNED INT)
6401AND f_charbig = '####updated per insert trigger####';
6402ANALYZE  TABLE t1;
6403Table	Op	Msg_type	Msg_text
6404test.t1	analyze	status	OK
6405test.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.
6406CHECK    TABLE t1 EXTENDED;
6407Table	Op	Msg_type	Msg_text
6408test.t1	check	status	OK
6409test.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.
6410CHECKSUM TABLE t1 EXTENDED;
6411Table	Checksum
6412test.t1	<some_value>
6413OPTIMIZE TABLE t1;
6414Table	Op	Msg_type	Msg_text
6415test.t1	optimize	status	OK
6416test.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.
6417# check layout success:    1
6418REPAIR   TABLE t1 EXTENDED;
6419Table	Op	Msg_type	Msg_text
6420test.t1	repair	status	OK
6421test.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.
6422# check layout success:    1
6423TRUNCATE t1;
6424Warnings:
6425Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
6426
6427# check TRUNCATE success: 	1
6428# check layout success:    1
6429# End usability test (inc/partition_check.inc)
6430DROP TABLE t1;
6431CREATE TABLE t1 (
6432f_int1 INTEGER,
6433f_int2 INTEGER,
6434f_char1 CHAR(20),
6435f_char2 CHAR(20),
6436f_charbig VARCHAR(1000)
6437
6438)
6439PARTITION BY RANGE(f_int1) SUBPARTITION BY HASH(f_int2) SUBPARTITIONS 2
6440(PARTITION parta VALUES LESS THAN (0)
6441DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
6442INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
6443PARTITION partb VALUES LESS THAN (5)
6444DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
6445INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
6446PARTITION partc VALUES LESS THAN (10)
6447DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
6448INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
6449PARTITION partd VALUES LESS THAN (2147483646)
6450DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
6451INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir');
6452Warnings:
6453Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
6454INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
6455SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
6456Warnings:
6457Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
6458# Start usability test (inc/partition_check.inc)
6459create_command
6460SHOW CREATE TABLE t1;
6461Table	Create Table
6462t1	CREATE TABLE `t1` (
6463  `f_int1` int(11) DEFAULT NULL,
6464  `f_int2` int(11) DEFAULT NULL,
6465  `f_char1` char(20) DEFAULT NULL,
6466  `f_char2` char(20) DEFAULT NULL,
6467  `f_charbig` varchar(1000) DEFAULT NULL
6468) ENGINE=MyISAM DEFAULT CHARSET=latin1
6469/*!50100 PARTITION BY RANGE (f_int1)
6470SUBPARTITION BY HASH (f_int2)
6471SUBPARTITIONS 2
6472(PARTITION parta VALUES LESS THAN (0) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
6473 PARTITION partb VALUES LESS THAN (5) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
6474 PARTITION partc VALUES LESS THAN (10) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
6475 PARTITION partd VALUES LESS THAN (2147483646) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM) */
6476
6477unified filelist
6478t1#P#parta#SP#partasp0.MYD
6479t1#P#parta#SP#partasp0.MYI
6480t1#P#parta#SP#partasp1.MYD
6481t1#P#parta#SP#partasp1.MYI
6482t1#P#partb#SP#partbsp0.MYD
6483t1#P#partb#SP#partbsp0.MYI
6484t1#P#partb#SP#partbsp1.MYD
6485t1#P#partb#SP#partbsp1.MYI
6486t1#P#partc#SP#partcsp0.MYD
6487t1#P#partc#SP#partcsp0.MYI
6488t1#P#partc#SP#partcsp1.MYD
6489t1#P#partc#SP#partcsp1.MYI
6490t1#P#partd#SP#partdsp0.MYD
6491t1#P#partd#SP#partdsp0.MYI
6492t1#P#partd#SP#partdsp1.MYD
6493t1#P#partd#SP#partdsp1.MYI
6494t1.frm
6495t1.par
6496t1#P#parta#SP#partasp0.MYD
6497t1#P#parta#SP#partasp1.MYD
6498t1#P#partb#SP#partbsp0.MYD
6499t1#P#partb#SP#partbsp1.MYD
6500t1#P#partc#SP#partcsp0.MYD
6501t1#P#partc#SP#partcsp1.MYD
6502t1#P#partd#SP#partdsp0.MYD
6503t1#P#partd#SP#partdsp1.MYD
6504t1#P#parta#SP#partasp0.MYI
6505t1#P#parta#SP#partasp1.MYI
6506t1#P#partb#SP#partbsp0.MYI
6507t1#P#partb#SP#partbsp1.MYI
6508t1#P#partc#SP#partcsp0.MYI
6509t1#P#partc#SP#partcsp1.MYI
6510t1#P#partd#SP#partdsp0.MYI
6511t1#P#partd#SP#partdsp1.MYI
6512
6513# check prerequisites-1 success:    1
6514# check COUNT(*) success:    1
6515# check MIN/MAX(f_int1) success:    1
6516# check MIN/MAX(f_int2) success:    1
6517INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6518SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
6519CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
6520WHERE f_int1 IN (2,3);
6521# check prerequisites-3 success:    1
6522DELETE FROM t1 WHERE f_charbig = 'delete me';
6523# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
6524# check read via f_int1 success: 1
6525# check read via f_int2 success: 1
6526
6527# check multiple-1 success: 	1
6528DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
6529
6530# check multiple-2 success: 	1
6531INSERT INTO t1 SELECT * FROM t0_template
6532WHERE MOD(f_int1,3) = 0;
6533
6534# check multiple-3 success: 	1
6535UPDATE t1 SET f_int1 = f_int1 + @max_row
6536WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
6537AND @max_row_div2 + @max_row_div4;
6538
6539# check multiple-4 success: 	1
6540DELETE FROM t1
6541WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
6542AND @max_row_div2 + @max_row_div4 + @max_row;
6543
6544# check multiple-5 success: 	1
6545SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
6546INSERT INTO t1
6547SET f_int1 = @cur_value , f_int2 = @cur_value,
6548f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
6549f_charbig = '#SINGLE#';
6550
6551# check single-1 success: 	1
6552SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
6553INSERT INTO t1
6554SET f_int1 = @cur_value , f_int2 = @cur_value,
6555f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
6556f_charbig = '#SINGLE#';
6557
6558# check single-2 success: 	1
6559SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
6560SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
6561UPDATE t1 SET f_int1 = @cur_value2
6562WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
6563
6564# check single-3 success: 	1
6565SET @cur_value1= -1;
6566SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
6567UPDATE t1 SET f_int1 = @cur_value1
6568WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
6569
6570# check single-4 success: 	1
6571SELECT MAX(f_int1) INTO @cur_value FROM t1;
6572DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
6573
6574# check single-5 success: 	1
6575DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
6576
6577# check single-6 success: 	1
6578INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
6579ERROR HY000: Table has no partition for value 2147483647
6580DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
6581INSERT t1 SET f_int1 = 0 , f_int2 = 0,
6582f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
6583f_charbig = '#NULL#';
6584INSERT INTO t1
6585SET f_int1 = NULL , f_int2 = -@max_row,
6586f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
6587f_charbig = '#NULL#';
6588# check null success:    1
6589
6590# check null-1 success: 	1
6591UPDATE t1 SET f_int1 = -@max_row
6592WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
6593AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
6594
6595# check null-2 success: 	1
6596UPDATE t1 SET f_int1 = NULL
6597WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
6598AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
6599
6600# check null-3 success: 	1
6601DELETE FROM t1
6602WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
6603AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
6604
6605# check null-4 success: 	1
6606DELETE FROM t1
6607WHERE f_int1 = 0 AND f_int2 = 0
6608AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
6609AND f_charbig = '#NULL#';
6610SET AUTOCOMMIT= 0;
6611INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6612SELECT f_int1, f_int1, '', '', 'was inserted'
6613FROM t0_template source_tab
6614WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
6615
6616# check transactions-1 success: 	1
6617COMMIT WORK;
6618
6619# check transactions-2 success: 	1
6620ROLLBACK WORK;
6621
6622# check transactions-3 success: 	1
6623DELETE FROM t1 WHERE f_charbig = 'was inserted';
6624COMMIT WORK;
6625ROLLBACK WORK;
6626
6627# check transactions-4 success: 	1
6628INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6629SELECT f_int1, f_int1, '', '', 'was inserted'
6630FROM t0_template source_tab
6631WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
6632
6633# check transactions-5 success: 	1
6634ROLLBACK WORK;
6635Warnings:
6636Warning	1196	Some non-transactional changed tables couldn't be rolled back
6637
6638# check transactions-6 success: 	1
6639# INFO: Storage engine used for t1 seems to be not transactional.
6640COMMIT;
6641
6642# check transactions-7 success: 	1
6643DELETE FROM t1 WHERE f_charbig = 'was inserted';
6644COMMIT WORK;
6645SET @@session.sql_mode = 'traditional';
6646Warnings:
6647Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
6648SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
6649INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6650SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
6651'', '', 'was inserted' FROM t0_template
6652WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
6653ERROR 22012: Division by 0
6654COMMIT;
6655
6656# check transactions-8 success: 	1
6657# INFO: Storage engine used for t1 seems to be unable to revert
6658#       changes made by the failing statement.
6659SET @@session.sql_mode = '';
6660Warnings:
6661Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
6662SET AUTOCOMMIT= 1;
6663DELETE FROM t1 WHERE f_charbig = 'was inserted';
6664COMMIT WORK;
6665UPDATE t1 SET f_charbig = REPEAT('b', 1000);
6666
6667# check special-1 success: 	1
6668UPDATE t1 SET f_charbig = '';
6669
6670# check special-2 success: 	1
6671UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
6672INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
6673SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
6674WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6675INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6676SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6677'just inserted' FROM t0_template
6678WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6679CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
6680BEGIN
6681UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6682f_charbig = 'updated by trigger'
6683      WHERE f_int1 = new.f_int1;
6684END|
6685INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6686SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
6687WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6688
6689# check trigger-1 success: 	1
6690DROP TRIGGER trg_1;
6691UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6692f_int2 = CAST(f_char1 AS SIGNED INT),
6693f_charbig = 'just inserted'
6694   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6695DELETE FROM t0_aux
6696WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6697INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6698SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6699'just inserted' FROM t0_template
6700WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6701CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
6702BEGIN
6703UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6704f_charbig = 'updated by trigger'
6705      WHERE f_int1 = new.f_int1;
6706END|
6707INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6708SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
6709WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6710
6711# check trigger-2 success: 	1
6712DROP TRIGGER trg_1;
6713UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6714f_int2 = CAST(f_char1 AS SIGNED INT),
6715f_charbig = 'just inserted'
6716   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6717DELETE FROM t0_aux
6718WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6719INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6720SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6721'just inserted' FROM t0_template
6722WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6723CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
6724BEGIN
6725UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6726f_charbig = 'updated by trigger'
6727      WHERE f_int1 = new.f_int1;
6728END|
6729UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
6730WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6731
6732# check trigger-3 success: 	1
6733DROP TRIGGER trg_1;
6734UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6735f_int2 = CAST(f_char1 AS SIGNED INT),
6736f_charbig = 'just inserted'
6737   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6738DELETE FROM t0_aux
6739WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6740INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6741SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6742'just inserted' FROM t0_template
6743WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6744CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
6745BEGIN
6746UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6747f_charbig = 'updated by trigger'
6748      WHERE f_int1 = - old.f_int1;
6749END|
6750UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
6751WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6752
6753# check trigger-4 success: 	1
6754DROP TRIGGER trg_1;
6755UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6756f_int2 = CAST(f_char1 AS SIGNED INT),
6757f_charbig = 'just inserted'
6758   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6759DELETE FROM t0_aux
6760WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6761INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6762SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6763'just inserted' FROM t0_template
6764WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6765CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
6766BEGIN
6767UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6768f_charbig = 'updated by trigger'
6769      WHERE f_int1 = new.f_int1;
6770END|
6771UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
6772WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6773
6774# check trigger-5 success: 	1
6775DROP TRIGGER trg_1;
6776UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6777f_int2 = CAST(f_char1 AS SIGNED INT),
6778f_charbig = 'just inserted'
6779   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6780DELETE FROM t0_aux
6781WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6782INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6783SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6784'just inserted' FROM t0_template
6785WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6786CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
6787BEGIN
6788UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6789f_charbig = 'updated by trigger'
6790      WHERE f_int1 = - old.f_int1;
6791END|
6792UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
6793WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6794
6795# check trigger-6 success: 	1
6796DROP TRIGGER trg_1;
6797UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6798f_int2 = CAST(f_char1 AS SIGNED INT),
6799f_charbig = 'just inserted'
6800   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6801DELETE FROM t0_aux
6802WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6803INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6804SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6805'just inserted' FROM t0_template
6806WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6807CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
6808BEGIN
6809UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6810f_charbig = 'updated by trigger'
6811      WHERE f_int1 = - old.f_int1;
6812END|
6813DELETE FROM t0_aux
6814WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6815
6816# check trigger-7 success: 	1
6817DROP TRIGGER trg_1;
6818UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6819f_int2 = CAST(f_char1 AS SIGNED INT),
6820f_charbig = 'just inserted'
6821   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6822DELETE FROM t0_aux
6823WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6824INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6825SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6826'just inserted' FROM t0_template
6827WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6828CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
6829BEGIN
6830UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6831f_charbig = 'updated by trigger'
6832      WHERE f_int1 = - old.f_int1;
6833END|
6834DELETE FROM t0_aux
6835WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6836
6837# check trigger-8 success: 	1
6838DROP TRIGGER trg_1;
6839UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6840f_int2 = CAST(f_char1 AS SIGNED INT),
6841f_charbig = 'just inserted'
6842   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6843DELETE FROM t0_aux
6844WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6845DELETE FROM t1
6846WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6847CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
6848BEGIN
6849SET new.f_int1 = old.f_int1 + @max_row,
6850new.f_int2 = old.f_int2 - @max_row,
6851new.f_charbig = '####updated per update trigger####';
6852END|
6853UPDATE t1
6854SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
6855f_charbig = '####updated per update statement itself####';
6856Warnings:
6857Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
6858
6859# check trigger-9 success: 	1
6860DROP TRIGGER trg_2;
6861UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6862f_int2 = CAST(f_char1 AS SIGNED INT),
6863f_charbig = CONCAT('===',f_char1,'===');
6864Warnings:
6865Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
6866CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
6867BEGIN
6868SET new.f_int1 = new.f_int1 + @max_row,
6869new.f_int2 = new.f_int2 - @max_row,
6870new.f_charbig = '####updated per update trigger####';
6871END|
6872UPDATE t1
6873SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
6874f_charbig = '####updated per update statement itself####';
6875Warnings:
6876Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
6877
6878# check trigger-10 success: 	1
6879DROP TRIGGER trg_2;
6880UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6881f_int2 = CAST(f_char1 AS SIGNED INT),
6882f_charbig = CONCAT('===',f_char1,'===');
6883Warnings:
6884Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
6885CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
6886BEGIN
6887SET new.f_int1 = @my_max1 + @counter,
6888new.f_int2 = @my_min2 - @counter,
6889new.f_charbig = '####updated per insert trigger####';
6890SET @counter = @counter + 1;
6891END|
6892SET @counter = 1;
6893SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
6894Warnings:
6895Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
6896INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6897SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
6898CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
6899WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
6900ORDER BY f_int1;
6901DROP TRIGGER trg_3;
6902
6903# check trigger-11 success: 	1
6904Warnings:
6905Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
6906DELETE FROM t1
6907WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
6908AND f_int2 <> CAST(f_char1 AS SIGNED INT)
6909AND f_charbig = '####updated per insert trigger####';
6910CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
6911BEGIN
6912SET new.f_int1 = @my_max1 + @counter,
6913new.f_int2 = @my_min2 - @counter,
6914new.f_charbig = '####updated per insert trigger####';
6915SET @counter = @counter + 1;
6916END|
6917SET @counter = 1;
6918SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
6919Warnings:
6920Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
6921INSERT INTO t1 (f_char1, f_char2, f_charbig)
6922SELECT CAST(f_int1 AS CHAR),
6923CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
6924WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
6925ORDER BY f_int1;
6926DROP TRIGGER trg_3;
6927
6928# check trigger-12 success: 	1
6929Warnings:
6930Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
6931DELETE FROM t1
6932WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
6933AND f_int2 <> CAST(f_char1 AS SIGNED INT)
6934AND f_charbig = '####updated per insert trigger####';
6935ANALYZE  TABLE t1;
6936Table	Op	Msg_type	Msg_text
6937test.t1	analyze	status	OK
6938test.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.
6939CHECK    TABLE t1 EXTENDED;
6940Table	Op	Msg_type	Msg_text
6941test.t1	check	status	OK
6942test.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.
6943CHECKSUM TABLE t1 EXTENDED;
6944Table	Checksum
6945test.t1	<some_value>
6946OPTIMIZE TABLE t1;
6947Table	Op	Msg_type	Msg_text
6948test.t1	optimize	status	OK
6949test.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.
6950# check layout success:    1
6951REPAIR   TABLE t1 EXTENDED;
6952Table	Op	Msg_type	Msg_text
6953test.t1	repair	status	OK
6954test.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.
6955# check layout success:    1
6956TRUNCATE t1;
6957Warnings:
6958Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
6959
6960# check TRUNCATE success: 	1
6961# check layout success:    1
6962# End usability test (inc/partition_check.inc)
6963DROP TABLE t1;
6964CREATE TABLE t1 (
6965f_int1 INTEGER,
6966f_int2 INTEGER,
6967f_char1 CHAR(20),
6968f_char2 CHAR(20),
6969f_charbig VARCHAR(1000)
6970
6971)
6972PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int2)
6973(PARTITION part1 VALUES LESS THAN (0)
6974(SUBPARTITION subpart11 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
6975SUBPARTITION subpart12 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'),
6976PARTITION part2 VALUES LESS THAN (5)
6977(SUBPARTITION subpart21 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
6978SUBPARTITION subpart22 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'),
6979PARTITION part3 VALUES LESS THAN (10)
6980(SUBPARTITION subpart31 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
6981SUBPARTITION subpart32 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'),
6982PARTITION part4 VALUES LESS THAN (2147483646)
6983(SUBPARTITION subpart41 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
6984SUBPARTITION subpart42 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'));
6985Warnings:
6986Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
6987INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
6988SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
6989Warnings:
6990Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
6991# Start usability test (inc/partition_check.inc)
6992create_command
6993SHOW CREATE TABLE t1;
6994Table	Create Table
6995t1	CREATE TABLE `t1` (
6996  `f_int1` int(11) DEFAULT NULL,
6997  `f_int2` int(11) DEFAULT NULL,
6998  `f_char1` char(20) DEFAULT NULL,
6999  `f_char2` char(20) DEFAULT NULL,
7000  `f_charbig` varchar(1000) DEFAULT NULL
7001) ENGINE=MyISAM DEFAULT CHARSET=latin1
7002/*!50100 PARTITION BY RANGE (f_int1)
7003SUBPARTITION BY KEY (f_int2)
7004(PARTITION part1 VALUES LESS THAN (0)
7005 (SUBPARTITION subpart11 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
7006  SUBPARTITION subpart12 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM),
7007 PARTITION part2 VALUES LESS THAN (5)
7008 (SUBPARTITION subpart21 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
7009  SUBPARTITION subpart22 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM),
7010 PARTITION part3 VALUES LESS THAN (10)
7011 (SUBPARTITION subpart31 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
7012  SUBPARTITION subpart32 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM),
7013 PARTITION part4 VALUES LESS THAN (2147483646)
7014 (SUBPARTITION subpart41 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
7015  SUBPARTITION subpart42 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM)) */
7016
7017unified filelist
7018t1#P#part1#SP#subpart11.MYD
7019t1#P#part1#SP#subpart11.MYI
7020t1#P#part1#SP#subpart12.MYD
7021t1#P#part1#SP#subpart12.MYI
7022t1#P#part2#SP#subpart21.MYD
7023t1#P#part2#SP#subpart21.MYI
7024t1#P#part2#SP#subpart22.MYD
7025t1#P#part2#SP#subpart22.MYI
7026t1#P#part3#SP#subpart31.MYD
7027t1#P#part3#SP#subpart31.MYI
7028t1#P#part3#SP#subpart32.MYD
7029t1#P#part3#SP#subpart32.MYI
7030t1#P#part4#SP#subpart41.MYD
7031t1#P#part4#SP#subpart41.MYI
7032t1#P#part4#SP#subpart42.MYD
7033t1#P#part4#SP#subpart42.MYI
7034t1.frm
7035t1.par
7036t1#P#part1#SP#subpart11.MYD
7037t1#P#part1#SP#subpart12.MYD
7038t1#P#part2#SP#subpart21.MYD
7039t1#P#part2#SP#subpart22.MYD
7040t1#P#part3#SP#subpart31.MYD
7041t1#P#part3#SP#subpart32.MYD
7042t1#P#part4#SP#subpart41.MYD
7043t1#P#part4#SP#subpart42.MYD
7044t1#P#part1#SP#subpart11.MYI
7045t1#P#part1#SP#subpart12.MYI
7046t1#P#part2#SP#subpart21.MYI
7047t1#P#part2#SP#subpart22.MYI
7048t1#P#part3#SP#subpart31.MYI
7049t1#P#part3#SP#subpart32.MYI
7050t1#P#part4#SP#subpart41.MYI
7051t1#P#part4#SP#subpart42.MYI
7052
7053# check prerequisites-1 success:    1
7054# check COUNT(*) success:    1
7055# check MIN/MAX(f_int1) success:    1
7056# check MIN/MAX(f_int2) success:    1
7057INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7058SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
7059CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
7060WHERE f_int1 IN (2,3);
7061# check prerequisites-3 success:    1
7062DELETE FROM t1 WHERE f_charbig = 'delete me';
7063# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
7064# check read via f_int1 success: 1
7065# check read via f_int2 success: 1
7066
7067# check multiple-1 success: 	1
7068DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
7069
7070# check multiple-2 success: 	1
7071INSERT INTO t1 SELECT * FROM t0_template
7072WHERE MOD(f_int1,3) = 0;
7073
7074# check multiple-3 success: 	1
7075UPDATE t1 SET f_int1 = f_int1 + @max_row
7076WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
7077AND @max_row_div2 + @max_row_div4;
7078
7079# check multiple-4 success: 	1
7080DELETE FROM t1
7081WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
7082AND @max_row_div2 + @max_row_div4 + @max_row;
7083
7084# check multiple-5 success: 	1
7085SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
7086INSERT INTO t1
7087SET f_int1 = @cur_value , f_int2 = @cur_value,
7088f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
7089f_charbig = '#SINGLE#';
7090
7091# check single-1 success: 	1
7092SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
7093INSERT INTO t1
7094SET f_int1 = @cur_value , f_int2 = @cur_value,
7095f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
7096f_charbig = '#SINGLE#';
7097
7098# check single-2 success: 	1
7099SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
7100SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
7101UPDATE t1 SET f_int1 = @cur_value2
7102WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
7103
7104# check single-3 success: 	1
7105SET @cur_value1= -1;
7106SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
7107UPDATE t1 SET f_int1 = @cur_value1
7108WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
7109
7110# check single-4 success: 	1
7111SELECT MAX(f_int1) INTO @cur_value FROM t1;
7112DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
7113
7114# check single-5 success: 	1
7115DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
7116
7117# check single-6 success: 	1
7118INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
7119ERROR HY000: Table has no partition for value 2147483647
7120DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
7121INSERT t1 SET f_int1 = 0 , f_int2 = 0,
7122f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
7123f_charbig = '#NULL#';
7124INSERT INTO t1
7125SET f_int1 = NULL , f_int2 = -@max_row,
7126f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
7127f_charbig = '#NULL#';
7128# check null success:    1
7129
7130# check null-1 success: 	1
7131UPDATE t1 SET f_int1 = -@max_row
7132WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
7133AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
7134
7135# check null-2 success: 	1
7136UPDATE t1 SET f_int1 = NULL
7137WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
7138AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
7139
7140# check null-3 success: 	1
7141DELETE FROM t1
7142WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
7143AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
7144
7145# check null-4 success: 	1
7146DELETE FROM t1
7147WHERE f_int1 = 0 AND f_int2 = 0
7148AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
7149AND f_charbig = '#NULL#';
7150SET AUTOCOMMIT= 0;
7151INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7152SELECT f_int1, f_int1, '', '', 'was inserted'
7153FROM t0_template source_tab
7154WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
7155
7156# check transactions-1 success: 	1
7157COMMIT WORK;
7158
7159# check transactions-2 success: 	1
7160ROLLBACK WORK;
7161
7162# check transactions-3 success: 	1
7163DELETE FROM t1 WHERE f_charbig = 'was inserted';
7164COMMIT WORK;
7165ROLLBACK WORK;
7166
7167# check transactions-4 success: 	1
7168INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7169SELECT f_int1, f_int1, '', '', 'was inserted'
7170FROM t0_template source_tab
7171WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
7172
7173# check transactions-5 success: 	1
7174ROLLBACK WORK;
7175Warnings:
7176Warning	1196	Some non-transactional changed tables couldn't be rolled back
7177
7178# check transactions-6 success: 	1
7179# INFO: Storage engine used for t1 seems to be not transactional.
7180COMMIT;
7181
7182# check transactions-7 success: 	1
7183DELETE FROM t1 WHERE f_charbig = 'was inserted';
7184COMMIT WORK;
7185SET @@session.sql_mode = 'traditional';
7186Warnings:
7187Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
7188SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
7189INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7190SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
7191'', '', 'was inserted' FROM t0_template
7192WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
7193ERROR 22012: Division by 0
7194COMMIT;
7195
7196# check transactions-8 success: 	1
7197# INFO: Storage engine used for t1 seems to be unable to revert
7198#       changes made by the failing statement.
7199SET @@session.sql_mode = '';
7200Warnings:
7201Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
7202SET AUTOCOMMIT= 1;
7203DELETE FROM t1 WHERE f_charbig = 'was inserted';
7204COMMIT WORK;
7205UPDATE t1 SET f_charbig = REPEAT('b', 1000);
7206
7207# check special-1 success: 	1
7208UPDATE t1 SET f_charbig = '';
7209
7210# check special-2 success: 	1
7211UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
7212INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
7213SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
7214WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7215INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7216SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7217'just inserted' FROM t0_template
7218WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7219CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
7220BEGIN
7221UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7222f_charbig = 'updated by trigger'
7223      WHERE f_int1 = new.f_int1;
7224END|
7225INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7226SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
7227WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7228
7229# check trigger-1 success: 	1
7230DROP TRIGGER trg_1;
7231UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7232f_int2 = CAST(f_char1 AS SIGNED INT),
7233f_charbig = 'just inserted'
7234   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7235DELETE FROM t0_aux
7236WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7237INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7238SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7239'just inserted' FROM t0_template
7240WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7241CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
7242BEGIN
7243UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7244f_charbig = 'updated by trigger'
7245      WHERE f_int1 = new.f_int1;
7246END|
7247INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7248SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
7249WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7250
7251# check trigger-2 success: 	1
7252DROP TRIGGER trg_1;
7253UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7254f_int2 = CAST(f_char1 AS SIGNED INT),
7255f_charbig = 'just inserted'
7256   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7257DELETE FROM t0_aux
7258WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7259INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7260SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7261'just inserted' FROM t0_template
7262WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7263CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
7264BEGIN
7265UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7266f_charbig = 'updated by trigger'
7267      WHERE f_int1 = new.f_int1;
7268END|
7269UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
7270WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7271
7272# check trigger-3 success: 	1
7273DROP TRIGGER trg_1;
7274UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7275f_int2 = CAST(f_char1 AS SIGNED INT),
7276f_charbig = 'just inserted'
7277   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7278DELETE FROM t0_aux
7279WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7280INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7281SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7282'just inserted' FROM t0_template
7283WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7284CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
7285BEGIN
7286UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7287f_charbig = 'updated by trigger'
7288      WHERE f_int1 = - old.f_int1;
7289END|
7290UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
7291WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7292
7293# check trigger-4 success: 	1
7294DROP TRIGGER trg_1;
7295UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7296f_int2 = CAST(f_char1 AS SIGNED INT),
7297f_charbig = 'just inserted'
7298   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7299DELETE FROM t0_aux
7300WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7301INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7302SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7303'just inserted' FROM t0_template
7304WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7305CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
7306BEGIN
7307UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7308f_charbig = 'updated by trigger'
7309      WHERE f_int1 = new.f_int1;
7310END|
7311UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
7312WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7313
7314# check trigger-5 success: 	1
7315DROP TRIGGER trg_1;
7316UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7317f_int2 = CAST(f_char1 AS SIGNED INT),
7318f_charbig = 'just inserted'
7319   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7320DELETE FROM t0_aux
7321WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7322INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7323SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7324'just inserted' FROM t0_template
7325WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7326CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
7327BEGIN
7328UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7329f_charbig = 'updated by trigger'
7330      WHERE f_int1 = - old.f_int1;
7331END|
7332UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
7333WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7334
7335# check trigger-6 success: 	1
7336DROP TRIGGER trg_1;
7337UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7338f_int2 = CAST(f_char1 AS SIGNED INT),
7339f_charbig = 'just inserted'
7340   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7341DELETE FROM t0_aux
7342WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7343INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7344SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7345'just inserted' FROM t0_template
7346WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7347CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
7348BEGIN
7349UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7350f_charbig = 'updated by trigger'
7351      WHERE f_int1 = - old.f_int1;
7352END|
7353DELETE FROM t0_aux
7354WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7355
7356# check trigger-7 success: 	1
7357DROP TRIGGER trg_1;
7358UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7359f_int2 = CAST(f_char1 AS SIGNED INT),
7360f_charbig = 'just inserted'
7361   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7362DELETE FROM t0_aux
7363WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7364INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7365SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7366'just inserted' FROM t0_template
7367WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7368CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
7369BEGIN
7370UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7371f_charbig = 'updated by trigger'
7372      WHERE f_int1 = - old.f_int1;
7373END|
7374DELETE FROM t0_aux
7375WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7376
7377# check trigger-8 success: 	1
7378DROP TRIGGER trg_1;
7379UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7380f_int2 = CAST(f_char1 AS SIGNED INT),
7381f_charbig = 'just inserted'
7382   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7383DELETE FROM t0_aux
7384WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7385DELETE FROM t1
7386WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7387CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
7388BEGIN
7389SET new.f_int1 = old.f_int1 + @max_row,
7390new.f_int2 = old.f_int2 - @max_row,
7391new.f_charbig = '####updated per update trigger####';
7392END|
7393UPDATE t1
7394SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
7395f_charbig = '####updated per update statement itself####';
7396Warnings:
7397Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
7398
7399# check trigger-9 success: 	1
7400DROP TRIGGER trg_2;
7401UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7402f_int2 = CAST(f_char1 AS SIGNED INT),
7403f_charbig = CONCAT('===',f_char1,'===');
7404Warnings:
7405Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
7406CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
7407BEGIN
7408SET new.f_int1 = new.f_int1 + @max_row,
7409new.f_int2 = new.f_int2 - @max_row,
7410new.f_charbig = '####updated per update trigger####';
7411END|
7412UPDATE t1
7413SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
7414f_charbig = '####updated per update statement itself####';
7415Warnings:
7416Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
7417
7418# check trigger-10 success: 	1
7419DROP TRIGGER trg_2;
7420UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7421f_int2 = CAST(f_char1 AS SIGNED INT),
7422f_charbig = CONCAT('===',f_char1,'===');
7423Warnings:
7424Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
7425CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
7426BEGIN
7427SET new.f_int1 = @my_max1 + @counter,
7428new.f_int2 = @my_min2 - @counter,
7429new.f_charbig = '####updated per insert trigger####';
7430SET @counter = @counter + 1;
7431END|
7432SET @counter = 1;
7433SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
7434Warnings:
7435Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
7436INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7437SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
7438CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
7439WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
7440ORDER BY f_int1;
7441DROP TRIGGER trg_3;
7442
7443# check trigger-11 success: 	1
7444Warnings:
7445Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
7446DELETE FROM t1
7447WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
7448AND f_int2 <> CAST(f_char1 AS SIGNED INT)
7449AND f_charbig = '####updated per insert trigger####';
7450CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
7451BEGIN
7452SET new.f_int1 = @my_max1 + @counter,
7453new.f_int2 = @my_min2 - @counter,
7454new.f_charbig = '####updated per insert trigger####';
7455SET @counter = @counter + 1;
7456END|
7457SET @counter = 1;
7458SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
7459Warnings:
7460Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
7461INSERT INTO t1 (f_char1, f_char2, f_charbig)
7462SELECT CAST(f_int1 AS CHAR),
7463CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
7464WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
7465ORDER BY f_int1;
7466DROP TRIGGER trg_3;
7467
7468# check trigger-12 success: 	1
7469Warnings:
7470Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
7471DELETE FROM t1
7472WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
7473AND f_int2 <> CAST(f_char1 AS SIGNED INT)
7474AND f_charbig = '####updated per insert trigger####';
7475ANALYZE  TABLE t1;
7476Table	Op	Msg_type	Msg_text
7477test.t1	analyze	status	OK
7478test.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.
7479CHECK    TABLE t1 EXTENDED;
7480Table	Op	Msg_type	Msg_text
7481test.t1	check	status	OK
7482test.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.
7483CHECKSUM TABLE t1 EXTENDED;
7484Table	Checksum
7485test.t1	<some_value>
7486OPTIMIZE TABLE t1;
7487Table	Op	Msg_type	Msg_text
7488test.t1	optimize	status	OK
7489test.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.
7490# check layout success:    1
7491REPAIR   TABLE t1 EXTENDED;
7492Table	Op	Msg_type	Msg_text
7493test.t1	repair	status	OK
7494test.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.
7495# check layout success:    1
7496TRUNCATE t1;
7497Warnings:
7498Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
7499
7500# check TRUNCATE success: 	1
7501# check layout success:    1
7502# End usability test (inc/partition_check.inc)
7503DROP TABLE t1;
7504CREATE TABLE t1 (
7505f_int1 INTEGER,
7506f_int2 INTEGER,
7507f_char1 CHAR(20),
7508f_char2 CHAR(20),
7509f_charbig VARCHAR(1000)
7510
7511)
7512PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int2 + 1)
7513(PARTITION part1 VALUES IN (0)
7514DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
7515INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'
7516(SUBPARTITION sp11
7517DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
7518INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
7519SUBPARTITION sp12
7520DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
7521INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'),
7522PARTITION part2 VALUES IN (1)
7523DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
7524INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'
7525(SUBPARTITION sp21
7526DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
7527INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
7528SUBPARTITION sp22
7529DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
7530INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'),
7531PARTITION part3 VALUES IN (2)
7532DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
7533INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'
7534(SUBPARTITION sp31,
7535SUBPARTITION sp32),
7536PARTITION part4 VALUES IN (NULL)
7537DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
7538INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'
7539(SUBPARTITION sp41
7540DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
7541INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
7542SUBPARTITION sp42
7543DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
7544INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'));
7545Warnings:
7546Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
7547INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
7548SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
7549Warnings:
7550Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
7551# Start usability test (inc/partition_check.inc)
7552create_command
7553SHOW CREATE TABLE t1;
7554Table	Create Table
7555t1	CREATE TABLE `t1` (
7556  `f_int1` int(11) DEFAULT NULL,
7557  `f_int2` int(11) DEFAULT NULL,
7558  `f_char1` char(20) DEFAULT NULL,
7559  `f_char2` char(20) DEFAULT NULL,
7560  `f_charbig` varchar(1000) DEFAULT NULL
7561) ENGINE=MyISAM DEFAULT CHARSET=latin1
7562/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
7563SUBPARTITION BY HASH (f_int2 + 1)
7564(PARTITION part1 VALUES IN (0)
7565 (SUBPARTITION sp11 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
7566  SUBPARTITION sp12 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM),
7567 PARTITION part2 VALUES IN (1)
7568 (SUBPARTITION sp21 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
7569  SUBPARTITION sp22 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM),
7570 PARTITION part3 VALUES IN (2)
7571 (SUBPARTITION sp31 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
7572  SUBPARTITION sp32 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM),
7573 PARTITION part4 VALUES IN (NULL)
7574 (SUBPARTITION sp41 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
7575  SUBPARTITION sp42 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM)) */
7576
7577unified filelist
7578t1#P#part1#SP#sp11.MYD
7579t1#P#part1#SP#sp11.MYI
7580t1#P#part1#SP#sp12.MYD
7581t1#P#part1#SP#sp12.MYI
7582t1#P#part2#SP#sp21.MYD
7583t1#P#part2#SP#sp21.MYI
7584t1#P#part2#SP#sp22.MYD
7585t1#P#part2#SP#sp22.MYI
7586t1#P#part3#SP#sp31.MYD
7587t1#P#part3#SP#sp31.MYI
7588t1#P#part3#SP#sp32.MYD
7589t1#P#part3#SP#sp32.MYI
7590t1#P#part4#SP#sp41.MYD
7591t1#P#part4#SP#sp41.MYI
7592t1#P#part4#SP#sp42.MYD
7593t1#P#part4#SP#sp42.MYI
7594t1.frm
7595t1.par
7596t1#P#part1#SP#sp11.MYD
7597t1#P#part1#SP#sp12.MYD
7598t1#P#part2#SP#sp21.MYD
7599t1#P#part2#SP#sp22.MYD
7600t1#P#part3#SP#sp31.MYD
7601t1#P#part3#SP#sp32.MYD
7602t1#P#part4#SP#sp41.MYD
7603t1#P#part4#SP#sp42.MYD
7604t1#P#part1#SP#sp11.MYI
7605t1#P#part1#SP#sp12.MYI
7606t1#P#part2#SP#sp21.MYI
7607t1#P#part2#SP#sp22.MYI
7608t1#P#part3#SP#sp31.MYI
7609t1#P#part3#SP#sp32.MYI
7610t1#P#part4#SP#sp41.MYI
7611t1#P#part4#SP#sp42.MYI
7612
7613# check prerequisites-1 success:    1
7614# check COUNT(*) success:    1
7615# check MIN/MAX(f_int1) success:    1
7616# check MIN/MAX(f_int2) success:    1
7617INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7618SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
7619CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
7620WHERE f_int1 IN (2,3);
7621# check prerequisites-3 success:    1
7622DELETE FROM t1 WHERE f_charbig = 'delete me';
7623# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
7624# check read via f_int1 success: 1
7625# check read via f_int2 success: 1
7626
7627# check multiple-1 success: 	1
7628DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
7629
7630# check multiple-2 success: 	1
7631INSERT INTO t1 SELECT * FROM t0_template
7632WHERE MOD(f_int1,3) = 0;
7633
7634# check multiple-3 success: 	1
7635UPDATE t1 SET f_int1 = f_int1 + @max_row
7636WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
7637AND @max_row_div2 + @max_row_div4;
7638
7639# check multiple-4 success: 	1
7640DELETE FROM t1
7641WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
7642AND @max_row_div2 + @max_row_div4 + @max_row;
7643
7644# check multiple-5 success: 	1
7645SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
7646INSERT INTO t1
7647SET f_int1 = @cur_value , f_int2 = @cur_value,
7648f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
7649f_charbig = '#SINGLE#';
7650
7651# check single-1 success: 	1
7652SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
7653INSERT INTO t1
7654SET f_int1 = @cur_value , f_int2 = @cur_value,
7655f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
7656f_charbig = '#SINGLE#';
7657
7658# check single-2 success: 	1
7659SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
7660SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
7661UPDATE t1 SET f_int1 = @cur_value2
7662WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
7663
7664# check single-3 success: 	1
7665SET @cur_value1= -1;
7666SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
7667UPDATE t1 SET f_int1 = @cur_value1
7668WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
7669
7670# check single-4 success: 	1
7671SELECT MAX(f_int1) INTO @cur_value FROM t1;
7672DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
7673
7674# check single-5 success: 	1
7675DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
7676
7677# check single-6 success: 	1
7678INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
7679
7680# check single-7 success: 	1
7681DELETE FROM t1 WHERE f_charbig = '#2147483647##';
7682DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
7683INSERT t1 SET f_int1 = 0 , f_int2 = 0,
7684f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
7685f_charbig = '#NULL#';
7686INSERT INTO t1
7687SET f_int1 = NULL , f_int2 = -@max_row,
7688f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
7689f_charbig = '#NULL#';
7690# check null success:    1
7691
7692# check null-1 success: 	1
7693UPDATE t1 SET f_int1 = -@max_row
7694WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
7695AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
7696
7697# check null-2 success: 	1
7698UPDATE t1 SET f_int1 = NULL
7699WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
7700AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
7701
7702# check null-3 success: 	1
7703DELETE FROM t1
7704WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
7705AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
7706
7707# check null-4 success: 	1
7708DELETE FROM t1
7709WHERE f_int1 = 0 AND f_int2 = 0
7710AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
7711AND f_charbig = '#NULL#';
7712SET AUTOCOMMIT= 0;
7713INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7714SELECT f_int1, f_int1, '', '', 'was inserted'
7715FROM t0_template source_tab
7716WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
7717
7718# check transactions-1 success: 	1
7719COMMIT WORK;
7720
7721# check transactions-2 success: 	1
7722ROLLBACK WORK;
7723
7724# check transactions-3 success: 	1
7725DELETE FROM t1 WHERE f_charbig = 'was inserted';
7726COMMIT WORK;
7727ROLLBACK WORK;
7728
7729# check transactions-4 success: 	1
7730INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7731SELECT f_int1, f_int1, '', '', 'was inserted'
7732FROM t0_template source_tab
7733WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
7734
7735# check transactions-5 success: 	1
7736ROLLBACK WORK;
7737Warnings:
7738Warning	1196	Some non-transactional changed tables couldn't be rolled back
7739
7740# check transactions-6 success: 	1
7741# INFO: Storage engine used for t1 seems to be not transactional.
7742COMMIT;
7743
7744# check transactions-7 success: 	1
7745DELETE FROM t1 WHERE f_charbig = 'was inserted';
7746COMMIT WORK;
7747SET @@session.sql_mode = 'traditional';
7748Warnings:
7749Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
7750SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
7751INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7752SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
7753'', '', 'was inserted' FROM t0_template
7754WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
7755ERROR 22012: Division by 0
7756COMMIT;
7757
7758# check transactions-8 success: 	1
7759# INFO: Storage engine used for t1 seems to be unable to revert
7760#       changes made by the failing statement.
7761SET @@session.sql_mode = '';
7762Warnings:
7763Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
7764SET AUTOCOMMIT= 1;
7765DELETE FROM t1 WHERE f_charbig = 'was inserted';
7766COMMIT WORK;
7767UPDATE t1 SET f_charbig = REPEAT('b', 1000);
7768
7769# check special-1 success: 	1
7770UPDATE t1 SET f_charbig = '';
7771
7772# check special-2 success: 	1
7773UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
7774INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
7775SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
7776WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7777INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7778SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7779'just inserted' FROM t0_template
7780WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7781CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
7782BEGIN
7783UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7784f_charbig = 'updated by trigger'
7785      WHERE f_int1 = new.f_int1;
7786END|
7787INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7788SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
7789WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7790
7791# check trigger-1 success: 	1
7792DROP TRIGGER trg_1;
7793UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7794f_int2 = CAST(f_char1 AS SIGNED INT),
7795f_charbig = 'just inserted'
7796   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7797DELETE FROM t0_aux
7798WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7799INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7800SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7801'just inserted' FROM t0_template
7802WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7803CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
7804BEGIN
7805UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7806f_charbig = 'updated by trigger'
7807      WHERE f_int1 = new.f_int1;
7808END|
7809INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7810SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
7811WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7812
7813# check trigger-2 success: 	1
7814DROP TRIGGER trg_1;
7815UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7816f_int2 = CAST(f_char1 AS SIGNED INT),
7817f_charbig = 'just inserted'
7818   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7819DELETE FROM t0_aux
7820WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7821INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7822SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7823'just inserted' FROM t0_template
7824WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7825CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
7826BEGIN
7827UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7828f_charbig = 'updated by trigger'
7829      WHERE f_int1 = new.f_int1;
7830END|
7831UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
7832WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7833
7834# check trigger-3 success: 	1
7835DROP TRIGGER trg_1;
7836UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7837f_int2 = CAST(f_char1 AS SIGNED INT),
7838f_charbig = 'just inserted'
7839   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7840DELETE FROM t0_aux
7841WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7842INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7843SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7844'just inserted' FROM t0_template
7845WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7846CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
7847BEGIN
7848UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7849f_charbig = 'updated by trigger'
7850      WHERE f_int1 = - old.f_int1;
7851END|
7852UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
7853WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7854
7855# check trigger-4 success: 	1
7856DROP TRIGGER trg_1;
7857UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7858f_int2 = CAST(f_char1 AS SIGNED INT),
7859f_charbig = 'just inserted'
7860   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7861DELETE FROM t0_aux
7862WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7863INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7864SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7865'just inserted' FROM t0_template
7866WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7867CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
7868BEGIN
7869UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7870f_charbig = 'updated by trigger'
7871      WHERE f_int1 = new.f_int1;
7872END|
7873UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
7874WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7875
7876# check trigger-5 success: 	1
7877DROP TRIGGER trg_1;
7878UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7879f_int2 = CAST(f_char1 AS SIGNED INT),
7880f_charbig = 'just inserted'
7881   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7882DELETE FROM t0_aux
7883WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7884INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7885SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7886'just inserted' FROM t0_template
7887WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7888CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
7889BEGIN
7890UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7891f_charbig = 'updated by trigger'
7892      WHERE f_int1 = - old.f_int1;
7893END|
7894UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
7895WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7896
7897# check trigger-6 success: 	1
7898DROP TRIGGER trg_1;
7899UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7900f_int2 = CAST(f_char1 AS SIGNED INT),
7901f_charbig = 'just inserted'
7902   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7903DELETE FROM t0_aux
7904WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7905INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7906SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7907'just inserted' FROM t0_template
7908WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7909CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
7910BEGIN
7911UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7912f_charbig = 'updated by trigger'
7913      WHERE f_int1 = - old.f_int1;
7914END|
7915DELETE FROM t0_aux
7916WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7917
7918# check trigger-7 success: 	1
7919DROP TRIGGER trg_1;
7920UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7921f_int2 = CAST(f_char1 AS SIGNED INT),
7922f_charbig = 'just inserted'
7923   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7924DELETE FROM t0_aux
7925WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7926INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7927SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7928'just inserted' FROM t0_template
7929WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7930CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
7931BEGIN
7932UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7933f_charbig = 'updated by trigger'
7934      WHERE f_int1 = - old.f_int1;
7935END|
7936DELETE FROM t0_aux
7937WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7938
7939# check trigger-8 success: 	1
7940DROP TRIGGER trg_1;
7941UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7942f_int2 = CAST(f_char1 AS SIGNED INT),
7943f_charbig = 'just inserted'
7944   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7945DELETE FROM t0_aux
7946WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7947DELETE FROM t1
7948WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7949CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
7950BEGIN
7951SET new.f_int1 = old.f_int1 + @max_row,
7952new.f_int2 = old.f_int2 - @max_row,
7953new.f_charbig = '####updated per update trigger####';
7954END|
7955UPDATE t1
7956SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
7957f_charbig = '####updated per update statement itself####';
7958Warnings:
7959Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
7960
7961# check trigger-9 success: 	1
7962DROP TRIGGER trg_2;
7963UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7964f_int2 = CAST(f_char1 AS SIGNED INT),
7965f_charbig = CONCAT('===',f_char1,'===');
7966Warnings:
7967Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
7968CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
7969BEGIN
7970SET new.f_int1 = new.f_int1 + @max_row,
7971new.f_int2 = new.f_int2 - @max_row,
7972new.f_charbig = '####updated per update trigger####';
7973END|
7974UPDATE t1
7975SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
7976f_charbig = '####updated per update statement itself####';
7977Warnings:
7978Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
7979
7980# check trigger-10 success: 	1
7981DROP TRIGGER trg_2;
7982UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7983f_int2 = CAST(f_char1 AS SIGNED INT),
7984f_charbig = CONCAT('===',f_char1,'===');
7985Warnings:
7986Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
7987CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
7988BEGIN
7989SET new.f_int1 = @my_max1 + @counter,
7990new.f_int2 = @my_min2 - @counter,
7991new.f_charbig = '####updated per insert trigger####';
7992SET @counter = @counter + 1;
7993END|
7994SET @counter = 1;
7995SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
7996Warnings:
7997Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
7998INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7999SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
8000CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
8001WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
8002ORDER BY f_int1;
8003DROP TRIGGER trg_3;
8004
8005# check trigger-11 success: 	1
8006Warnings:
8007Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
8008DELETE FROM t1
8009WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
8010AND f_int2 <> CAST(f_char1 AS SIGNED INT)
8011AND f_charbig = '####updated per insert trigger####';
8012CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
8013BEGIN
8014SET new.f_int1 = @my_max1 + @counter,
8015new.f_int2 = @my_min2 - @counter,
8016new.f_charbig = '####updated per insert trigger####';
8017SET @counter = @counter + 1;
8018END|
8019SET @counter = 1;
8020SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
8021Warnings:
8022Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
8023INSERT INTO t1 (f_char1, f_char2, f_charbig)
8024SELECT CAST(f_int1 AS CHAR),
8025CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
8026WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
8027ORDER BY f_int1;
8028DROP TRIGGER trg_3;
8029
8030# check trigger-12 success: 	1
8031Warnings:
8032Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
8033DELETE FROM t1
8034WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
8035AND f_int2 <> CAST(f_char1 AS SIGNED INT)
8036AND f_charbig = '####updated per insert trigger####';
8037ANALYZE  TABLE t1;
8038Table	Op	Msg_type	Msg_text
8039test.t1	analyze	status	OK
8040test.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.
8041CHECK    TABLE t1 EXTENDED;
8042Table	Op	Msg_type	Msg_text
8043test.t1	check	status	OK
8044test.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.
8045CHECKSUM TABLE t1 EXTENDED;
8046Table	Checksum
8047test.t1	<some_value>
8048OPTIMIZE TABLE t1;
8049Table	Op	Msg_type	Msg_text
8050test.t1	optimize	status	OK
8051test.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.
8052# check layout success:    1
8053REPAIR   TABLE t1 EXTENDED;
8054Table	Op	Msg_type	Msg_text
8055test.t1	repair	status	OK
8056test.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.
8057# check layout success:    1
8058TRUNCATE t1;
8059Warnings:
8060Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
8061
8062# check TRUNCATE success: 	1
8063# check layout success:    1
8064# End usability test (inc/partition_check.inc)
8065DROP TABLE t1;
8066CREATE TABLE t1 (
8067f_int1 INTEGER,
8068f_int2 INTEGER,
8069f_char1 CHAR(20),
8070f_char2 CHAR(20),
8071f_charbig VARCHAR(1000)
8072
8073)
8074PARTITION BY LIST(ABS(MOD(f_int1,2)))
8075SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3
8076(PARTITION part1 VALUES IN (0)
8077DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
8078INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
8079PARTITION part2 VALUES IN (1)
8080DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
8081INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
8082PARTITION part3 VALUES IN (NULL)
8083DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
8084INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir');
8085Warnings:
8086Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
8087INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
8088SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
8089Warnings:
8090Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
8091# Start usability test (inc/partition_check.inc)
8092create_command
8093SHOW CREATE TABLE t1;
8094Table	Create Table
8095t1	CREATE TABLE `t1` (
8096  `f_int1` int(11) DEFAULT NULL,
8097  `f_int2` int(11) DEFAULT NULL,
8098  `f_char1` char(20) DEFAULT NULL,
8099  `f_char2` char(20) DEFAULT NULL,
8100  `f_charbig` varchar(1000) DEFAULT NULL
8101) ENGINE=MyISAM DEFAULT CHARSET=latin1
8102/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
8103SUBPARTITION BY KEY (f_int2)
8104SUBPARTITIONS 3
8105(PARTITION part1 VALUES IN (0) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
8106 PARTITION part2 VALUES IN (1) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
8107 PARTITION part3 VALUES IN (NULL) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM) */
8108
8109unified filelist
8110t1#P#part1#SP#part1sp0.MYD
8111t1#P#part1#SP#part1sp0.MYI
8112t1#P#part1#SP#part1sp1.MYD
8113t1#P#part1#SP#part1sp1.MYI
8114t1#P#part1#SP#part1sp2.MYD
8115t1#P#part1#SP#part1sp2.MYI
8116t1#P#part2#SP#part2sp0.MYD
8117t1#P#part2#SP#part2sp0.MYI
8118t1#P#part2#SP#part2sp1.MYD
8119t1#P#part2#SP#part2sp1.MYI
8120t1#P#part2#SP#part2sp2.MYD
8121t1#P#part2#SP#part2sp2.MYI
8122t1#P#part3#SP#part3sp0.MYD
8123t1#P#part3#SP#part3sp0.MYI
8124t1#P#part3#SP#part3sp1.MYD
8125t1#P#part3#SP#part3sp1.MYI
8126t1#P#part3#SP#part3sp2.MYD
8127t1#P#part3#SP#part3sp2.MYI
8128t1.frm
8129t1.par
8130t1#P#part1#SP#part1sp0.MYD
8131t1#P#part1#SP#part1sp1.MYD
8132t1#P#part1#SP#part1sp2.MYD
8133t1#P#part2#SP#part2sp0.MYD
8134t1#P#part2#SP#part2sp1.MYD
8135t1#P#part2#SP#part2sp2.MYD
8136t1#P#part3#SP#part3sp0.MYD
8137t1#P#part3#SP#part3sp1.MYD
8138t1#P#part3#SP#part3sp2.MYD
8139t1#P#part1#SP#part1sp0.MYI
8140t1#P#part1#SP#part1sp1.MYI
8141t1#P#part1#SP#part1sp2.MYI
8142t1#P#part2#SP#part2sp0.MYI
8143t1#P#part2#SP#part2sp1.MYI
8144t1#P#part2#SP#part2sp2.MYI
8145t1#P#part3#SP#part3sp0.MYI
8146t1#P#part3#SP#part3sp1.MYI
8147t1#P#part3#SP#part3sp2.MYI
8148
8149# check prerequisites-1 success:    1
8150# check COUNT(*) success:    1
8151# check MIN/MAX(f_int1) success:    1
8152# check MIN/MAX(f_int2) success:    1
8153INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8154SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
8155CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
8156WHERE f_int1 IN (2,3);
8157# check prerequisites-3 success:    1
8158DELETE FROM t1 WHERE f_charbig = 'delete me';
8159# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
8160# check read via f_int1 success: 1
8161# check read via f_int2 success: 1
8162
8163# check multiple-1 success: 	1
8164DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
8165
8166# check multiple-2 success: 	1
8167INSERT INTO t1 SELECT * FROM t0_template
8168WHERE MOD(f_int1,3) = 0;
8169
8170# check multiple-3 success: 	1
8171UPDATE t1 SET f_int1 = f_int1 + @max_row
8172WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
8173AND @max_row_div2 + @max_row_div4;
8174
8175# check multiple-4 success: 	1
8176DELETE FROM t1
8177WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
8178AND @max_row_div2 + @max_row_div4 + @max_row;
8179
8180# check multiple-5 success: 	1
8181SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
8182INSERT INTO t1
8183SET f_int1 = @cur_value , f_int2 = @cur_value,
8184f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
8185f_charbig = '#SINGLE#';
8186
8187# check single-1 success: 	1
8188SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
8189INSERT INTO t1
8190SET f_int1 = @cur_value , f_int2 = @cur_value,
8191f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
8192f_charbig = '#SINGLE#';
8193
8194# check single-2 success: 	1
8195SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
8196SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
8197UPDATE t1 SET f_int1 = @cur_value2
8198WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
8199
8200# check single-3 success: 	1
8201SET @cur_value1= -1;
8202SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
8203UPDATE t1 SET f_int1 = @cur_value1
8204WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
8205
8206# check single-4 success: 	1
8207SELECT MAX(f_int1) INTO @cur_value FROM t1;
8208DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
8209
8210# check single-5 success: 	1
8211DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
8212
8213# check single-6 success: 	1
8214INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
8215
8216# check single-7 success: 	1
8217DELETE FROM t1 WHERE f_charbig = '#2147483647##';
8218DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
8219INSERT t1 SET f_int1 = 0 , f_int2 = 0,
8220f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
8221f_charbig = '#NULL#';
8222INSERT INTO t1
8223SET f_int1 = NULL , f_int2 = -@max_row,
8224f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
8225f_charbig = '#NULL#';
8226# check null success:    1
8227
8228# check null-1 success: 	1
8229UPDATE t1 SET f_int1 = -@max_row
8230WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
8231AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
8232
8233# check null-2 success: 	1
8234UPDATE t1 SET f_int1 = NULL
8235WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
8236AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
8237
8238# check null-3 success: 	1
8239DELETE FROM t1
8240WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
8241AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
8242
8243# check null-4 success: 	1
8244DELETE FROM t1
8245WHERE f_int1 = 0 AND f_int2 = 0
8246AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
8247AND f_charbig = '#NULL#';
8248SET AUTOCOMMIT= 0;
8249INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8250SELECT f_int1, f_int1, '', '', 'was inserted'
8251FROM t0_template source_tab
8252WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
8253
8254# check transactions-1 success: 	1
8255COMMIT WORK;
8256
8257# check transactions-2 success: 	1
8258ROLLBACK WORK;
8259
8260# check transactions-3 success: 	1
8261DELETE FROM t1 WHERE f_charbig = 'was inserted';
8262COMMIT WORK;
8263ROLLBACK WORK;
8264
8265# check transactions-4 success: 	1
8266INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8267SELECT f_int1, f_int1, '', '', 'was inserted'
8268FROM t0_template source_tab
8269WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
8270
8271# check transactions-5 success: 	1
8272ROLLBACK WORK;
8273Warnings:
8274Warning	1196	Some non-transactional changed tables couldn't be rolled back
8275
8276# check transactions-6 success: 	1
8277# INFO: Storage engine used for t1 seems to be not transactional.
8278COMMIT;
8279
8280# check transactions-7 success: 	1
8281DELETE FROM t1 WHERE f_charbig = 'was inserted';
8282COMMIT WORK;
8283SET @@session.sql_mode = 'traditional';
8284Warnings:
8285Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
8286SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
8287INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8288SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
8289'', '', 'was inserted' FROM t0_template
8290WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
8291ERROR 22012: Division by 0
8292COMMIT;
8293
8294# check transactions-8 success: 	1
8295# INFO: Storage engine used for t1 seems to be unable to revert
8296#       changes made by the failing statement.
8297SET @@session.sql_mode = '';
8298Warnings:
8299Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
8300SET AUTOCOMMIT= 1;
8301DELETE FROM t1 WHERE f_charbig = 'was inserted';
8302COMMIT WORK;
8303UPDATE t1 SET f_charbig = REPEAT('b', 1000);
8304
8305# check special-1 success: 	1
8306UPDATE t1 SET f_charbig = '';
8307
8308# check special-2 success: 	1
8309UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
8310INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
8311SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
8312WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8313INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8314SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8315'just inserted' FROM t0_template
8316WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8317CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
8318BEGIN
8319UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8320f_charbig = 'updated by trigger'
8321      WHERE f_int1 = new.f_int1;
8322END|
8323INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8324SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
8325WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8326
8327# check trigger-1 success: 	1
8328DROP TRIGGER trg_1;
8329UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8330f_int2 = CAST(f_char1 AS SIGNED INT),
8331f_charbig = 'just inserted'
8332   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8333DELETE FROM t0_aux
8334WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8335INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8336SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8337'just inserted' FROM t0_template
8338WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8339CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
8340BEGIN
8341UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8342f_charbig = 'updated by trigger'
8343      WHERE f_int1 = new.f_int1;
8344END|
8345INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8346SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
8347WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8348
8349# check trigger-2 success: 	1
8350DROP TRIGGER trg_1;
8351UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8352f_int2 = CAST(f_char1 AS SIGNED INT),
8353f_charbig = 'just inserted'
8354   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8355DELETE FROM t0_aux
8356WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8357INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8358SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8359'just inserted' FROM t0_template
8360WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8361CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
8362BEGIN
8363UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8364f_charbig = 'updated by trigger'
8365      WHERE f_int1 = new.f_int1;
8366END|
8367UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
8368WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8369
8370# check trigger-3 success: 	1
8371DROP TRIGGER trg_1;
8372UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8373f_int2 = CAST(f_char1 AS SIGNED INT),
8374f_charbig = 'just inserted'
8375   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8376DELETE FROM t0_aux
8377WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8378INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8379SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8380'just inserted' FROM t0_template
8381WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8382CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
8383BEGIN
8384UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8385f_charbig = 'updated by trigger'
8386      WHERE f_int1 = - old.f_int1;
8387END|
8388UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
8389WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8390
8391# check trigger-4 success: 	1
8392DROP TRIGGER trg_1;
8393UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8394f_int2 = CAST(f_char1 AS SIGNED INT),
8395f_charbig = 'just inserted'
8396   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8397DELETE FROM t0_aux
8398WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8399INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8400SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8401'just inserted' FROM t0_template
8402WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8403CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
8404BEGIN
8405UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8406f_charbig = 'updated by trigger'
8407      WHERE f_int1 = new.f_int1;
8408END|
8409UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
8410WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8411
8412# check trigger-5 success: 	1
8413DROP TRIGGER trg_1;
8414UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8415f_int2 = CAST(f_char1 AS SIGNED INT),
8416f_charbig = 'just inserted'
8417   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8418DELETE FROM t0_aux
8419WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8420INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8421SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8422'just inserted' FROM t0_template
8423WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8424CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
8425BEGIN
8426UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8427f_charbig = 'updated by trigger'
8428      WHERE f_int1 = - old.f_int1;
8429END|
8430UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
8431WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8432
8433# check trigger-6 success: 	1
8434DROP TRIGGER trg_1;
8435UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8436f_int2 = CAST(f_char1 AS SIGNED INT),
8437f_charbig = 'just inserted'
8438   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8439DELETE FROM t0_aux
8440WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8441INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8442SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8443'just inserted' FROM t0_template
8444WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8445CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
8446BEGIN
8447UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8448f_charbig = 'updated by trigger'
8449      WHERE f_int1 = - old.f_int1;
8450END|
8451DELETE FROM t0_aux
8452WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8453
8454# check trigger-7 success: 	1
8455DROP TRIGGER trg_1;
8456UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8457f_int2 = CAST(f_char1 AS SIGNED INT),
8458f_charbig = 'just inserted'
8459   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8460DELETE FROM t0_aux
8461WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8462INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8463SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8464'just inserted' FROM t0_template
8465WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8466CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
8467BEGIN
8468UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8469f_charbig = 'updated by trigger'
8470      WHERE f_int1 = - old.f_int1;
8471END|
8472DELETE FROM t0_aux
8473WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8474
8475# check trigger-8 success: 	1
8476DROP TRIGGER trg_1;
8477UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8478f_int2 = CAST(f_char1 AS SIGNED INT),
8479f_charbig = 'just inserted'
8480   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8481DELETE FROM t0_aux
8482WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8483DELETE FROM t1
8484WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8485CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
8486BEGIN
8487SET new.f_int1 = old.f_int1 + @max_row,
8488new.f_int2 = old.f_int2 - @max_row,
8489new.f_charbig = '####updated per update trigger####';
8490END|
8491UPDATE t1
8492SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
8493f_charbig = '####updated per update statement itself####';
8494Warnings:
8495Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
8496
8497# check trigger-9 success: 	1
8498DROP TRIGGER trg_2;
8499UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8500f_int2 = CAST(f_char1 AS SIGNED INT),
8501f_charbig = CONCAT('===',f_char1,'===');
8502Warnings:
8503Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
8504CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
8505BEGIN
8506SET new.f_int1 = new.f_int1 + @max_row,
8507new.f_int2 = new.f_int2 - @max_row,
8508new.f_charbig = '####updated per update trigger####';
8509END|
8510UPDATE t1
8511SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
8512f_charbig = '####updated per update statement itself####';
8513Warnings:
8514Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
8515
8516# check trigger-10 success: 	1
8517DROP TRIGGER trg_2;
8518UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8519f_int2 = CAST(f_char1 AS SIGNED INT),
8520f_charbig = CONCAT('===',f_char1,'===');
8521Warnings:
8522Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
8523CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
8524BEGIN
8525SET new.f_int1 = @my_max1 + @counter,
8526new.f_int2 = @my_min2 - @counter,
8527new.f_charbig = '####updated per insert trigger####';
8528SET @counter = @counter + 1;
8529END|
8530SET @counter = 1;
8531SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
8532Warnings:
8533Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
8534INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8535SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
8536CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
8537WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
8538ORDER BY f_int1;
8539DROP TRIGGER trg_3;
8540
8541# check trigger-11 success: 	1
8542Warnings:
8543Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
8544DELETE FROM t1
8545WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
8546AND f_int2 <> CAST(f_char1 AS SIGNED INT)
8547AND f_charbig = '####updated per insert trigger####';
8548CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
8549BEGIN
8550SET new.f_int1 = @my_max1 + @counter,
8551new.f_int2 = @my_min2 - @counter,
8552new.f_charbig = '####updated per insert trigger####';
8553SET @counter = @counter + 1;
8554END|
8555SET @counter = 1;
8556SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
8557Warnings:
8558Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
8559INSERT INTO t1 (f_char1, f_char2, f_charbig)
8560SELECT CAST(f_int1 AS CHAR),
8561CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
8562WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
8563ORDER BY f_int1;
8564DROP TRIGGER trg_3;
8565
8566# check trigger-12 success: 	1
8567Warnings:
8568Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
8569DELETE FROM t1
8570WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
8571AND f_int2 <> CAST(f_char1 AS SIGNED INT)
8572AND f_charbig = '####updated per insert trigger####';
8573ANALYZE  TABLE t1;
8574Table	Op	Msg_type	Msg_text
8575test.t1	analyze	status	OK
8576test.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.
8577CHECK    TABLE t1 EXTENDED;
8578Table	Op	Msg_type	Msg_text
8579test.t1	check	status	OK
8580test.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.
8581CHECKSUM TABLE t1 EXTENDED;
8582Table	Checksum
8583test.t1	<some_value>
8584OPTIMIZE TABLE t1;
8585Table	Op	Msg_type	Msg_text
8586test.t1	optimize	status	OK
8587test.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.
8588# check layout success:    1
8589REPAIR   TABLE t1 EXTENDED;
8590Table	Op	Msg_type	Msg_text
8591test.t1	repair	status	OK
8592test.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.
8593# check layout success:    1
8594TRUNCATE t1;
8595Warnings:
8596Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
8597
8598# check TRUNCATE success: 	1
8599# check layout success:    1
8600# End usability test (inc/partition_check.inc)
8601DROP TABLE t1;
8602#------------------------------------------------------------------------
8603#  2   Tables with PRIMARY KEY and/or UNIQUE INDEXes
8604#        The partitioning function contains one column.
8605#------------------------------------------------------------------------
8606#  2.5 PRIMARY KEY + UNIQUE INDEX consisting of two columns
8607DROP TABLE IF EXISTS t1;
8608CREATE TABLE t1 (
8609f_int1 INTEGER,
8610f_int2 INTEGER,
8611f_char1 CHAR(20),
8612f_char2 CHAR(20),
8613f_charbig VARCHAR(1000)
8614, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
8615)
8616PARTITION BY HASH(f_int1) PARTITIONS 2
8617(PARTITION p1
8618DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
8619INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
8620PARTITION p2
8621DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
8622INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir');
8623Warnings:
8624Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
8625INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
8626SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
8627Warnings:
8628Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
8629# Start usability test (inc/partition_check.inc)
8630create_command
8631SHOW CREATE TABLE t1;
8632Table	Create Table
8633t1	CREATE TABLE `t1` (
8634  `f_int1` int(11) DEFAULT NULL,
8635  `f_int2` int(11) DEFAULT NULL,
8636  `f_char1` char(20) DEFAULT NULL,
8637  `f_char2` char(20) DEFAULT NULL,
8638  `f_charbig` varchar(1000) DEFAULT NULL,
8639  UNIQUE KEY `uidx1` (`f_int1`,`f_int2`),
8640  UNIQUE KEY `uidx2` (`f_int2`,`f_int1`)
8641) ENGINE=MyISAM DEFAULT CHARSET=latin1
8642/*!50100 PARTITION BY HASH (f_int1)
8643(PARTITION p1 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
8644 PARTITION p2 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM) */
8645
8646unified filelist
8647t1#P#p1.MYD
8648t1#P#p1.MYI
8649t1#P#p2.MYD
8650t1#P#p2.MYI
8651t1.frm
8652t1.par
8653t1#P#p1.MYD
8654t1#P#p2.MYD
8655t1#P#p1.MYI
8656t1#P#p2.MYI
8657
8658# check prerequisites-1 success:    1
8659# check COUNT(*) success:    1
8660# check MIN/MAX(f_int1) success:    1
8661# check MIN/MAX(f_int2) success:    1
8662INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8663SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
8664CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
8665WHERE f_int1 IN (2,3);
8666ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
8667# check prerequisites-3 success:    1
8668# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
8669INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8670SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
8671CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
8672WHERE f_int1 IN (2,3);
8673DELETE FROM t1 WHERE f_charbig = 'delete me';
8674INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8675SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
8676CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
8677WHERE f_int1 IN (2,3);
8678DELETE FROM t1 WHERE f_charbig = 'delete me';
8679# check read via f_int1 success: 1
8680# check read via f_int2 success: 1
8681
8682# check multiple-1 success: 	1
8683DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
8684
8685# check multiple-2 success: 	1
8686INSERT INTO t1 SELECT * FROM t0_template
8687WHERE MOD(f_int1,3) = 0;
8688
8689# check multiple-3 success: 	1
8690UPDATE t1 SET f_int1 = f_int1 + @max_row
8691WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
8692AND @max_row_div2 + @max_row_div4;
8693
8694# check multiple-4 success: 	1
8695DELETE FROM t1
8696WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
8697AND @max_row_div2 + @max_row_div4 + @max_row;
8698
8699# check multiple-5 success: 	1
8700SELECT COUNT(*) INTO @try_count FROM t0_template
8701WHERE MOD(f_int1,3) = 0
8702AND f_int1 BETWEEN @max_row_div2 AND @max_row;
8703SELECT COUNT(*) INTO @clash_count
8704FROM t1 INNER JOIN t0_template USING(f_int1)
8705WHERE MOD(f_int1,3) = 0
8706AND f_int1 BETWEEN @max_row_div2 AND @max_row;
8707SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
8708INSERT INTO t1
8709SET f_int1 = @cur_value , f_int2 = @cur_value,
8710f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
8711f_charbig = '#SINGLE#';
8712
8713# check single-1 success: 	1
8714SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
8715INSERT INTO t1
8716SET f_int1 = @cur_value , f_int2 = @cur_value,
8717f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
8718f_charbig = '#SINGLE#';
8719
8720# check single-2 success: 	1
8721SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
8722SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
8723UPDATE t1 SET f_int1 = @cur_value2
8724WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
8725
8726# check single-3 success: 	1
8727SET @cur_value1= -1;
8728SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
8729UPDATE t1 SET f_int1 = @cur_value1
8730WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
8731
8732# check single-4 success: 	1
8733SELECT MAX(f_int1) INTO @cur_value FROM t1;
8734DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
8735
8736# check single-5 success: 	1
8737DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
8738
8739# check single-6 success: 	1
8740INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
8741
8742# check single-7 success: 	1
8743DELETE FROM t1 WHERE f_charbig = '#2147483647##';
8744DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
8745INSERT t1 SET f_int1 = 0 , f_int2 = 0,
8746f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
8747f_charbig = '#NULL#';
8748INSERT INTO t1
8749SET f_int1 = NULL , f_int2 = -@max_row,
8750f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
8751f_charbig = '#NULL#';
8752# check null success:    1
8753
8754# check null-1 success: 	1
8755UPDATE t1 SET f_int1 = -@max_row
8756WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
8757AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
8758
8759# check null-2 success: 	1
8760UPDATE t1 SET f_int1 = NULL
8761WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
8762AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
8763
8764# check null-3 success: 	1
8765DELETE FROM t1
8766WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
8767AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
8768
8769# check null-4 success: 	1
8770DELETE FROM t1
8771WHERE f_int1 = 0 AND f_int2 = 0
8772AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
8773AND f_charbig = '#NULL#';
8774INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8775SELECT f_int1, f_int1, '', '', 'was inserted'
8776   FROM t0_template source_tab
8777WHERE MOD(f_int1,3) = 0
8778AND f_int1 BETWEEN @max_row_div2 AND @max_row
8779ON DUPLICATE KEY
8780UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
8781f_int2 = 2 * @max_row + source_tab.f_int1,
8782f_charbig = 'was updated';
8783
8784# check unique-1-a success: 	1
8785
8786# check unique-1-b success: 	1
8787DELETE FROM t1 WHERE f_charbig = 'was inserted';
8788UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8789f_int2 = CAST(f_char1 AS SIGNED INT),
8790f_charbig = CONCAT('===',f_char1,'===')
8791WHERE f_charbig = 'was updated';
8792REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8793SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
8794   FROM t0_template source_tab
8795WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
8796
8797# check replace success: 	1
8798DELETE FROM t1
8799WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
8800DELETE FROM t1
8801WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
8802f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
8803UPDATE t1 SET f_int2 = f_int1,
8804f_char1 = CAST(f_int1 AS CHAR),
8805f_char2 = CAST(f_int1 AS CHAR),
8806f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
8807WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
8808SET AUTOCOMMIT= 0;
8809INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8810SELECT f_int1, f_int1, '', '', 'was inserted'
8811FROM t0_template source_tab
8812WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
8813
8814# check transactions-1 success: 	1
8815COMMIT WORK;
8816
8817# check transactions-2 success: 	1
8818ROLLBACK WORK;
8819
8820# check transactions-3 success: 	1
8821DELETE FROM t1 WHERE f_charbig = 'was inserted';
8822COMMIT WORK;
8823ROLLBACK WORK;
8824
8825# check transactions-4 success: 	1
8826INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8827SELECT f_int1, f_int1, '', '', 'was inserted'
8828FROM t0_template source_tab
8829WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
8830
8831# check transactions-5 success: 	1
8832ROLLBACK WORK;
8833Warnings:
8834Warning	1196	Some non-transactional changed tables couldn't be rolled back
8835
8836# check transactions-6 success: 	1
8837# INFO: Storage engine used for t1 seems to be not transactional.
8838COMMIT;
8839
8840# check transactions-7 success: 	1
8841DELETE FROM t1 WHERE f_charbig = 'was inserted';
8842COMMIT WORK;
8843SET @@session.sql_mode = 'traditional';
8844Warnings:
8845Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
8846SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
8847INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8848SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
8849'', '', 'was inserted' FROM t0_template
8850WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
8851ERROR 22012: Division by 0
8852COMMIT;
8853
8854# check transactions-8 success: 	1
8855# INFO: Storage engine used for t1 seems to be unable to revert
8856#       changes made by the failing statement.
8857SET @@session.sql_mode = '';
8858Warnings:
8859Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
8860SET AUTOCOMMIT= 1;
8861DELETE FROM t1 WHERE f_charbig = 'was inserted';
8862COMMIT WORK;
8863UPDATE t1 SET f_charbig = REPEAT('b', 1000);
8864
8865# check special-1 success: 	1
8866UPDATE t1 SET f_charbig = '';
8867
8868# check special-2 success: 	1
8869UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
8870INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
8871SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
8872WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8873INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8874SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8875'just inserted' FROM t0_template
8876WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8877CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
8878BEGIN
8879UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8880f_charbig = 'updated by trigger'
8881      WHERE f_int1 = new.f_int1;
8882END|
8883INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8884SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
8885WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8886
8887# check trigger-1 success: 	1
8888DROP TRIGGER trg_1;
8889UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8890f_int2 = CAST(f_char1 AS SIGNED INT),
8891f_charbig = 'just inserted'
8892   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8893DELETE FROM t0_aux
8894WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8895INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8896SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8897'just inserted' FROM t0_template
8898WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8899CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
8900BEGIN
8901UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8902f_charbig = 'updated by trigger'
8903      WHERE f_int1 = new.f_int1;
8904END|
8905INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8906SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
8907WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8908
8909# check trigger-2 success: 	1
8910DROP TRIGGER trg_1;
8911UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8912f_int2 = CAST(f_char1 AS SIGNED INT),
8913f_charbig = 'just inserted'
8914   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8915DELETE FROM t0_aux
8916WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8917INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8918SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8919'just inserted' FROM t0_template
8920WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8921CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
8922BEGIN
8923UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8924f_charbig = 'updated by trigger'
8925      WHERE f_int1 = new.f_int1;
8926END|
8927UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
8928WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8929
8930# check trigger-3 success: 	1
8931DROP TRIGGER trg_1;
8932UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8933f_int2 = CAST(f_char1 AS SIGNED INT),
8934f_charbig = 'just inserted'
8935   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8936DELETE FROM t0_aux
8937WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8938INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8939SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8940'just inserted' FROM t0_template
8941WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8942CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
8943BEGIN
8944UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8945f_charbig = 'updated by trigger'
8946      WHERE f_int1 = - old.f_int1;
8947END|
8948UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
8949WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8950
8951# check trigger-4 success: 	1
8952DROP TRIGGER trg_1;
8953UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8954f_int2 = CAST(f_char1 AS SIGNED INT),
8955f_charbig = 'just inserted'
8956   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8957DELETE FROM t0_aux
8958WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8959INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8960SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8961'just inserted' FROM t0_template
8962WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8963CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
8964BEGIN
8965UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8966f_charbig = 'updated by trigger'
8967      WHERE f_int1 = new.f_int1;
8968END|
8969UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
8970WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8971
8972# check trigger-5 success: 	1
8973DROP TRIGGER trg_1;
8974UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8975f_int2 = CAST(f_char1 AS SIGNED INT),
8976f_charbig = 'just inserted'
8977   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8978DELETE FROM t0_aux
8979WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8980INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8981SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8982'just inserted' FROM t0_template
8983WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8984CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
8985BEGIN
8986UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8987f_charbig = 'updated by trigger'
8988      WHERE f_int1 = - old.f_int1;
8989END|
8990UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
8991WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8992
8993# check trigger-6 success: 	1
8994DROP TRIGGER trg_1;
8995UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8996f_int2 = CAST(f_char1 AS SIGNED INT),
8997f_charbig = 'just inserted'
8998   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8999DELETE FROM t0_aux
9000WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9001INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9002SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9003'just inserted' FROM t0_template
9004WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9005CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
9006BEGIN
9007UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9008f_charbig = 'updated by trigger'
9009      WHERE f_int1 = - old.f_int1;
9010END|
9011DELETE FROM t0_aux
9012WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9013
9014# check trigger-7 success: 	1
9015DROP TRIGGER trg_1;
9016UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9017f_int2 = CAST(f_char1 AS SIGNED INT),
9018f_charbig = 'just inserted'
9019   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9020DELETE FROM t0_aux
9021WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9022INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9023SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9024'just inserted' FROM t0_template
9025WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9026CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
9027BEGIN
9028UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9029f_charbig = 'updated by trigger'
9030      WHERE f_int1 = - old.f_int1;
9031END|
9032DELETE FROM t0_aux
9033WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9034
9035# check trigger-8 success: 	1
9036DROP TRIGGER trg_1;
9037UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9038f_int2 = CAST(f_char1 AS SIGNED INT),
9039f_charbig = 'just inserted'
9040   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9041DELETE FROM t0_aux
9042WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9043DELETE FROM t1
9044WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9045CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
9046BEGIN
9047SET new.f_int1 = old.f_int1 + @max_row,
9048new.f_int2 = old.f_int2 - @max_row,
9049new.f_charbig = '####updated per update trigger####';
9050END|
9051UPDATE t1
9052SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
9053f_charbig = '####updated per update statement itself####';
9054Warnings:
9055Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
9056
9057# check trigger-9 success: 	1
9058DROP TRIGGER trg_2;
9059UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9060f_int2 = CAST(f_char1 AS SIGNED INT),
9061f_charbig = CONCAT('===',f_char1,'===');
9062Warnings:
9063Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
9064CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
9065BEGIN
9066SET new.f_int1 = new.f_int1 + @max_row,
9067new.f_int2 = new.f_int2 - @max_row,
9068new.f_charbig = '####updated per update trigger####';
9069END|
9070UPDATE t1
9071SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
9072f_charbig = '####updated per update statement itself####';
9073Warnings:
9074Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
9075
9076# check trigger-10 success: 	1
9077DROP TRIGGER trg_2;
9078UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9079f_int2 = CAST(f_char1 AS SIGNED INT),
9080f_charbig = CONCAT('===',f_char1,'===');
9081Warnings:
9082Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
9083CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
9084BEGIN
9085SET new.f_int1 = @my_max1 + @counter,
9086new.f_int2 = @my_min2 - @counter,
9087new.f_charbig = '####updated per insert trigger####';
9088SET @counter = @counter + 1;
9089END|
9090SET @counter = 1;
9091SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
9092Warnings:
9093Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
9094INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9095SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
9096CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
9097WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
9098ORDER BY f_int1;
9099DROP TRIGGER trg_3;
9100
9101# check trigger-11 success: 	1
9102Warnings:
9103Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
9104DELETE FROM t1
9105WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
9106AND f_int2 <> CAST(f_char1 AS SIGNED INT)
9107AND f_charbig = '####updated per insert trigger####';
9108CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
9109BEGIN
9110SET new.f_int1 = @my_max1 + @counter,
9111new.f_int2 = @my_min2 - @counter,
9112new.f_charbig = '####updated per insert trigger####';
9113SET @counter = @counter + 1;
9114END|
9115SET @counter = 1;
9116SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
9117Warnings:
9118Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
9119INSERT INTO t1 (f_char1, f_char2, f_charbig)
9120SELECT CAST(f_int1 AS CHAR),
9121CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
9122WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
9123ORDER BY f_int1;
9124DROP TRIGGER trg_3;
9125
9126# check trigger-12 success: 	1
9127Warnings:
9128Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
9129DELETE FROM t1
9130WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
9131AND f_int2 <> CAST(f_char1 AS SIGNED INT)
9132AND f_charbig = '####updated per insert trigger####';
9133ANALYZE  TABLE t1;
9134Table	Op	Msg_type	Msg_text
9135test.t1	analyze	status	OK
9136test.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.
9137CHECK    TABLE t1 EXTENDED;
9138Table	Op	Msg_type	Msg_text
9139test.t1	check	status	OK
9140test.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.
9141CHECKSUM TABLE t1 EXTENDED;
9142Table	Checksum
9143test.t1	<some_value>
9144OPTIMIZE TABLE t1;
9145Table	Op	Msg_type	Msg_text
9146test.t1	optimize	status	OK
9147test.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.
9148# check layout success:    1
9149REPAIR   TABLE t1 EXTENDED;
9150Table	Op	Msg_type	Msg_text
9151test.t1	repair	status	OK
9152test.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.
9153# check layout success:    1
9154TRUNCATE t1;
9155Warnings:
9156Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
9157
9158# check TRUNCATE success: 	1
9159# check layout success:    1
9160# End usability test (inc/partition_check.inc)
9161DROP TABLE t1;
9162CREATE TABLE t1 (
9163f_int1 INTEGER,
9164f_int2 INTEGER,
9165f_char1 CHAR(20),
9166f_char2 CHAR(20),
9167f_charbig VARCHAR(1000)
9168, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
9169)
9170PARTITION BY KEY(f_int1) PARTITIONS 5
9171(PARTITION p1
9172DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
9173INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
9174PARTITION p2
9175DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
9176INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
9177PARTITION p3
9178DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
9179INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
9180PARTITION p4
9181DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
9182INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
9183PARTITION p5
9184DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
9185INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir');
9186Warnings:
9187Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
9188INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
9189SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
9190Warnings:
9191Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
9192# Start usability test (inc/partition_check.inc)
9193create_command
9194SHOW CREATE TABLE t1;
9195Table	Create Table
9196t1	CREATE TABLE `t1` (
9197  `f_int1` int(11) DEFAULT NULL,
9198  `f_int2` int(11) DEFAULT NULL,
9199  `f_char1` char(20) DEFAULT NULL,
9200  `f_char2` char(20) DEFAULT NULL,
9201  `f_charbig` varchar(1000) DEFAULT NULL,
9202  UNIQUE KEY `uidx1` (`f_int1`,`f_int2`),
9203  UNIQUE KEY `uidx2` (`f_int2`,`f_int1`)
9204) ENGINE=MyISAM DEFAULT CHARSET=latin1
9205/*!50100 PARTITION BY KEY (f_int1)
9206(PARTITION p1 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
9207 PARTITION p2 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
9208 PARTITION p3 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
9209 PARTITION p4 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
9210 PARTITION p5 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM) */
9211
9212unified filelist
9213t1#P#p1.MYD
9214t1#P#p1.MYI
9215t1#P#p2.MYD
9216t1#P#p2.MYI
9217t1#P#p3.MYD
9218t1#P#p3.MYI
9219t1#P#p4.MYD
9220t1#P#p4.MYI
9221t1#P#p5.MYD
9222t1#P#p5.MYI
9223t1.frm
9224t1.par
9225t1#P#p1.MYD
9226t1#P#p2.MYD
9227t1#P#p3.MYD
9228t1#P#p4.MYD
9229t1#P#p5.MYD
9230t1#P#p1.MYI
9231t1#P#p2.MYI
9232t1#P#p3.MYI
9233t1#P#p4.MYI
9234t1#P#p5.MYI
9235
9236# check prerequisites-1 success:    1
9237# check COUNT(*) success:    1
9238# check MIN/MAX(f_int1) success:    1
9239# check MIN/MAX(f_int2) success:    1
9240INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9241SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
9242CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
9243WHERE f_int1 IN (2,3);
9244ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
9245# check prerequisites-3 success:    1
9246# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
9247INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9248SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
9249CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
9250WHERE f_int1 IN (2,3);
9251DELETE FROM t1 WHERE f_charbig = 'delete me';
9252INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9253SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
9254CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
9255WHERE f_int1 IN (2,3);
9256DELETE FROM t1 WHERE f_charbig = 'delete me';
9257# check read via f_int1 success: 1
9258# check read via f_int2 success: 1
9259
9260# check multiple-1 success: 	1
9261DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
9262
9263# check multiple-2 success: 	1
9264INSERT INTO t1 SELECT * FROM t0_template
9265WHERE MOD(f_int1,3) = 0;
9266
9267# check multiple-3 success: 	1
9268UPDATE t1 SET f_int1 = f_int1 + @max_row
9269WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
9270AND @max_row_div2 + @max_row_div4;
9271
9272# check multiple-4 success: 	1
9273DELETE FROM t1
9274WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
9275AND @max_row_div2 + @max_row_div4 + @max_row;
9276
9277# check multiple-5 success: 	1
9278SELECT COUNT(*) INTO @try_count FROM t0_template
9279WHERE MOD(f_int1,3) = 0
9280AND f_int1 BETWEEN @max_row_div2 AND @max_row;
9281SELECT COUNT(*) INTO @clash_count
9282FROM t1 INNER JOIN t0_template USING(f_int1)
9283WHERE MOD(f_int1,3) = 0
9284AND f_int1 BETWEEN @max_row_div2 AND @max_row;
9285SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
9286INSERT INTO t1
9287SET f_int1 = @cur_value , f_int2 = @cur_value,
9288f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
9289f_charbig = '#SINGLE#';
9290
9291# check single-1 success: 	1
9292SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
9293INSERT INTO t1
9294SET f_int1 = @cur_value , f_int2 = @cur_value,
9295f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
9296f_charbig = '#SINGLE#';
9297
9298# check single-2 success: 	1
9299SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
9300SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
9301UPDATE t1 SET f_int1 = @cur_value2
9302WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
9303
9304# check single-3 success: 	1
9305SET @cur_value1= -1;
9306SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
9307UPDATE t1 SET f_int1 = @cur_value1
9308WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
9309
9310# check single-4 success: 	1
9311SELECT MAX(f_int1) INTO @cur_value FROM t1;
9312DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
9313
9314# check single-5 success: 	1
9315DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
9316
9317# check single-6 success: 	1
9318INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
9319
9320# check single-7 success: 	1
9321DELETE FROM t1 WHERE f_charbig = '#2147483647##';
9322DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
9323INSERT t1 SET f_int1 = 0 , f_int2 = 0,
9324f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
9325f_charbig = '#NULL#';
9326INSERT INTO t1
9327SET f_int1 = NULL , f_int2 = -@max_row,
9328f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
9329f_charbig = '#NULL#';
9330# check null success:    1
9331
9332# check null-1 success: 	1
9333UPDATE t1 SET f_int1 = -@max_row
9334WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
9335AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
9336
9337# check null-2 success: 	1
9338UPDATE t1 SET f_int1 = NULL
9339WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
9340AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
9341
9342# check null-3 success: 	1
9343DELETE FROM t1
9344WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
9345AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
9346
9347# check null-4 success: 	1
9348DELETE FROM t1
9349WHERE f_int1 = 0 AND f_int2 = 0
9350AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
9351AND f_charbig = '#NULL#';
9352INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9353SELECT f_int1, f_int1, '', '', 'was inserted'
9354   FROM t0_template source_tab
9355WHERE MOD(f_int1,3) = 0
9356AND f_int1 BETWEEN @max_row_div2 AND @max_row
9357ON DUPLICATE KEY
9358UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
9359f_int2 = 2 * @max_row + source_tab.f_int1,
9360f_charbig = 'was updated';
9361
9362# check unique-1-a success: 	1
9363
9364# check unique-1-b success: 	1
9365DELETE FROM t1 WHERE f_charbig = 'was inserted';
9366UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9367f_int2 = CAST(f_char1 AS SIGNED INT),
9368f_charbig = CONCAT('===',f_char1,'===')
9369WHERE f_charbig = 'was updated';
9370REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9371SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
9372   FROM t0_template source_tab
9373WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
9374
9375# check replace success: 	1
9376DELETE FROM t1
9377WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
9378DELETE FROM t1
9379WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
9380f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
9381UPDATE t1 SET f_int2 = f_int1,
9382f_char1 = CAST(f_int1 AS CHAR),
9383f_char2 = CAST(f_int1 AS CHAR),
9384f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
9385WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
9386SET AUTOCOMMIT= 0;
9387INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9388SELECT f_int1, f_int1, '', '', 'was inserted'
9389FROM t0_template source_tab
9390WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
9391
9392# check transactions-1 success: 	1
9393COMMIT WORK;
9394
9395# check transactions-2 success: 	1
9396ROLLBACK WORK;
9397
9398# check transactions-3 success: 	1
9399DELETE FROM t1 WHERE f_charbig = 'was inserted';
9400COMMIT WORK;
9401ROLLBACK WORK;
9402
9403# check transactions-4 success: 	1
9404INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9405SELECT f_int1, f_int1, '', '', 'was inserted'
9406FROM t0_template source_tab
9407WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
9408
9409# check transactions-5 success: 	1
9410ROLLBACK WORK;
9411Warnings:
9412Warning	1196	Some non-transactional changed tables couldn't be rolled back
9413
9414# check transactions-6 success: 	1
9415# INFO: Storage engine used for t1 seems to be not transactional.
9416COMMIT;
9417
9418# check transactions-7 success: 	1
9419DELETE FROM t1 WHERE f_charbig = 'was inserted';
9420COMMIT WORK;
9421SET @@session.sql_mode = 'traditional';
9422Warnings:
9423Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
9424SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
9425INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9426SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
9427'', '', 'was inserted' FROM t0_template
9428WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
9429ERROR 22012: Division by 0
9430COMMIT;
9431
9432# check transactions-8 success: 	1
9433# INFO: Storage engine used for t1 seems to be unable to revert
9434#       changes made by the failing statement.
9435SET @@session.sql_mode = '';
9436Warnings:
9437Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
9438SET AUTOCOMMIT= 1;
9439DELETE FROM t1 WHERE f_charbig = 'was inserted';
9440COMMIT WORK;
9441UPDATE t1 SET f_charbig = REPEAT('b', 1000);
9442
9443# check special-1 success: 	1
9444UPDATE t1 SET f_charbig = '';
9445
9446# check special-2 success: 	1
9447UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
9448INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
9449SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
9450WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9451INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9452SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9453'just inserted' FROM t0_template
9454WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9455CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
9456BEGIN
9457UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9458f_charbig = 'updated by trigger'
9459      WHERE f_int1 = new.f_int1;
9460END|
9461INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9462SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
9463WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9464
9465# check trigger-1 success: 	1
9466DROP TRIGGER trg_1;
9467UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9468f_int2 = CAST(f_char1 AS SIGNED INT),
9469f_charbig = 'just inserted'
9470   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9471DELETE FROM t0_aux
9472WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9473INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9474SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9475'just inserted' FROM t0_template
9476WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9477CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
9478BEGIN
9479UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9480f_charbig = 'updated by trigger'
9481      WHERE f_int1 = new.f_int1;
9482END|
9483INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9484SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
9485WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9486
9487# check trigger-2 success: 	1
9488DROP TRIGGER trg_1;
9489UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9490f_int2 = CAST(f_char1 AS SIGNED INT),
9491f_charbig = 'just inserted'
9492   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9493DELETE FROM t0_aux
9494WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9495INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9496SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9497'just inserted' FROM t0_template
9498WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9499CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
9500BEGIN
9501UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9502f_charbig = 'updated by trigger'
9503      WHERE f_int1 = new.f_int1;
9504END|
9505UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
9506WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9507
9508# check trigger-3 success: 	1
9509DROP TRIGGER trg_1;
9510UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9511f_int2 = CAST(f_char1 AS SIGNED INT),
9512f_charbig = 'just inserted'
9513   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9514DELETE FROM t0_aux
9515WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9516INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9517SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9518'just inserted' FROM t0_template
9519WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9520CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
9521BEGIN
9522UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9523f_charbig = 'updated by trigger'
9524      WHERE f_int1 = - old.f_int1;
9525END|
9526UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
9527WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9528
9529# check trigger-4 success: 	1
9530DROP TRIGGER trg_1;
9531UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9532f_int2 = CAST(f_char1 AS SIGNED INT),
9533f_charbig = 'just inserted'
9534   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9535DELETE FROM t0_aux
9536WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9537INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9538SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9539'just inserted' FROM t0_template
9540WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9541CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
9542BEGIN
9543UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9544f_charbig = 'updated by trigger'
9545      WHERE f_int1 = new.f_int1;
9546END|
9547UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
9548WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9549
9550# check trigger-5 success: 	1
9551DROP TRIGGER trg_1;
9552UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9553f_int2 = CAST(f_char1 AS SIGNED INT),
9554f_charbig = 'just inserted'
9555   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9556DELETE FROM t0_aux
9557WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9558INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9559SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9560'just inserted' FROM t0_template
9561WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9562CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
9563BEGIN
9564UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9565f_charbig = 'updated by trigger'
9566      WHERE f_int1 = - old.f_int1;
9567END|
9568UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
9569WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9570
9571# check trigger-6 success: 	1
9572DROP TRIGGER trg_1;
9573UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9574f_int2 = CAST(f_char1 AS SIGNED INT),
9575f_charbig = 'just inserted'
9576   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9577DELETE FROM t0_aux
9578WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9579INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9580SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9581'just inserted' FROM t0_template
9582WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9583CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
9584BEGIN
9585UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9586f_charbig = 'updated by trigger'
9587      WHERE f_int1 = - old.f_int1;
9588END|
9589DELETE FROM t0_aux
9590WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9591
9592# check trigger-7 success: 	1
9593DROP TRIGGER trg_1;
9594UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9595f_int2 = CAST(f_char1 AS SIGNED INT),
9596f_charbig = 'just inserted'
9597   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9598DELETE FROM t0_aux
9599WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9600INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9601SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9602'just inserted' FROM t0_template
9603WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9604CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
9605BEGIN
9606UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9607f_charbig = 'updated by trigger'
9608      WHERE f_int1 = - old.f_int1;
9609END|
9610DELETE FROM t0_aux
9611WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9612
9613# check trigger-8 success: 	1
9614DROP TRIGGER trg_1;
9615UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9616f_int2 = CAST(f_char1 AS SIGNED INT),
9617f_charbig = 'just inserted'
9618   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9619DELETE FROM t0_aux
9620WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9621DELETE FROM t1
9622WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9623CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
9624BEGIN
9625SET new.f_int1 = old.f_int1 + @max_row,
9626new.f_int2 = old.f_int2 - @max_row,
9627new.f_charbig = '####updated per update trigger####';
9628END|
9629UPDATE t1
9630SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
9631f_charbig = '####updated per update statement itself####';
9632Warnings:
9633Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
9634
9635# check trigger-9 success: 	1
9636DROP TRIGGER trg_2;
9637UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9638f_int2 = CAST(f_char1 AS SIGNED INT),
9639f_charbig = CONCAT('===',f_char1,'===');
9640Warnings:
9641Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
9642CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
9643BEGIN
9644SET new.f_int1 = new.f_int1 + @max_row,
9645new.f_int2 = new.f_int2 - @max_row,
9646new.f_charbig = '####updated per update trigger####';
9647END|
9648UPDATE t1
9649SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
9650f_charbig = '####updated per update statement itself####';
9651Warnings:
9652Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
9653
9654# check trigger-10 success: 	1
9655DROP TRIGGER trg_2;
9656UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9657f_int2 = CAST(f_char1 AS SIGNED INT),
9658f_charbig = CONCAT('===',f_char1,'===');
9659Warnings:
9660Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
9661CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
9662BEGIN
9663SET new.f_int1 = @my_max1 + @counter,
9664new.f_int2 = @my_min2 - @counter,
9665new.f_charbig = '####updated per insert trigger####';
9666SET @counter = @counter + 1;
9667END|
9668SET @counter = 1;
9669SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
9670Warnings:
9671Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
9672INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9673SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
9674CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
9675WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
9676ORDER BY f_int1;
9677DROP TRIGGER trg_3;
9678
9679# check trigger-11 success: 	1
9680Warnings:
9681Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
9682DELETE FROM t1
9683WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
9684AND f_int2 <> CAST(f_char1 AS SIGNED INT)
9685AND f_charbig = '####updated per insert trigger####';
9686CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
9687BEGIN
9688SET new.f_int1 = @my_max1 + @counter,
9689new.f_int2 = @my_min2 - @counter,
9690new.f_charbig = '####updated per insert trigger####';
9691SET @counter = @counter + 1;
9692END|
9693SET @counter = 1;
9694SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
9695Warnings:
9696Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
9697INSERT INTO t1 (f_char1, f_char2, f_charbig)
9698SELECT CAST(f_int1 AS CHAR),
9699CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
9700WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
9701ORDER BY f_int1;
9702DROP TRIGGER trg_3;
9703
9704# check trigger-12 success: 	1
9705Warnings:
9706Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
9707DELETE FROM t1
9708WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
9709AND f_int2 <> CAST(f_char1 AS SIGNED INT)
9710AND f_charbig = '####updated per insert trigger####';
9711ANALYZE  TABLE t1;
9712Table	Op	Msg_type	Msg_text
9713test.t1	analyze	status	OK
9714test.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.
9715CHECK    TABLE t1 EXTENDED;
9716Table	Op	Msg_type	Msg_text
9717test.t1	check	status	OK
9718test.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.
9719CHECKSUM TABLE t1 EXTENDED;
9720Table	Checksum
9721test.t1	<some_value>
9722OPTIMIZE TABLE t1;
9723Table	Op	Msg_type	Msg_text
9724test.t1	optimize	status	OK
9725test.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.
9726# check layout success:    1
9727REPAIR   TABLE t1 EXTENDED;
9728Table	Op	Msg_type	Msg_text
9729test.t1	repair	status	OK
9730test.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.
9731# check layout success:    1
9732TRUNCATE t1;
9733Warnings:
9734Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
9735
9736# check TRUNCATE success: 	1
9737# check layout success:    1
9738# End usability test (inc/partition_check.inc)
9739DROP TABLE t1;
9740CREATE TABLE t1 (
9741f_int1 INTEGER,
9742f_int2 INTEGER,
9743f_char1 CHAR(20),
9744f_char2 CHAR(20),
9745f_charbig VARCHAR(1000)
9746, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
9747)
9748PARTITION BY LIST(MOD(f_int1,4))
9749(PARTITION part_3 VALUES IN (-3)
9750DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
9751PARTITION part_2 VALUES IN (-2)
9752DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
9753PARTITION part_1 VALUES IN (-1)
9754DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
9755PARTITION part_N VALUES IN (NULL)
9756DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
9757PARTITION part0 VALUES IN (0)
9758DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
9759PARTITION part1 VALUES IN (1)
9760DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
9761PARTITION part2 VALUES IN (2)
9762DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
9763PARTITION part3 VALUES IN (3)
9764DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir');
9765Warnings:
9766Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
9767INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
9768SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
9769Warnings:
9770Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
9771# Start usability test (inc/partition_check.inc)
9772create_command
9773SHOW CREATE TABLE t1;
9774Table	Create Table
9775t1	CREATE TABLE `t1` (
9776  `f_int1` int(11) DEFAULT NULL,
9777  `f_int2` int(11) DEFAULT NULL,
9778  `f_char1` char(20) DEFAULT NULL,
9779  `f_char2` char(20) DEFAULT NULL,
9780  `f_charbig` varchar(1000) DEFAULT NULL,
9781  UNIQUE KEY `uidx1` (`f_int1`,`f_int2`),
9782  UNIQUE KEY `uidx2` (`f_int2`,`f_int1`)
9783) ENGINE=MyISAM DEFAULT CHARSET=latin1
9784/*!50100 PARTITION BY LIST (MOD(f_int1,4))
9785(PARTITION part_3 VALUES IN (-3) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
9786 PARTITION part_2 VALUES IN (-2) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
9787 PARTITION part_1 VALUES IN (-1) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
9788 PARTITION part_N VALUES IN (NULL) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
9789 PARTITION part0 VALUES IN (0) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
9790 PARTITION part1 VALUES IN (1) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
9791 PARTITION part2 VALUES IN (2) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
9792 PARTITION part3 VALUES IN (3) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM) */
9793
9794unified filelist
9795t1#P#part0.MYD
9796t1#P#part0.MYI
9797t1#P#part1.MYD
9798t1#P#part1.MYI
9799t1#P#part2.MYD
9800t1#P#part2.MYI
9801t1#P#part3.MYD
9802t1#P#part3.MYI
9803t1#P#part_1.MYD
9804t1#P#part_1.MYI
9805t1#P#part_2.MYD
9806t1#P#part_2.MYI
9807t1#P#part_3.MYD
9808t1#P#part_3.MYI
9809t1#P#part_N.MYD
9810t1#P#part_N.MYI
9811t1.frm
9812t1.par
9813t1#P#part0.MYD
9814t1#P#part1.MYD
9815t1#P#part2.MYD
9816t1#P#part3.MYD
9817t1#P#part_1.MYD
9818t1#P#part_2.MYD
9819t1#P#part_3.MYD
9820t1#P#part_N.MYD
9821t1#P#part0.MYI
9822t1#P#part1.MYI
9823t1#P#part2.MYI
9824t1#P#part3.MYI
9825t1#P#part_1.MYI
9826t1#P#part_2.MYI
9827t1#P#part_3.MYI
9828t1#P#part_N.MYI
9829
9830# check prerequisites-1 success:    1
9831# check COUNT(*) success:    1
9832# check MIN/MAX(f_int1) success:    1
9833# check MIN/MAX(f_int2) success:    1
9834INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9835SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
9836CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
9837WHERE f_int1 IN (2,3);
9838ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
9839# check prerequisites-3 success:    1
9840# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
9841INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9842SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
9843CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
9844WHERE f_int1 IN (2,3);
9845DELETE FROM t1 WHERE f_charbig = 'delete me';
9846INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9847SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
9848CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
9849WHERE f_int1 IN (2,3);
9850DELETE FROM t1 WHERE f_charbig = 'delete me';
9851# check read via f_int1 success: 1
9852# check read via f_int2 success: 1
9853
9854# check multiple-1 success: 	1
9855DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
9856
9857# check multiple-2 success: 	1
9858INSERT INTO t1 SELECT * FROM t0_template
9859WHERE MOD(f_int1,3) = 0;
9860
9861# check multiple-3 success: 	1
9862UPDATE t1 SET f_int1 = f_int1 + @max_row
9863WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
9864AND @max_row_div2 + @max_row_div4;
9865
9866# check multiple-4 success: 	1
9867DELETE FROM t1
9868WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
9869AND @max_row_div2 + @max_row_div4 + @max_row;
9870
9871# check multiple-5 success: 	1
9872SELECT COUNT(*) INTO @try_count FROM t0_template
9873WHERE MOD(f_int1,3) = 0
9874AND f_int1 BETWEEN @max_row_div2 AND @max_row;
9875SELECT COUNT(*) INTO @clash_count
9876FROM t1 INNER JOIN t0_template USING(f_int1)
9877WHERE MOD(f_int1,3) = 0
9878AND f_int1 BETWEEN @max_row_div2 AND @max_row;
9879SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
9880INSERT INTO t1
9881SET f_int1 = @cur_value , f_int2 = @cur_value,
9882f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
9883f_charbig = '#SINGLE#';
9884
9885# check single-1 success: 	1
9886SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
9887INSERT INTO t1
9888SET f_int1 = @cur_value , f_int2 = @cur_value,
9889f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
9890f_charbig = '#SINGLE#';
9891
9892# check single-2 success: 	1
9893SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
9894SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
9895UPDATE t1 SET f_int1 = @cur_value2
9896WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
9897
9898# check single-3 success: 	1
9899SET @cur_value1= -1;
9900SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
9901UPDATE t1 SET f_int1 = @cur_value1
9902WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
9903
9904# check single-4 success: 	1
9905SELECT MAX(f_int1) INTO @cur_value FROM t1;
9906DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
9907
9908# check single-5 success: 	1
9909DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
9910
9911# check single-6 success: 	1
9912INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
9913
9914# check single-7 success: 	1
9915DELETE FROM t1 WHERE f_charbig = '#2147483647##';
9916DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
9917INSERT t1 SET f_int1 = 0 , f_int2 = 0,
9918f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
9919f_charbig = '#NULL#';
9920INSERT INTO t1
9921SET f_int1 = NULL , f_int2 = -@max_row,
9922f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
9923f_charbig = '#NULL#';
9924# check null success:    1
9925
9926# check null-1 success: 	1
9927UPDATE t1 SET f_int1 = -@max_row
9928WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
9929AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
9930
9931# check null-2 success: 	1
9932UPDATE t1 SET f_int1 = NULL
9933WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
9934AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
9935
9936# check null-3 success: 	1
9937DELETE FROM t1
9938WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
9939AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
9940
9941# check null-4 success: 	1
9942DELETE FROM t1
9943WHERE f_int1 = 0 AND f_int2 = 0
9944AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
9945AND f_charbig = '#NULL#';
9946INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9947SELECT f_int1, f_int1, '', '', 'was inserted'
9948   FROM t0_template source_tab
9949WHERE MOD(f_int1,3) = 0
9950AND f_int1 BETWEEN @max_row_div2 AND @max_row
9951ON DUPLICATE KEY
9952UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
9953f_int2 = 2 * @max_row + source_tab.f_int1,
9954f_charbig = 'was updated';
9955
9956# check unique-1-a success: 	1
9957
9958# check unique-1-b success: 	1
9959DELETE FROM t1 WHERE f_charbig = 'was inserted';
9960UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9961f_int2 = CAST(f_char1 AS SIGNED INT),
9962f_charbig = CONCAT('===',f_char1,'===')
9963WHERE f_charbig = 'was updated';
9964REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9965SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
9966   FROM t0_template source_tab
9967WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
9968
9969# check replace success: 	1
9970DELETE FROM t1
9971WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
9972DELETE FROM t1
9973WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
9974f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
9975UPDATE t1 SET f_int2 = f_int1,
9976f_char1 = CAST(f_int1 AS CHAR),
9977f_char2 = CAST(f_int1 AS CHAR),
9978f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
9979WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
9980SET AUTOCOMMIT= 0;
9981INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9982SELECT f_int1, f_int1, '', '', 'was inserted'
9983FROM t0_template source_tab
9984WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
9985
9986# check transactions-1 success: 	1
9987COMMIT WORK;
9988
9989# check transactions-2 success: 	1
9990ROLLBACK WORK;
9991
9992# check transactions-3 success: 	1
9993DELETE FROM t1 WHERE f_charbig = 'was inserted';
9994COMMIT WORK;
9995ROLLBACK WORK;
9996
9997# check transactions-4 success: 	1
9998INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9999SELECT f_int1, f_int1, '', '', 'was inserted'
10000FROM t0_template source_tab
10001WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
10002
10003# check transactions-5 success: 	1
10004ROLLBACK WORK;
10005Warnings:
10006Warning	1196	Some non-transactional changed tables couldn't be rolled back
10007
10008# check transactions-6 success: 	1
10009# INFO: Storage engine used for t1 seems to be not transactional.
10010COMMIT;
10011
10012# check transactions-7 success: 	1
10013DELETE FROM t1 WHERE f_charbig = 'was inserted';
10014COMMIT WORK;
10015SET @@session.sql_mode = 'traditional';
10016Warnings:
10017Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
10018SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
10019INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10020SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
10021'', '', 'was inserted' FROM t0_template
10022WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
10023ERROR 22012: Division by 0
10024COMMIT;
10025
10026# check transactions-8 success: 	1
10027# INFO: Storage engine used for t1 seems to be unable to revert
10028#       changes made by the failing statement.
10029SET @@session.sql_mode = '';
10030Warnings:
10031Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
10032SET AUTOCOMMIT= 1;
10033DELETE FROM t1 WHERE f_charbig = 'was inserted';
10034COMMIT WORK;
10035UPDATE t1 SET f_charbig = REPEAT('b', 1000);
10036
10037# check special-1 success: 	1
10038UPDATE t1 SET f_charbig = '';
10039
10040# check special-2 success: 	1
10041UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
10042INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
10043SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
10044WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10045INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10046SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10047'just inserted' FROM t0_template
10048WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10049CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
10050BEGIN
10051UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10052f_charbig = 'updated by trigger'
10053      WHERE f_int1 = new.f_int1;
10054END|
10055INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10056SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
10057WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10058
10059# check trigger-1 success: 	1
10060DROP TRIGGER trg_1;
10061UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10062f_int2 = CAST(f_char1 AS SIGNED INT),
10063f_charbig = 'just inserted'
10064   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10065DELETE FROM t0_aux
10066WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10067INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10068SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10069'just inserted' FROM t0_template
10070WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10071CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
10072BEGIN
10073UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10074f_charbig = 'updated by trigger'
10075      WHERE f_int1 = new.f_int1;
10076END|
10077INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10078SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
10079WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10080
10081# check trigger-2 success: 	1
10082DROP TRIGGER trg_1;
10083UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10084f_int2 = CAST(f_char1 AS SIGNED INT),
10085f_charbig = 'just inserted'
10086   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10087DELETE FROM t0_aux
10088WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10089INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10090SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10091'just inserted' FROM t0_template
10092WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10093CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
10094BEGIN
10095UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10096f_charbig = 'updated by trigger'
10097      WHERE f_int1 = new.f_int1;
10098END|
10099UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
10100WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10101
10102# check trigger-3 success: 	1
10103DROP TRIGGER trg_1;
10104UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10105f_int2 = CAST(f_char1 AS SIGNED INT),
10106f_charbig = 'just inserted'
10107   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10108DELETE FROM t0_aux
10109WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10110INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10111SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10112'just inserted' FROM t0_template
10113WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10114CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
10115BEGIN
10116UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10117f_charbig = 'updated by trigger'
10118      WHERE f_int1 = - old.f_int1;
10119END|
10120UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
10121WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10122
10123# check trigger-4 success: 	1
10124DROP TRIGGER trg_1;
10125UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10126f_int2 = CAST(f_char1 AS SIGNED INT),
10127f_charbig = 'just inserted'
10128   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10129DELETE FROM t0_aux
10130WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10131INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10132SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10133'just inserted' FROM t0_template
10134WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10135CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
10136BEGIN
10137UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10138f_charbig = 'updated by trigger'
10139      WHERE f_int1 = new.f_int1;
10140END|
10141UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
10142WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10143
10144# check trigger-5 success: 	1
10145DROP TRIGGER trg_1;
10146UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10147f_int2 = CAST(f_char1 AS SIGNED INT),
10148f_charbig = 'just inserted'
10149   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10150DELETE FROM t0_aux
10151WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10152INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10153SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10154'just inserted' FROM t0_template
10155WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10156CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
10157BEGIN
10158UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10159f_charbig = 'updated by trigger'
10160      WHERE f_int1 = - old.f_int1;
10161END|
10162UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
10163WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10164
10165# check trigger-6 success: 	1
10166DROP TRIGGER trg_1;
10167UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10168f_int2 = CAST(f_char1 AS SIGNED INT),
10169f_charbig = 'just inserted'
10170   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10171DELETE FROM t0_aux
10172WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10173INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10174SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10175'just inserted' FROM t0_template
10176WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10177CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
10178BEGIN
10179UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10180f_charbig = 'updated by trigger'
10181      WHERE f_int1 = - old.f_int1;
10182END|
10183DELETE FROM t0_aux
10184WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10185
10186# check trigger-7 success: 	1
10187DROP TRIGGER trg_1;
10188UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10189f_int2 = CAST(f_char1 AS SIGNED INT),
10190f_charbig = 'just inserted'
10191   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10192DELETE FROM t0_aux
10193WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10194INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10195SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10196'just inserted' FROM t0_template
10197WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10198CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
10199BEGIN
10200UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10201f_charbig = 'updated by trigger'
10202      WHERE f_int1 = - old.f_int1;
10203END|
10204DELETE FROM t0_aux
10205WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10206
10207# check trigger-8 success: 	1
10208DROP TRIGGER trg_1;
10209UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10210f_int2 = CAST(f_char1 AS SIGNED INT),
10211f_charbig = 'just inserted'
10212   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10213DELETE FROM t0_aux
10214WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10215DELETE FROM t1
10216WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10217CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
10218BEGIN
10219SET new.f_int1 = old.f_int1 + @max_row,
10220new.f_int2 = old.f_int2 - @max_row,
10221new.f_charbig = '####updated per update trigger####';
10222END|
10223UPDATE t1
10224SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
10225f_charbig = '####updated per update statement itself####';
10226Warnings:
10227Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
10228
10229# check trigger-9 success: 	1
10230DROP TRIGGER trg_2;
10231UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10232f_int2 = CAST(f_char1 AS SIGNED INT),
10233f_charbig = CONCAT('===',f_char1,'===');
10234Warnings:
10235Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
10236CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
10237BEGIN
10238SET new.f_int1 = new.f_int1 + @max_row,
10239new.f_int2 = new.f_int2 - @max_row,
10240new.f_charbig = '####updated per update trigger####';
10241END|
10242UPDATE t1
10243SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
10244f_charbig = '####updated per update statement itself####';
10245Warnings:
10246Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
10247
10248# check trigger-10 success: 	1
10249DROP TRIGGER trg_2;
10250UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10251f_int2 = CAST(f_char1 AS SIGNED INT),
10252f_charbig = CONCAT('===',f_char1,'===');
10253Warnings:
10254Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
10255CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
10256BEGIN
10257SET new.f_int1 = @my_max1 + @counter,
10258new.f_int2 = @my_min2 - @counter,
10259new.f_charbig = '####updated per insert trigger####';
10260SET @counter = @counter + 1;
10261END|
10262SET @counter = 1;
10263SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
10264Warnings:
10265Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
10266INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10267SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
10268CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
10269WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
10270ORDER BY f_int1;
10271DROP TRIGGER trg_3;
10272
10273# check trigger-11 success: 	1
10274Warnings:
10275Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
10276DELETE FROM t1
10277WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
10278AND f_int2 <> CAST(f_char1 AS SIGNED INT)
10279AND f_charbig = '####updated per insert trigger####';
10280CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
10281BEGIN
10282SET new.f_int1 = @my_max1 + @counter,
10283new.f_int2 = @my_min2 - @counter,
10284new.f_charbig = '####updated per insert trigger####';
10285SET @counter = @counter + 1;
10286END|
10287SET @counter = 1;
10288SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
10289Warnings:
10290Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
10291INSERT INTO t1 (f_char1, f_char2, f_charbig)
10292SELECT CAST(f_int1 AS CHAR),
10293CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
10294WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
10295ORDER BY f_int1;
10296DROP TRIGGER trg_3;
10297
10298# check trigger-12 success: 	1
10299Warnings:
10300Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
10301DELETE FROM t1
10302WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
10303AND f_int2 <> CAST(f_char1 AS SIGNED INT)
10304AND f_charbig = '####updated per insert trigger####';
10305ANALYZE  TABLE t1;
10306Table	Op	Msg_type	Msg_text
10307test.t1	analyze	status	OK
10308test.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.
10309CHECK    TABLE t1 EXTENDED;
10310Table	Op	Msg_type	Msg_text
10311test.t1	check	status	OK
10312test.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.
10313CHECKSUM TABLE t1 EXTENDED;
10314Table	Checksum
10315test.t1	<some_value>
10316OPTIMIZE TABLE t1;
10317Table	Op	Msg_type	Msg_text
10318test.t1	optimize	status	OK
10319test.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.
10320# check layout success:    1
10321REPAIR   TABLE t1 EXTENDED;
10322Table	Op	Msg_type	Msg_text
10323test.t1	repair	status	OK
10324test.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.
10325# check layout success:    1
10326TRUNCATE t1;
10327Warnings:
10328Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
10329
10330# check TRUNCATE success: 	1
10331# check layout success:    1
10332# End usability test (inc/partition_check.inc)
10333DROP TABLE t1;
10334CREATE TABLE t1 (
10335f_int1 INTEGER,
10336f_int2 INTEGER,
10337f_char1 CHAR(20),
10338f_char2 CHAR(20),
10339f_charbig VARCHAR(1000)
10340, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
10341)
10342PARTITION BY RANGE(f_int1)
10343(PARTITION parta VALUES LESS THAN (0)
10344DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
10345INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
10346PARTITION partb VALUES LESS THAN (5)
10347DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
10348INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
10349PARTITION partc VALUES LESS THAN (10)
10350DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
10351INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
10352PARTITION partd VALUES LESS THAN (10 + 5)
10353DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
10354INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
10355PARTITION parte VALUES LESS THAN (20)
10356DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
10357INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
10358PARTITION partf VALUES LESS THAN (2147483646)
10359DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
10360INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir');
10361Warnings:
10362Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
10363INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
10364SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
10365Warnings:
10366Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
10367# Start usability test (inc/partition_check.inc)
10368create_command
10369SHOW CREATE TABLE t1;
10370Table	Create Table
10371t1	CREATE TABLE `t1` (
10372  `f_int1` int(11) DEFAULT NULL,
10373  `f_int2` int(11) DEFAULT NULL,
10374  `f_char1` char(20) DEFAULT NULL,
10375  `f_char2` char(20) DEFAULT NULL,
10376  `f_charbig` varchar(1000) DEFAULT NULL,
10377  UNIQUE KEY `uidx1` (`f_int1`,`f_int2`),
10378  UNIQUE KEY `uidx2` (`f_int2`,`f_int1`)
10379) ENGINE=MyISAM DEFAULT CHARSET=latin1
10380/*!50100 PARTITION BY RANGE (f_int1)
10381(PARTITION parta VALUES LESS THAN (0) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
10382 PARTITION partb VALUES LESS THAN (5) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
10383 PARTITION partc VALUES LESS THAN (10) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
10384 PARTITION partd VALUES LESS THAN (15) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
10385 PARTITION parte VALUES LESS THAN (20) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
10386 PARTITION partf VALUES LESS THAN (2147483646) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM) */
10387
10388unified filelist
10389t1#P#parta.MYD
10390t1#P#parta.MYI
10391t1#P#partb.MYD
10392t1#P#partb.MYI
10393t1#P#partc.MYD
10394t1#P#partc.MYI
10395t1#P#partd.MYD
10396t1#P#partd.MYI
10397t1#P#parte.MYD
10398t1#P#parte.MYI
10399t1#P#partf.MYD
10400t1#P#partf.MYI
10401t1.frm
10402t1.par
10403t1#P#parta.MYD
10404t1#P#partb.MYD
10405t1#P#partc.MYD
10406t1#P#partd.MYD
10407t1#P#parte.MYD
10408t1#P#partf.MYD
10409t1#P#parta.MYI
10410t1#P#partb.MYI
10411t1#P#partc.MYI
10412t1#P#partd.MYI
10413t1#P#parte.MYI
10414t1#P#partf.MYI
10415
10416# check prerequisites-1 success:    1
10417# check COUNT(*) success:    1
10418# check MIN/MAX(f_int1) success:    1
10419# check MIN/MAX(f_int2) success:    1
10420INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10421SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
10422CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
10423WHERE f_int1 IN (2,3);
10424ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
10425# check prerequisites-3 success:    1
10426# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
10427INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10428SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
10429CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
10430WHERE f_int1 IN (2,3);
10431DELETE FROM t1 WHERE f_charbig = 'delete me';
10432INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10433SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
10434CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
10435WHERE f_int1 IN (2,3);
10436DELETE FROM t1 WHERE f_charbig = 'delete me';
10437# check read via f_int1 success: 1
10438# check read via f_int2 success: 1
10439
10440# check multiple-1 success: 	1
10441DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
10442
10443# check multiple-2 success: 	1
10444INSERT INTO t1 SELECT * FROM t0_template
10445WHERE MOD(f_int1,3) = 0;
10446
10447# check multiple-3 success: 	1
10448UPDATE t1 SET f_int1 = f_int1 + @max_row
10449WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
10450AND @max_row_div2 + @max_row_div4;
10451
10452# check multiple-4 success: 	1
10453DELETE FROM t1
10454WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
10455AND @max_row_div2 + @max_row_div4 + @max_row;
10456
10457# check multiple-5 success: 	1
10458SELECT COUNT(*) INTO @try_count FROM t0_template
10459WHERE MOD(f_int1,3) = 0
10460AND f_int1 BETWEEN @max_row_div2 AND @max_row;
10461SELECT COUNT(*) INTO @clash_count
10462FROM t1 INNER JOIN t0_template USING(f_int1)
10463WHERE MOD(f_int1,3) = 0
10464AND f_int1 BETWEEN @max_row_div2 AND @max_row;
10465SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
10466INSERT INTO t1
10467SET f_int1 = @cur_value , f_int2 = @cur_value,
10468f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
10469f_charbig = '#SINGLE#';
10470
10471# check single-1 success: 	1
10472SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
10473INSERT INTO t1
10474SET f_int1 = @cur_value , f_int2 = @cur_value,
10475f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
10476f_charbig = '#SINGLE#';
10477
10478# check single-2 success: 	1
10479SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
10480SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
10481UPDATE t1 SET f_int1 = @cur_value2
10482WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
10483
10484# check single-3 success: 	1
10485SET @cur_value1= -1;
10486SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
10487UPDATE t1 SET f_int1 = @cur_value1
10488WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
10489
10490# check single-4 success: 	1
10491SELECT MAX(f_int1) INTO @cur_value FROM t1;
10492DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
10493
10494# check single-5 success: 	1
10495DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
10496
10497# check single-6 success: 	1
10498INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
10499ERROR HY000: Table has no partition for value 2147483647
10500DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
10501INSERT t1 SET f_int1 = 0 , f_int2 = 0,
10502f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
10503f_charbig = '#NULL#';
10504INSERT INTO t1
10505SET f_int1 = NULL , f_int2 = -@max_row,
10506f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
10507f_charbig = '#NULL#';
10508# check null success:    1
10509
10510# check null-1 success: 	1
10511UPDATE t1 SET f_int1 = -@max_row
10512WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
10513AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
10514
10515# check null-2 success: 	1
10516UPDATE t1 SET f_int1 = NULL
10517WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
10518AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
10519
10520# check null-3 success: 	1
10521DELETE FROM t1
10522WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
10523AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
10524
10525# check null-4 success: 	1
10526DELETE FROM t1
10527WHERE f_int1 = 0 AND f_int2 = 0
10528AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
10529AND f_charbig = '#NULL#';
10530INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10531SELECT f_int1, f_int1, '', '', 'was inserted'
10532   FROM t0_template source_tab
10533WHERE MOD(f_int1,3) = 0
10534AND f_int1 BETWEEN @max_row_div2 AND @max_row
10535ON DUPLICATE KEY
10536UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
10537f_int2 = 2 * @max_row + source_tab.f_int1,
10538f_charbig = 'was updated';
10539
10540# check unique-1-a success: 	1
10541
10542# check unique-1-b success: 	1
10543DELETE FROM t1 WHERE f_charbig = 'was inserted';
10544UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10545f_int2 = CAST(f_char1 AS SIGNED INT),
10546f_charbig = CONCAT('===',f_char1,'===')
10547WHERE f_charbig = 'was updated';
10548REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10549SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
10550   FROM t0_template source_tab
10551WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
10552
10553# check replace success: 	1
10554DELETE FROM t1
10555WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
10556DELETE FROM t1
10557WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
10558f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
10559UPDATE t1 SET f_int2 = f_int1,
10560f_char1 = CAST(f_int1 AS CHAR),
10561f_char2 = CAST(f_int1 AS CHAR),
10562f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
10563WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
10564SET AUTOCOMMIT= 0;
10565INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10566SELECT f_int1, f_int1, '', '', 'was inserted'
10567FROM t0_template source_tab
10568WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
10569
10570# check transactions-1 success: 	1
10571COMMIT WORK;
10572
10573# check transactions-2 success: 	1
10574ROLLBACK WORK;
10575
10576# check transactions-3 success: 	1
10577DELETE FROM t1 WHERE f_charbig = 'was inserted';
10578COMMIT WORK;
10579ROLLBACK WORK;
10580
10581# check transactions-4 success: 	1
10582INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10583SELECT f_int1, f_int1, '', '', 'was inserted'
10584FROM t0_template source_tab
10585WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
10586
10587# check transactions-5 success: 	1
10588ROLLBACK WORK;
10589Warnings:
10590Warning	1196	Some non-transactional changed tables couldn't be rolled back
10591
10592# check transactions-6 success: 	1
10593# INFO: Storage engine used for t1 seems to be not transactional.
10594COMMIT;
10595
10596# check transactions-7 success: 	1
10597DELETE FROM t1 WHERE f_charbig = 'was inserted';
10598COMMIT WORK;
10599SET @@session.sql_mode = 'traditional';
10600Warnings:
10601Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
10602SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
10603INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10604SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
10605'', '', 'was inserted' FROM t0_template
10606WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
10607ERROR 22012: Division by 0
10608COMMIT;
10609
10610# check transactions-8 success: 	1
10611# INFO: Storage engine used for t1 seems to be unable to revert
10612#       changes made by the failing statement.
10613SET @@session.sql_mode = '';
10614Warnings:
10615Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
10616SET AUTOCOMMIT= 1;
10617DELETE FROM t1 WHERE f_charbig = 'was inserted';
10618COMMIT WORK;
10619UPDATE t1 SET f_charbig = REPEAT('b', 1000);
10620
10621# check special-1 success: 	1
10622UPDATE t1 SET f_charbig = '';
10623
10624# check special-2 success: 	1
10625UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
10626INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
10627SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
10628WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10629INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10630SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10631'just inserted' FROM t0_template
10632WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10633CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
10634BEGIN
10635UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10636f_charbig = 'updated by trigger'
10637      WHERE f_int1 = new.f_int1;
10638END|
10639INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10640SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
10641WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10642
10643# check trigger-1 success: 	1
10644DROP TRIGGER trg_1;
10645UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10646f_int2 = CAST(f_char1 AS SIGNED INT),
10647f_charbig = 'just inserted'
10648   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10649DELETE FROM t0_aux
10650WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10651INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10652SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10653'just inserted' FROM t0_template
10654WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10655CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
10656BEGIN
10657UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10658f_charbig = 'updated by trigger'
10659      WHERE f_int1 = new.f_int1;
10660END|
10661INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10662SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
10663WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10664
10665# check trigger-2 success: 	1
10666DROP TRIGGER trg_1;
10667UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10668f_int2 = CAST(f_char1 AS SIGNED INT),
10669f_charbig = 'just inserted'
10670   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10671DELETE FROM t0_aux
10672WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10673INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10674SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10675'just inserted' FROM t0_template
10676WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10677CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
10678BEGIN
10679UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10680f_charbig = 'updated by trigger'
10681      WHERE f_int1 = new.f_int1;
10682END|
10683UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
10684WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10685
10686# check trigger-3 success: 	1
10687DROP TRIGGER trg_1;
10688UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10689f_int2 = CAST(f_char1 AS SIGNED INT),
10690f_charbig = 'just inserted'
10691   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10692DELETE FROM t0_aux
10693WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10694INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10695SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10696'just inserted' FROM t0_template
10697WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10698CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
10699BEGIN
10700UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10701f_charbig = 'updated by trigger'
10702      WHERE f_int1 = - old.f_int1;
10703END|
10704UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
10705WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10706
10707# check trigger-4 success: 	1
10708DROP TRIGGER trg_1;
10709UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10710f_int2 = CAST(f_char1 AS SIGNED INT),
10711f_charbig = 'just inserted'
10712   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10713DELETE FROM t0_aux
10714WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10715INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10716SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10717'just inserted' FROM t0_template
10718WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10719CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
10720BEGIN
10721UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10722f_charbig = 'updated by trigger'
10723      WHERE f_int1 = new.f_int1;
10724END|
10725UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
10726WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10727
10728# check trigger-5 success: 	1
10729DROP TRIGGER trg_1;
10730UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10731f_int2 = CAST(f_char1 AS SIGNED INT),
10732f_charbig = 'just inserted'
10733   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10734DELETE FROM t0_aux
10735WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10736INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10737SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10738'just inserted' FROM t0_template
10739WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10740CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
10741BEGIN
10742UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10743f_charbig = 'updated by trigger'
10744      WHERE f_int1 = - old.f_int1;
10745END|
10746UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
10747WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10748
10749# check trigger-6 success: 	1
10750DROP TRIGGER trg_1;
10751UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10752f_int2 = CAST(f_char1 AS SIGNED INT),
10753f_charbig = 'just inserted'
10754   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10755DELETE FROM t0_aux
10756WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10757INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10758SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10759'just inserted' FROM t0_template
10760WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10761CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
10762BEGIN
10763UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10764f_charbig = 'updated by trigger'
10765      WHERE f_int1 = - old.f_int1;
10766END|
10767DELETE FROM t0_aux
10768WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10769
10770# check trigger-7 success: 	1
10771DROP TRIGGER trg_1;
10772UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10773f_int2 = CAST(f_char1 AS SIGNED INT),
10774f_charbig = 'just inserted'
10775   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10776DELETE FROM t0_aux
10777WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10778INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10779SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10780'just inserted' FROM t0_template
10781WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10782CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
10783BEGIN
10784UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10785f_charbig = 'updated by trigger'
10786      WHERE f_int1 = - old.f_int1;
10787END|
10788DELETE FROM t0_aux
10789WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10790
10791# check trigger-8 success: 	1
10792DROP TRIGGER trg_1;
10793UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10794f_int2 = CAST(f_char1 AS SIGNED INT),
10795f_charbig = 'just inserted'
10796   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10797DELETE FROM t0_aux
10798WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10799DELETE FROM t1
10800WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10801CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
10802BEGIN
10803SET new.f_int1 = old.f_int1 + @max_row,
10804new.f_int2 = old.f_int2 - @max_row,
10805new.f_charbig = '####updated per update trigger####';
10806END|
10807UPDATE t1
10808SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
10809f_charbig = '####updated per update statement itself####';
10810Warnings:
10811Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
10812
10813# check trigger-9 success: 	1
10814DROP TRIGGER trg_2;
10815UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10816f_int2 = CAST(f_char1 AS SIGNED INT),
10817f_charbig = CONCAT('===',f_char1,'===');
10818Warnings:
10819Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
10820CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
10821BEGIN
10822SET new.f_int1 = new.f_int1 + @max_row,
10823new.f_int2 = new.f_int2 - @max_row,
10824new.f_charbig = '####updated per update trigger####';
10825END|
10826UPDATE t1
10827SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
10828f_charbig = '####updated per update statement itself####';
10829Warnings:
10830Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
10831
10832# check trigger-10 success: 	1
10833DROP TRIGGER trg_2;
10834UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10835f_int2 = CAST(f_char1 AS SIGNED INT),
10836f_charbig = CONCAT('===',f_char1,'===');
10837Warnings:
10838Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
10839CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
10840BEGIN
10841SET new.f_int1 = @my_max1 + @counter,
10842new.f_int2 = @my_min2 - @counter,
10843new.f_charbig = '####updated per insert trigger####';
10844SET @counter = @counter + 1;
10845END|
10846SET @counter = 1;
10847SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
10848Warnings:
10849Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
10850INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10851SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
10852CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
10853WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
10854ORDER BY f_int1;
10855DROP TRIGGER trg_3;
10856
10857# check trigger-11 success: 	1
10858Warnings:
10859Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
10860DELETE FROM t1
10861WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
10862AND f_int2 <> CAST(f_char1 AS SIGNED INT)
10863AND f_charbig = '####updated per insert trigger####';
10864CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
10865BEGIN
10866SET new.f_int1 = @my_max1 + @counter,
10867new.f_int2 = @my_min2 - @counter,
10868new.f_charbig = '####updated per insert trigger####';
10869SET @counter = @counter + 1;
10870END|
10871SET @counter = 1;
10872SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
10873Warnings:
10874Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
10875INSERT INTO t1 (f_char1, f_char2, f_charbig)
10876SELECT CAST(f_int1 AS CHAR),
10877CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
10878WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
10879ORDER BY f_int1;
10880DROP TRIGGER trg_3;
10881
10882# check trigger-12 success: 	1
10883Warnings:
10884Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
10885DELETE FROM t1
10886WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
10887AND f_int2 <> CAST(f_char1 AS SIGNED INT)
10888AND f_charbig = '####updated per insert trigger####';
10889ANALYZE  TABLE t1;
10890Table	Op	Msg_type	Msg_text
10891test.t1	analyze	status	OK
10892test.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.
10893CHECK    TABLE t1 EXTENDED;
10894Table	Op	Msg_type	Msg_text
10895test.t1	check	status	OK
10896test.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.
10897CHECKSUM TABLE t1 EXTENDED;
10898Table	Checksum
10899test.t1	<some_value>
10900OPTIMIZE TABLE t1;
10901Table	Op	Msg_type	Msg_text
10902test.t1	optimize	status	OK
10903test.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.
10904# check layout success:    1
10905REPAIR   TABLE t1 EXTENDED;
10906Table	Op	Msg_type	Msg_text
10907test.t1	repair	status	OK
10908test.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.
10909# check layout success:    1
10910TRUNCATE t1;
10911Warnings:
10912Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
10913
10914# check TRUNCATE success: 	1
10915# check layout success:    1
10916# End usability test (inc/partition_check.inc)
10917DROP TABLE t1;
10918CREATE TABLE t1 (
10919f_int1 INTEGER,
10920f_int2 INTEGER,
10921f_char1 CHAR(20),
10922f_char2 CHAR(20),
10923f_charbig VARCHAR(1000)
10924, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
10925)
10926PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
10927(PARTITION parta VALUES LESS THAN (0)
10928DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
10929INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
10930PARTITION partb VALUES LESS THAN (5)
10931DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
10932INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
10933PARTITION partc VALUES LESS THAN (10)
10934DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
10935INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
10936PARTITION partd VALUES LESS THAN (2147483646)
10937DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
10938INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir');
10939Warnings:
10940Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
10941INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
10942SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
10943Warnings:
10944Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
10945# Start usability test (inc/partition_check.inc)
10946create_command
10947SHOW CREATE TABLE t1;
10948Table	Create Table
10949t1	CREATE TABLE `t1` (
10950  `f_int1` int(11) DEFAULT NULL,
10951  `f_int2` int(11) DEFAULT NULL,
10952  `f_char1` char(20) DEFAULT NULL,
10953  `f_char2` char(20) DEFAULT NULL,
10954  `f_charbig` varchar(1000) DEFAULT NULL,
10955  UNIQUE KEY `uidx1` (`f_int1`,`f_int2`),
10956  UNIQUE KEY `uidx2` (`f_int2`,`f_int1`)
10957) ENGINE=MyISAM DEFAULT CHARSET=latin1
10958/*!50100 PARTITION BY RANGE (f_int1 DIV 2)
10959SUBPARTITION BY HASH (f_int1)
10960SUBPARTITIONS 2
10961(PARTITION parta VALUES LESS THAN (0) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
10962 PARTITION partb VALUES LESS THAN (5) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
10963 PARTITION partc VALUES LESS THAN (10) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
10964 PARTITION partd VALUES LESS THAN (2147483646) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM) */
10965
10966unified filelist
10967t1#P#parta#SP#partasp0.MYD
10968t1#P#parta#SP#partasp0.MYI
10969t1#P#parta#SP#partasp1.MYD
10970t1#P#parta#SP#partasp1.MYI
10971t1#P#partb#SP#partbsp0.MYD
10972t1#P#partb#SP#partbsp0.MYI
10973t1#P#partb#SP#partbsp1.MYD
10974t1#P#partb#SP#partbsp1.MYI
10975t1#P#partc#SP#partcsp0.MYD
10976t1#P#partc#SP#partcsp0.MYI
10977t1#P#partc#SP#partcsp1.MYD
10978t1#P#partc#SP#partcsp1.MYI
10979t1#P#partd#SP#partdsp0.MYD
10980t1#P#partd#SP#partdsp0.MYI
10981t1#P#partd#SP#partdsp1.MYD
10982t1#P#partd#SP#partdsp1.MYI
10983t1.frm
10984t1.par
10985t1#P#parta#SP#partasp0.MYD
10986t1#P#parta#SP#partasp1.MYD
10987t1#P#partb#SP#partbsp0.MYD
10988t1#P#partb#SP#partbsp1.MYD
10989t1#P#partc#SP#partcsp0.MYD
10990t1#P#partc#SP#partcsp1.MYD
10991t1#P#partd#SP#partdsp0.MYD
10992t1#P#partd#SP#partdsp1.MYD
10993t1#P#parta#SP#partasp0.MYI
10994t1#P#parta#SP#partasp1.MYI
10995t1#P#partb#SP#partbsp0.MYI
10996t1#P#partb#SP#partbsp1.MYI
10997t1#P#partc#SP#partcsp0.MYI
10998t1#P#partc#SP#partcsp1.MYI
10999t1#P#partd#SP#partdsp0.MYI
11000t1#P#partd#SP#partdsp1.MYI
11001
11002# check prerequisites-1 success:    1
11003# check COUNT(*) success:    1
11004# check MIN/MAX(f_int1) success:    1
11005# check MIN/MAX(f_int2) success:    1
11006INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11007SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
11008CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
11009WHERE f_int1 IN (2,3);
11010ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
11011# check prerequisites-3 success:    1
11012# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
11013INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11014SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
11015CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
11016WHERE f_int1 IN (2,3);
11017DELETE FROM t1 WHERE f_charbig = 'delete me';
11018INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11019SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
11020CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
11021WHERE f_int1 IN (2,3);
11022DELETE FROM t1 WHERE f_charbig = 'delete me';
11023# check read via f_int1 success: 1
11024# check read via f_int2 success: 1
11025
11026# check multiple-1 success: 	1
11027DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
11028
11029# check multiple-2 success: 	1
11030INSERT INTO t1 SELECT * FROM t0_template
11031WHERE MOD(f_int1,3) = 0;
11032
11033# check multiple-3 success: 	1
11034UPDATE t1 SET f_int1 = f_int1 + @max_row
11035WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
11036AND @max_row_div2 + @max_row_div4;
11037
11038# check multiple-4 success: 	1
11039DELETE FROM t1
11040WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
11041AND @max_row_div2 + @max_row_div4 + @max_row;
11042
11043# check multiple-5 success: 	1
11044SELECT COUNT(*) INTO @try_count FROM t0_template
11045WHERE MOD(f_int1,3) = 0
11046AND f_int1 BETWEEN @max_row_div2 AND @max_row;
11047SELECT COUNT(*) INTO @clash_count
11048FROM t1 INNER JOIN t0_template USING(f_int1)
11049WHERE MOD(f_int1,3) = 0
11050AND f_int1 BETWEEN @max_row_div2 AND @max_row;
11051SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
11052INSERT INTO t1
11053SET f_int1 = @cur_value , f_int2 = @cur_value,
11054f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
11055f_charbig = '#SINGLE#';
11056
11057# check single-1 success: 	1
11058SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
11059INSERT INTO t1
11060SET f_int1 = @cur_value , f_int2 = @cur_value,
11061f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
11062f_charbig = '#SINGLE#';
11063
11064# check single-2 success: 	1
11065SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
11066SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
11067UPDATE t1 SET f_int1 = @cur_value2
11068WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
11069
11070# check single-3 success: 	1
11071SET @cur_value1= -1;
11072SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
11073UPDATE t1 SET f_int1 = @cur_value1
11074WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
11075
11076# check single-4 success: 	1
11077SELECT MAX(f_int1) INTO @cur_value FROM t1;
11078DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
11079
11080# check single-5 success: 	1
11081DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
11082
11083# check single-6 success: 	1
11084INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
11085
11086# check single-7 success: 	1
11087DELETE FROM t1 WHERE f_charbig = '#2147483647##';
11088DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
11089INSERT t1 SET f_int1 = 0 , f_int2 = 0,
11090f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
11091f_charbig = '#NULL#';
11092INSERT INTO t1
11093SET f_int1 = NULL , f_int2 = -@max_row,
11094f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
11095f_charbig = '#NULL#';
11096# check null success:    1
11097
11098# check null-1 success: 	1
11099UPDATE t1 SET f_int1 = -@max_row
11100WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
11101AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
11102
11103# check null-2 success: 	1
11104UPDATE t1 SET f_int1 = NULL
11105WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
11106AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
11107
11108# check null-3 success: 	1
11109DELETE FROM t1
11110WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
11111AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
11112
11113# check null-4 success: 	1
11114DELETE FROM t1
11115WHERE f_int1 = 0 AND f_int2 = 0
11116AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
11117AND f_charbig = '#NULL#';
11118INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11119SELECT f_int1, f_int1, '', '', 'was inserted'
11120   FROM t0_template source_tab
11121WHERE MOD(f_int1,3) = 0
11122AND f_int1 BETWEEN @max_row_div2 AND @max_row
11123ON DUPLICATE KEY
11124UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
11125f_int2 = 2 * @max_row + source_tab.f_int1,
11126f_charbig = 'was updated';
11127
11128# check unique-1-a success: 	1
11129
11130# check unique-1-b success: 	1
11131DELETE FROM t1 WHERE f_charbig = 'was inserted';
11132UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11133f_int2 = CAST(f_char1 AS SIGNED INT),
11134f_charbig = CONCAT('===',f_char1,'===')
11135WHERE f_charbig = 'was updated';
11136REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11137SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
11138   FROM t0_template source_tab
11139WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
11140
11141# check replace success: 	1
11142DELETE FROM t1
11143WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
11144DELETE FROM t1
11145WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
11146f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
11147UPDATE t1 SET f_int2 = f_int1,
11148f_char1 = CAST(f_int1 AS CHAR),
11149f_char2 = CAST(f_int1 AS CHAR),
11150f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
11151WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
11152SET AUTOCOMMIT= 0;
11153INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11154SELECT f_int1, f_int1, '', '', 'was inserted'
11155FROM t0_template source_tab
11156WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
11157
11158# check transactions-1 success: 	1
11159COMMIT WORK;
11160
11161# check transactions-2 success: 	1
11162ROLLBACK WORK;
11163
11164# check transactions-3 success: 	1
11165DELETE FROM t1 WHERE f_charbig = 'was inserted';
11166COMMIT WORK;
11167ROLLBACK WORK;
11168
11169# check transactions-4 success: 	1
11170INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11171SELECT f_int1, f_int1, '', '', 'was inserted'
11172FROM t0_template source_tab
11173WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
11174
11175# check transactions-5 success: 	1
11176ROLLBACK WORK;
11177Warnings:
11178Warning	1196	Some non-transactional changed tables couldn't be rolled back
11179
11180# check transactions-6 success: 	1
11181# INFO: Storage engine used for t1 seems to be not transactional.
11182COMMIT;
11183
11184# check transactions-7 success: 	1
11185DELETE FROM t1 WHERE f_charbig = 'was inserted';
11186COMMIT WORK;
11187SET @@session.sql_mode = 'traditional';
11188Warnings:
11189Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
11190SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
11191INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11192SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
11193'', '', 'was inserted' FROM t0_template
11194WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
11195ERROR 22012: Division by 0
11196COMMIT;
11197
11198# check transactions-8 success: 	1
11199# INFO: Storage engine used for t1 seems to be unable to revert
11200#       changes made by the failing statement.
11201SET @@session.sql_mode = '';
11202Warnings:
11203Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
11204SET AUTOCOMMIT= 1;
11205DELETE FROM t1 WHERE f_charbig = 'was inserted';
11206COMMIT WORK;
11207UPDATE t1 SET f_charbig = REPEAT('b', 1000);
11208
11209# check special-1 success: 	1
11210UPDATE t1 SET f_charbig = '';
11211
11212# check special-2 success: 	1
11213UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
11214INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
11215SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
11216WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11217INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11218SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11219'just inserted' FROM t0_template
11220WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11221CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
11222BEGIN
11223UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11224f_charbig = 'updated by trigger'
11225      WHERE f_int1 = new.f_int1;
11226END|
11227INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11228SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
11229WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11230
11231# check trigger-1 success: 	1
11232DROP TRIGGER trg_1;
11233UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11234f_int2 = CAST(f_char1 AS SIGNED INT),
11235f_charbig = 'just inserted'
11236   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11237DELETE FROM t0_aux
11238WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11239INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11240SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11241'just inserted' FROM t0_template
11242WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11243CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
11244BEGIN
11245UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11246f_charbig = 'updated by trigger'
11247      WHERE f_int1 = new.f_int1;
11248END|
11249INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11250SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
11251WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11252
11253# check trigger-2 success: 	1
11254DROP TRIGGER trg_1;
11255UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11256f_int2 = CAST(f_char1 AS SIGNED INT),
11257f_charbig = 'just inserted'
11258   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11259DELETE FROM t0_aux
11260WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11261INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11262SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11263'just inserted' FROM t0_template
11264WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11265CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
11266BEGIN
11267UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11268f_charbig = 'updated by trigger'
11269      WHERE f_int1 = new.f_int1;
11270END|
11271UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
11272WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11273
11274# check trigger-3 success: 	1
11275DROP TRIGGER trg_1;
11276UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11277f_int2 = CAST(f_char1 AS SIGNED INT),
11278f_charbig = 'just inserted'
11279   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11280DELETE FROM t0_aux
11281WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11282INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11283SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11284'just inserted' FROM t0_template
11285WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11286CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
11287BEGIN
11288UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11289f_charbig = 'updated by trigger'
11290      WHERE f_int1 = - old.f_int1;
11291END|
11292UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
11293WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11294
11295# check trigger-4 success: 	1
11296DROP TRIGGER trg_1;
11297UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11298f_int2 = CAST(f_char1 AS SIGNED INT),
11299f_charbig = 'just inserted'
11300   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11301DELETE FROM t0_aux
11302WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11303INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11304SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11305'just inserted' FROM t0_template
11306WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11307CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
11308BEGIN
11309UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11310f_charbig = 'updated by trigger'
11311      WHERE f_int1 = new.f_int1;
11312END|
11313UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
11314WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11315
11316# check trigger-5 success: 	1
11317DROP TRIGGER trg_1;
11318UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11319f_int2 = CAST(f_char1 AS SIGNED INT),
11320f_charbig = 'just inserted'
11321   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11322DELETE FROM t0_aux
11323WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11324INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11325SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11326'just inserted' FROM t0_template
11327WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11328CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
11329BEGIN
11330UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11331f_charbig = 'updated by trigger'
11332      WHERE f_int1 = - old.f_int1;
11333END|
11334UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
11335WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11336
11337# check trigger-6 success: 	1
11338DROP TRIGGER trg_1;
11339UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11340f_int2 = CAST(f_char1 AS SIGNED INT),
11341f_charbig = 'just inserted'
11342   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11343DELETE FROM t0_aux
11344WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11345INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11346SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11347'just inserted' FROM t0_template
11348WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11349CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
11350BEGIN
11351UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11352f_charbig = 'updated by trigger'
11353      WHERE f_int1 = - old.f_int1;
11354END|
11355DELETE FROM t0_aux
11356WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11357
11358# check trigger-7 success: 	1
11359DROP TRIGGER trg_1;
11360UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11361f_int2 = CAST(f_char1 AS SIGNED INT),
11362f_charbig = 'just inserted'
11363   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11364DELETE FROM t0_aux
11365WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11366INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11367SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11368'just inserted' FROM t0_template
11369WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11370CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
11371BEGIN
11372UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11373f_charbig = 'updated by trigger'
11374      WHERE f_int1 = - old.f_int1;
11375END|
11376DELETE FROM t0_aux
11377WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11378
11379# check trigger-8 success: 	1
11380DROP TRIGGER trg_1;
11381UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11382f_int2 = CAST(f_char1 AS SIGNED INT),
11383f_charbig = 'just inserted'
11384   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11385DELETE FROM t0_aux
11386WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11387DELETE FROM t1
11388WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11389CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
11390BEGIN
11391SET new.f_int1 = old.f_int1 + @max_row,
11392new.f_int2 = old.f_int2 - @max_row,
11393new.f_charbig = '####updated per update trigger####';
11394END|
11395UPDATE t1
11396SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
11397f_charbig = '####updated per update statement itself####';
11398Warnings:
11399Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
11400
11401# check trigger-9 success: 	1
11402DROP TRIGGER trg_2;
11403UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11404f_int2 = CAST(f_char1 AS SIGNED INT),
11405f_charbig = CONCAT('===',f_char1,'===');
11406Warnings:
11407Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
11408CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
11409BEGIN
11410SET new.f_int1 = new.f_int1 + @max_row,
11411new.f_int2 = new.f_int2 - @max_row,
11412new.f_charbig = '####updated per update trigger####';
11413END|
11414UPDATE t1
11415SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
11416f_charbig = '####updated per update statement itself####';
11417Warnings:
11418Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
11419
11420# check trigger-10 success: 	1
11421DROP TRIGGER trg_2;
11422UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11423f_int2 = CAST(f_char1 AS SIGNED INT),
11424f_charbig = CONCAT('===',f_char1,'===');
11425Warnings:
11426Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
11427CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
11428BEGIN
11429SET new.f_int1 = @my_max1 + @counter,
11430new.f_int2 = @my_min2 - @counter,
11431new.f_charbig = '####updated per insert trigger####';
11432SET @counter = @counter + 1;
11433END|
11434SET @counter = 1;
11435SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
11436Warnings:
11437Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
11438INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11439SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
11440CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
11441WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
11442ORDER BY f_int1;
11443DROP TRIGGER trg_3;
11444
11445# check trigger-11 success: 	1
11446Warnings:
11447Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
11448DELETE FROM t1
11449WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
11450AND f_int2 <> CAST(f_char1 AS SIGNED INT)
11451AND f_charbig = '####updated per insert trigger####';
11452CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
11453BEGIN
11454SET new.f_int1 = @my_max1 + @counter,
11455new.f_int2 = @my_min2 - @counter,
11456new.f_charbig = '####updated per insert trigger####';
11457SET @counter = @counter + 1;
11458END|
11459SET @counter = 1;
11460SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
11461Warnings:
11462Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
11463INSERT INTO t1 (f_char1, f_char2, f_charbig)
11464SELECT CAST(f_int1 AS CHAR),
11465CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
11466WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
11467ORDER BY f_int1;
11468DROP TRIGGER trg_3;
11469
11470# check trigger-12 success: 	1
11471Warnings:
11472Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
11473DELETE FROM t1
11474WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
11475AND f_int2 <> CAST(f_char1 AS SIGNED INT)
11476AND f_charbig = '####updated per insert trigger####';
11477ANALYZE  TABLE t1;
11478Table	Op	Msg_type	Msg_text
11479test.t1	analyze	status	OK
11480test.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.
11481CHECK    TABLE t1 EXTENDED;
11482Table	Op	Msg_type	Msg_text
11483test.t1	check	status	OK
11484test.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.
11485CHECKSUM TABLE t1 EXTENDED;
11486Table	Checksum
11487test.t1	<some_value>
11488OPTIMIZE TABLE t1;
11489Table	Op	Msg_type	Msg_text
11490test.t1	optimize	status	OK
11491test.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.
11492# check layout success:    1
11493REPAIR   TABLE t1 EXTENDED;
11494Table	Op	Msg_type	Msg_text
11495test.t1	repair	status	OK
11496test.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.
11497# check layout success:    1
11498TRUNCATE t1;
11499Warnings:
11500Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
11501
11502# check TRUNCATE success: 	1
11503# check layout success:    1
11504# End usability test (inc/partition_check.inc)
11505DROP TABLE t1;
11506CREATE TABLE t1 (
11507f_int1 INTEGER,
11508f_int2 INTEGER,
11509f_char1 CHAR(20),
11510f_char2 CHAR(20),
11511f_charbig VARCHAR(1000)
11512, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
11513)
11514PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
11515(PARTITION part1 VALUES LESS THAN (0)
11516(SUBPARTITION subpart11 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
11517SUBPARTITION subpart12 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'),
11518PARTITION part2 VALUES LESS THAN (5)
11519(SUBPARTITION subpart21 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
11520SUBPARTITION subpart22 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'),
11521PARTITION part3 VALUES LESS THAN (10)
11522(SUBPARTITION subpart31 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
11523SUBPARTITION subpart32 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'),
11524PARTITION part4 VALUES LESS THAN (2147483646)
11525(SUBPARTITION subpart41 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
11526SUBPARTITION subpart42 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'));
11527Warnings:
11528Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
11529INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
11530SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
11531Warnings:
11532Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
11533# Start usability test (inc/partition_check.inc)
11534create_command
11535SHOW CREATE TABLE t1;
11536Table	Create Table
11537t1	CREATE TABLE `t1` (
11538  `f_int1` int(11) DEFAULT NULL,
11539  `f_int2` int(11) DEFAULT NULL,
11540  `f_char1` char(20) DEFAULT NULL,
11541  `f_char2` char(20) DEFAULT NULL,
11542  `f_charbig` varchar(1000) DEFAULT NULL,
11543  UNIQUE KEY `uidx1` (`f_int1`,`f_int2`),
11544  UNIQUE KEY `uidx2` (`f_int2`,`f_int1`)
11545) ENGINE=MyISAM DEFAULT CHARSET=latin1
11546/*!50100 PARTITION BY RANGE (f_int1)
11547SUBPARTITION BY KEY (f_int1)
11548(PARTITION part1 VALUES LESS THAN (0)
11549 (SUBPARTITION subpart11 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
11550  SUBPARTITION subpart12 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM),
11551 PARTITION part2 VALUES LESS THAN (5)
11552 (SUBPARTITION subpart21 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
11553  SUBPARTITION subpart22 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM),
11554 PARTITION part3 VALUES LESS THAN (10)
11555 (SUBPARTITION subpart31 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
11556  SUBPARTITION subpart32 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM),
11557 PARTITION part4 VALUES LESS THAN (2147483646)
11558 (SUBPARTITION subpart41 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
11559  SUBPARTITION subpart42 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM)) */
11560
11561unified filelist
11562t1#P#part1#SP#subpart11.MYD
11563t1#P#part1#SP#subpart11.MYI
11564t1#P#part1#SP#subpart12.MYD
11565t1#P#part1#SP#subpart12.MYI
11566t1#P#part2#SP#subpart21.MYD
11567t1#P#part2#SP#subpart21.MYI
11568t1#P#part2#SP#subpart22.MYD
11569t1#P#part2#SP#subpart22.MYI
11570t1#P#part3#SP#subpart31.MYD
11571t1#P#part3#SP#subpart31.MYI
11572t1#P#part3#SP#subpart32.MYD
11573t1#P#part3#SP#subpart32.MYI
11574t1#P#part4#SP#subpart41.MYD
11575t1#P#part4#SP#subpart41.MYI
11576t1#P#part4#SP#subpart42.MYD
11577t1#P#part4#SP#subpart42.MYI
11578t1.frm
11579t1.par
11580t1#P#part1#SP#subpart11.MYD
11581t1#P#part1#SP#subpart12.MYD
11582t1#P#part2#SP#subpart21.MYD
11583t1#P#part2#SP#subpart22.MYD
11584t1#P#part3#SP#subpart31.MYD
11585t1#P#part3#SP#subpart32.MYD
11586t1#P#part4#SP#subpart41.MYD
11587t1#P#part4#SP#subpart42.MYD
11588t1#P#part1#SP#subpart11.MYI
11589t1#P#part1#SP#subpart12.MYI
11590t1#P#part2#SP#subpart21.MYI
11591t1#P#part2#SP#subpart22.MYI
11592t1#P#part3#SP#subpart31.MYI
11593t1#P#part3#SP#subpart32.MYI
11594t1#P#part4#SP#subpart41.MYI
11595t1#P#part4#SP#subpart42.MYI
11596
11597# check prerequisites-1 success:    1
11598# check COUNT(*) success:    1
11599# check MIN/MAX(f_int1) success:    1
11600# check MIN/MAX(f_int2) success:    1
11601INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11602SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
11603CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
11604WHERE f_int1 IN (2,3);
11605ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
11606# check prerequisites-3 success:    1
11607# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
11608INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11609SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
11610CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
11611WHERE f_int1 IN (2,3);
11612DELETE FROM t1 WHERE f_charbig = 'delete me';
11613INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11614SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
11615CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
11616WHERE f_int1 IN (2,3);
11617DELETE FROM t1 WHERE f_charbig = 'delete me';
11618# check read via f_int1 success: 1
11619# check read via f_int2 success: 1
11620
11621# check multiple-1 success: 	1
11622DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
11623
11624# check multiple-2 success: 	1
11625INSERT INTO t1 SELECT * FROM t0_template
11626WHERE MOD(f_int1,3) = 0;
11627
11628# check multiple-3 success: 	1
11629UPDATE t1 SET f_int1 = f_int1 + @max_row
11630WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
11631AND @max_row_div2 + @max_row_div4;
11632
11633# check multiple-4 success: 	1
11634DELETE FROM t1
11635WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
11636AND @max_row_div2 + @max_row_div4 + @max_row;
11637
11638# check multiple-5 success: 	1
11639SELECT COUNT(*) INTO @try_count FROM t0_template
11640WHERE MOD(f_int1,3) = 0
11641AND f_int1 BETWEEN @max_row_div2 AND @max_row;
11642SELECT COUNT(*) INTO @clash_count
11643FROM t1 INNER JOIN t0_template USING(f_int1)
11644WHERE MOD(f_int1,3) = 0
11645AND f_int1 BETWEEN @max_row_div2 AND @max_row;
11646SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
11647INSERT INTO t1
11648SET f_int1 = @cur_value , f_int2 = @cur_value,
11649f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
11650f_charbig = '#SINGLE#';
11651
11652# check single-1 success: 	1
11653SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
11654INSERT INTO t1
11655SET f_int1 = @cur_value , f_int2 = @cur_value,
11656f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
11657f_charbig = '#SINGLE#';
11658
11659# check single-2 success: 	1
11660SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
11661SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
11662UPDATE t1 SET f_int1 = @cur_value2
11663WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
11664
11665# check single-3 success: 	1
11666SET @cur_value1= -1;
11667SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
11668UPDATE t1 SET f_int1 = @cur_value1
11669WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
11670
11671# check single-4 success: 	1
11672SELECT MAX(f_int1) INTO @cur_value FROM t1;
11673DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
11674
11675# check single-5 success: 	1
11676DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
11677
11678# check single-6 success: 	1
11679INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
11680ERROR HY000: Table has no partition for value 2147483647
11681DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
11682INSERT t1 SET f_int1 = 0 , f_int2 = 0,
11683f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
11684f_charbig = '#NULL#';
11685INSERT INTO t1
11686SET f_int1 = NULL , f_int2 = -@max_row,
11687f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
11688f_charbig = '#NULL#';
11689# check null success:    1
11690
11691# check null-1 success: 	1
11692UPDATE t1 SET f_int1 = -@max_row
11693WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
11694AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
11695
11696# check null-2 success: 	1
11697UPDATE t1 SET f_int1 = NULL
11698WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
11699AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
11700
11701# check null-3 success: 	1
11702DELETE FROM t1
11703WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
11704AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
11705
11706# check null-4 success: 	1
11707DELETE FROM t1
11708WHERE f_int1 = 0 AND f_int2 = 0
11709AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
11710AND f_charbig = '#NULL#';
11711INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11712SELECT f_int1, f_int1, '', '', 'was inserted'
11713   FROM t0_template source_tab
11714WHERE MOD(f_int1,3) = 0
11715AND f_int1 BETWEEN @max_row_div2 AND @max_row
11716ON DUPLICATE KEY
11717UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
11718f_int2 = 2 * @max_row + source_tab.f_int1,
11719f_charbig = 'was updated';
11720
11721# check unique-1-a success: 	1
11722
11723# check unique-1-b success: 	1
11724DELETE FROM t1 WHERE f_charbig = 'was inserted';
11725UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11726f_int2 = CAST(f_char1 AS SIGNED INT),
11727f_charbig = CONCAT('===',f_char1,'===')
11728WHERE f_charbig = 'was updated';
11729REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11730SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
11731   FROM t0_template source_tab
11732WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
11733
11734# check replace success: 	1
11735DELETE FROM t1
11736WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
11737DELETE FROM t1
11738WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
11739f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
11740UPDATE t1 SET f_int2 = f_int1,
11741f_char1 = CAST(f_int1 AS CHAR),
11742f_char2 = CAST(f_int1 AS CHAR),
11743f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
11744WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
11745SET AUTOCOMMIT= 0;
11746INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11747SELECT f_int1, f_int1, '', '', 'was inserted'
11748FROM t0_template source_tab
11749WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
11750
11751# check transactions-1 success: 	1
11752COMMIT WORK;
11753
11754# check transactions-2 success: 	1
11755ROLLBACK WORK;
11756
11757# check transactions-3 success: 	1
11758DELETE FROM t1 WHERE f_charbig = 'was inserted';
11759COMMIT WORK;
11760ROLLBACK WORK;
11761
11762# check transactions-4 success: 	1
11763INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11764SELECT f_int1, f_int1, '', '', 'was inserted'
11765FROM t0_template source_tab
11766WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
11767
11768# check transactions-5 success: 	1
11769ROLLBACK WORK;
11770Warnings:
11771Warning	1196	Some non-transactional changed tables couldn't be rolled back
11772
11773# check transactions-6 success: 	1
11774# INFO: Storage engine used for t1 seems to be not transactional.
11775COMMIT;
11776
11777# check transactions-7 success: 	1
11778DELETE FROM t1 WHERE f_charbig = 'was inserted';
11779COMMIT WORK;
11780SET @@session.sql_mode = 'traditional';
11781Warnings:
11782Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
11783SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
11784INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11785SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
11786'', '', 'was inserted' FROM t0_template
11787WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
11788ERROR 22012: Division by 0
11789COMMIT;
11790
11791# check transactions-8 success: 	1
11792# INFO: Storage engine used for t1 seems to be unable to revert
11793#       changes made by the failing statement.
11794SET @@session.sql_mode = '';
11795Warnings:
11796Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
11797SET AUTOCOMMIT= 1;
11798DELETE FROM t1 WHERE f_charbig = 'was inserted';
11799COMMIT WORK;
11800UPDATE t1 SET f_charbig = REPEAT('b', 1000);
11801
11802# check special-1 success: 	1
11803UPDATE t1 SET f_charbig = '';
11804
11805# check special-2 success: 	1
11806UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
11807INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
11808SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
11809WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11810INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11811SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11812'just inserted' FROM t0_template
11813WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11814CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
11815BEGIN
11816UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11817f_charbig = 'updated by trigger'
11818      WHERE f_int1 = new.f_int1;
11819END|
11820INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11821SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
11822WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11823
11824# check trigger-1 success: 	1
11825DROP TRIGGER trg_1;
11826UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11827f_int2 = CAST(f_char1 AS SIGNED INT),
11828f_charbig = 'just inserted'
11829   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11830DELETE FROM t0_aux
11831WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11832INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11833SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11834'just inserted' FROM t0_template
11835WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11836CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
11837BEGIN
11838UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11839f_charbig = 'updated by trigger'
11840      WHERE f_int1 = new.f_int1;
11841END|
11842INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11843SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
11844WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11845
11846# check trigger-2 success: 	1
11847DROP TRIGGER trg_1;
11848UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11849f_int2 = CAST(f_char1 AS SIGNED INT),
11850f_charbig = 'just inserted'
11851   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11852DELETE FROM t0_aux
11853WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11854INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11855SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11856'just inserted' FROM t0_template
11857WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11858CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
11859BEGIN
11860UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11861f_charbig = 'updated by trigger'
11862      WHERE f_int1 = new.f_int1;
11863END|
11864UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
11865WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11866
11867# check trigger-3 success: 	1
11868DROP TRIGGER trg_1;
11869UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11870f_int2 = CAST(f_char1 AS SIGNED INT),
11871f_charbig = 'just inserted'
11872   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11873DELETE FROM t0_aux
11874WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11875INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11876SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11877'just inserted' FROM t0_template
11878WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11879CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
11880BEGIN
11881UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11882f_charbig = 'updated by trigger'
11883      WHERE f_int1 = - old.f_int1;
11884END|
11885UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
11886WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11887
11888# check trigger-4 success: 	1
11889DROP TRIGGER trg_1;
11890UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11891f_int2 = CAST(f_char1 AS SIGNED INT),
11892f_charbig = 'just inserted'
11893   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11894DELETE FROM t0_aux
11895WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11896INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11897SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11898'just inserted' FROM t0_template
11899WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11900CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
11901BEGIN
11902UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11903f_charbig = 'updated by trigger'
11904      WHERE f_int1 = new.f_int1;
11905END|
11906UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
11907WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11908
11909# check trigger-5 success: 	1
11910DROP TRIGGER trg_1;
11911UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11912f_int2 = CAST(f_char1 AS SIGNED INT),
11913f_charbig = 'just inserted'
11914   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11915DELETE FROM t0_aux
11916WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11917INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11918SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11919'just inserted' FROM t0_template
11920WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11921CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
11922BEGIN
11923UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11924f_charbig = 'updated by trigger'
11925      WHERE f_int1 = - old.f_int1;
11926END|
11927UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
11928WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11929
11930# check trigger-6 success: 	1
11931DROP TRIGGER trg_1;
11932UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11933f_int2 = CAST(f_char1 AS SIGNED INT),
11934f_charbig = 'just inserted'
11935   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11936DELETE FROM t0_aux
11937WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11938INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11939SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11940'just inserted' FROM t0_template
11941WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11942CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
11943BEGIN
11944UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11945f_charbig = 'updated by trigger'
11946      WHERE f_int1 = - old.f_int1;
11947END|
11948DELETE FROM t0_aux
11949WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11950
11951# check trigger-7 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 AFTER DELETE 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 = - old.f_int1;
11968END|
11969DELETE FROM t0_aux
11970WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11971
11972# check trigger-8 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;
11980DELETE FROM t1
11981WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11982CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
11983BEGIN
11984SET new.f_int1 = old.f_int1 + @max_row,
11985new.f_int2 = old.f_int2 - @max_row,
11986new.f_charbig = '####updated per update trigger####';
11987END|
11988UPDATE t1
11989SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
11990f_charbig = '####updated per update statement itself####';
11991Warnings:
11992Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
11993
11994# check trigger-9 success: 	1
11995DROP TRIGGER trg_2;
11996UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11997f_int2 = CAST(f_char1 AS SIGNED INT),
11998f_charbig = CONCAT('===',f_char1,'===');
11999Warnings:
12000Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
12001CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
12002BEGIN
12003SET new.f_int1 = new.f_int1 + @max_row,
12004new.f_int2 = new.f_int2 - @max_row,
12005new.f_charbig = '####updated per update trigger####';
12006END|
12007UPDATE t1
12008SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
12009f_charbig = '####updated per update statement itself####';
12010Warnings:
12011Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
12012
12013# check trigger-10 success: 	1
12014DROP TRIGGER trg_2;
12015UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12016f_int2 = CAST(f_char1 AS SIGNED INT),
12017f_charbig = CONCAT('===',f_char1,'===');
12018Warnings:
12019Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
12020CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
12021BEGIN
12022SET new.f_int1 = @my_max1 + @counter,
12023new.f_int2 = @my_min2 - @counter,
12024new.f_charbig = '####updated per insert trigger####';
12025SET @counter = @counter + 1;
12026END|
12027SET @counter = 1;
12028SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
12029Warnings:
12030Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
12031INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12032SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
12033CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
12034WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
12035ORDER BY f_int1;
12036DROP TRIGGER trg_3;
12037
12038# check trigger-11 success: 	1
12039Warnings:
12040Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
12041DELETE FROM t1
12042WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
12043AND f_int2 <> CAST(f_char1 AS SIGNED INT)
12044AND f_charbig = '####updated per insert trigger####';
12045CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
12046BEGIN
12047SET new.f_int1 = @my_max1 + @counter,
12048new.f_int2 = @my_min2 - @counter,
12049new.f_charbig = '####updated per insert trigger####';
12050SET @counter = @counter + 1;
12051END|
12052SET @counter = 1;
12053SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
12054Warnings:
12055Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
12056INSERT INTO t1 (f_char1, f_char2, f_charbig)
12057SELECT CAST(f_int1 AS CHAR),
12058CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
12059WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
12060ORDER BY f_int1;
12061DROP TRIGGER trg_3;
12062
12063# check trigger-12 success: 	1
12064Warnings:
12065Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
12066DELETE FROM t1
12067WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
12068AND f_int2 <> CAST(f_char1 AS SIGNED INT)
12069AND f_charbig = '####updated per insert trigger####';
12070ANALYZE  TABLE t1;
12071Table	Op	Msg_type	Msg_text
12072test.t1	analyze	status	OK
12073test.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.
12074CHECK    TABLE t1 EXTENDED;
12075Table	Op	Msg_type	Msg_text
12076test.t1	check	status	OK
12077test.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.
12078CHECKSUM TABLE t1 EXTENDED;
12079Table	Checksum
12080test.t1	<some_value>
12081OPTIMIZE TABLE t1;
12082Table	Op	Msg_type	Msg_text
12083test.t1	optimize	status	OK
12084test.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.
12085# check layout success:    1
12086REPAIR   TABLE t1 EXTENDED;
12087Table	Op	Msg_type	Msg_text
12088test.t1	repair	status	OK
12089test.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.
12090# check layout success:    1
12091TRUNCATE t1;
12092Warnings:
12093Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
12094
12095# check TRUNCATE success: 	1
12096# check layout success:    1
12097# End usability test (inc/partition_check.inc)
12098DROP TABLE t1;
12099CREATE TABLE t1 (
12100f_int1 INTEGER,
12101f_int2 INTEGER,
12102f_char1 CHAR(20),
12103f_char2 CHAR(20),
12104f_charbig VARCHAR(1000)
12105, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
12106)
12107PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
12108(PARTITION part1 VALUES IN (0)
12109DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
12110INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'
12111(SUBPARTITION sp11
12112DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
12113INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
12114SUBPARTITION sp12
12115DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
12116INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'),
12117PARTITION part2 VALUES IN (1)
12118DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
12119INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'
12120(SUBPARTITION sp21
12121DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
12122INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
12123SUBPARTITION sp22
12124DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
12125INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'),
12126PARTITION part3 VALUES IN (2)
12127DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
12128INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'
12129(SUBPARTITION sp31,
12130SUBPARTITION sp32),
12131PARTITION part4 VALUES IN (NULL)
12132DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
12133INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'
12134(SUBPARTITION sp41
12135DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
12136INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
12137SUBPARTITION sp42
12138DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
12139INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'));
12140Warnings:
12141Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
12142INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
12143SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
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.
12146# Start usability test (inc/partition_check.inc)
12147create_command
12148SHOW CREATE TABLE t1;
12149Table	Create Table
12150t1	CREATE TABLE `t1` (
12151  `f_int1` int(11) DEFAULT NULL,
12152  `f_int2` int(11) DEFAULT NULL,
12153  `f_char1` char(20) DEFAULT NULL,
12154  `f_char2` char(20) DEFAULT NULL,
12155  `f_charbig` varchar(1000) DEFAULT NULL,
12156  UNIQUE KEY `uidx1` (`f_int1`,`f_int2`),
12157  UNIQUE KEY `uidx2` (`f_int2`,`f_int1`)
12158) ENGINE=MyISAM DEFAULT CHARSET=latin1
12159/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
12160SUBPARTITION BY HASH (f_int1 + 1)
12161(PARTITION part1 VALUES IN (0)
12162 (SUBPARTITION sp11 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
12163  SUBPARTITION sp12 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM),
12164 PARTITION part2 VALUES IN (1)
12165 (SUBPARTITION sp21 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
12166  SUBPARTITION sp22 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM),
12167 PARTITION part3 VALUES IN (2)
12168 (SUBPARTITION sp31 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
12169  SUBPARTITION sp32 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM),
12170 PARTITION part4 VALUES IN (NULL)
12171 (SUBPARTITION sp41 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
12172  SUBPARTITION sp42 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM)) */
12173
12174unified filelist
12175t1#P#part1#SP#sp11.MYD
12176t1#P#part1#SP#sp11.MYI
12177t1#P#part1#SP#sp12.MYD
12178t1#P#part1#SP#sp12.MYI
12179t1#P#part2#SP#sp21.MYD
12180t1#P#part2#SP#sp21.MYI
12181t1#P#part2#SP#sp22.MYD
12182t1#P#part2#SP#sp22.MYI
12183t1#P#part3#SP#sp31.MYD
12184t1#P#part3#SP#sp31.MYI
12185t1#P#part3#SP#sp32.MYD
12186t1#P#part3#SP#sp32.MYI
12187t1#P#part4#SP#sp41.MYD
12188t1#P#part4#SP#sp41.MYI
12189t1#P#part4#SP#sp42.MYD
12190t1#P#part4#SP#sp42.MYI
12191t1.frm
12192t1.par
12193t1#P#part1#SP#sp11.MYD
12194t1#P#part1#SP#sp12.MYD
12195t1#P#part2#SP#sp21.MYD
12196t1#P#part2#SP#sp22.MYD
12197t1#P#part3#SP#sp31.MYD
12198t1#P#part3#SP#sp32.MYD
12199t1#P#part4#SP#sp41.MYD
12200t1#P#part4#SP#sp42.MYD
12201t1#P#part1#SP#sp11.MYI
12202t1#P#part1#SP#sp12.MYI
12203t1#P#part2#SP#sp21.MYI
12204t1#P#part2#SP#sp22.MYI
12205t1#P#part3#SP#sp31.MYI
12206t1#P#part3#SP#sp32.MYI
12207t1#P#part4#SP#sp41.MYI
12208t1#P#part4#SP#sp42.MYI
12209
12210# check prerequisites-1 success:    1
12211# check COUNT(*) success:    1
12212# check MIN/MAX(f_int1) success:    1
12213# check MIN/MAX(f_int2) success:    1
12214INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12215SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
12216CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
12217WHERE f_int1 IN (2,3);
12218ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
12219# check prerequisites-3 success:    1
12220# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
12221INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12222SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
12223CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
12224WHERE f_int1 IN (2,3);
12225DELETE FROM t1 WHERE f_charbig = 'delete me';
12226INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12227SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
12228CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
12229WHERE f_int1 IN (2,3);
12230DELETE FROM t1 WHERE f_charbig = 'delete me';
12231# check read via f_int1 success: 1
12232# check read via f_int2 success: 1
12233
12234# check multiple-1 success: 	1
12235DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
12236
12237# check multiple-2 success: 	1
12238INSERT INTO t1 SELECT * FROM t0_template
12239WHERE MOD(f_int1,3) = 0;
12240
12241# check multiple-3 success: 	1
12242UPDATE t1 SET f_int1 = f_int1 + @max_row
12243WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
12244AND @max_row_div2 + @max_row_div4;
12245
12246# check multiple-4 success: 	1
12247DELETE FROM t1
12248WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
12249AND @max_row_div2 + @max_row_div4 + @max_row;
12250
12251# check multiple-5 success: 	1
12252SELECT COUNT(*) INTO @try_count FROM t0_template
12253WHERE MOD(f_int1,3) = 0
12254AND f_int1 BETWEEN @max_row_div2 AND @max_row;
12255SELECT COUNT(*) INTO @clash_count
12256FROM t1 INNER JOIN t0_template USING(f_int1)
12257WHERE MOD(f_int1,3) = 0
12258AND f_int1 BETWEEN @max_row_div2 AND @max_row;
12259SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
12260INSERT INTO t1
12261SET f_int1 = @cur_value , f_int2 = @cur_value,
12262f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
12263f_charbig = '#SINGLE#';
12264
12265# check single-1 success: 	1
12266SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
12267INSERT INTO t1
12268SET f_int1 = @cur_value , f_int2 = @cur_value,
12269f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
12270f_charbig = '#SINGLE#';
12271
12272# check single-2 success: 	1
12273SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
12274SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
12275UPDATE t1 SET f_int1 = @cur_value2
12276WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
12277
12278# check single-3 success: 	1
12279SET @cur_value1= -1;
12280SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
12281UPDATE t1 SET f_int1 = @cur_value1
12282WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
12283
12284# check single-4 success: 	1
12285SELECT MAX(f_int1) INTO @cur_value FROM t1;
12286DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
12287
12288# check single-5 success: 	1
12289DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
12290
12291# check single-6 success: 	1
12292INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
12293
12294# check single-7 success: 	1
12295DELETE FROM t1 WHERE f_charbig = '#2147483647##';
12296DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
12297INSERT t1 SET f_int1 = 0 , f_int2 = 0,
12298f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
12299f_charbig = '#NULL#';
12300INSERT INTO t1
12301SET f_int1 = NULL , f_int2 = -@max_row,
12302f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
12303f_charbig = '#NULL#';
12304# check null success:    1
12305
12306# check null-1 success: 	1
12307UPDATE t1 SET f_int1 = -@max_row
12308WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
12309AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
12310
12311# check null-2 success: 	1
12312UPDATE t1 SET f_int1 = NULL
12313WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
12314AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
12315
12316# check null-3 success: 	1
12317DELETE FROM t1
12318WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
12319AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
12320
12321# check null-4 success: 	1
12322DELETE FROM t1
12323WHERE f_int1 = 0 AND f_int2 = 0
12324AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
12325AND f_charbig = '#NULL#';
12326INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12327SELECT f_int1, f_int1, '', '', 'was inserted'
12328   FROM t0_template source_tab
12329WHERE MOD(f_int1,3) = 0
12330AND f_int1 BETWEEN @max_row_div2 AND @max_row
12331ON DUPLICATE KEY
12332UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
12333f_int2 = 2 * @max_row + source_tab.f_int1,
12334f_charbig = 'was updated';
12335
12336# check unique-1-a success: 	1
12337
12338# check unique-1-b success: 	1
12339DELETE FROM t1 WHERE f_charbig = 'was inserted';
12340UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12341f_int2 = CAST(f_char1 AS SIGNED INT),
12342f_charbig = CONCAT('===',f_char1,'===')
12343WHERE f_charbig = 'was updated';
12344REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12345SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
12346   FROM t0_template source_tab
12347WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
12348
12349# check replace success: 	1
12350DELETE FROM t1
12351WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
12352DELETE FROM t1
12353WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
12354f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
12355UPDATE t1 SET f_int2 = f_int1,
12356f_char1 = CAST(f_int1 AS CHAR),
12357f_char2 = CAST(f_int1 AS CHAR),
12358f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
12359WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
12360SET AUTOCOMMIT= 0;
12361INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12362SELECT f_int1, f_int1, '', '', 'was inserted'
12363FROM t0_template source_tab
12364WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
12365
12366# check transactions-1 success: 	1
12367COMMIT WORK;
12368
12369# check transactions-2 success: 	1
12370ROLLBACK WORK;
12371
12372# check transactions-3 success: 	1
12373DELETE FROM t1 WHERE f_charbig = 'was inserted';
12374COMMIT WORK;
12375ROLLBACK WORK;
12376
12377# check transactions-4 success: 	1
12378INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12379SELECT f_int1, f_int1, '', '', 'was inserted'
12380FROM t0_template source_tab
12381WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
12382
12383# check transactions-5 success: 	1
12384ROLLBACK WORK;
12385Warnings:
12386Warning	1196	Some non-transactional changed tables couldn't be rolled back
12387
12388# check transactions-6 success: 	1
12389# INFO: Storage engine used for t1 seems to be not transactional.
12390COMMIT;
12391
12392# check transactions-7 success: 	1
12393DELETE FROM t1 WHERE f_charbig = 'was inserted';
12394COMMIT WORK;
12395SET @@session.sql_mode = 'traditional';
12396Warnings:
12397Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
12398SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
12399INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12400SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
12401'', '', 'was inserted' FROM t0_template
12402WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
12403ERROR 22012: Division by 0
12404COMMIT;
12405
12406# check transactions-8 success: 	1
12407# INFO: Storage engine used for t1 seems to be unable to revert
12408#       changes made by the failing statement.
12409SET @@session.sql_mode = '';
12410Warnings:
12411Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
12412SET AUTOCOMMIT= 1;
12413DELETE FROM t1 WHERE f_charbig = 'was inserted';
12414COMMIT WORK;
12415UPDATE t1 SET f_charbig = REPEAT('b', 1000);
12416
12417# check special-1 success: 	1
12418UPDATE t1 SET f_charbig = '';
12419
12420# check special-2 success: 	1
12421UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
12422INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
12423SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
12424WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12425INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12426SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12427'just inserted' FROM t0_template
12428WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12429CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
12430BEGIN
12431UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12432f_charbig = 'updated by trigger'
12433      WHERE f_int1 = new.f_int1;
12434END|
12435INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12436SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
12437WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12438
12439# check trigger-1 success: 	1
12440DROP TRIGGER trg_1;
12441UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12442f_int2 = CAST(f_char1 AS SIGNED INT),
12443f_charbig = 'just inserted'
12444   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12445DELETE FROM t0_aux
12446WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12447INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12448SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12449'just inserted' FROM t0_template
12450WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12451CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
12452BEGIN
12453UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12454f_charbig = 'updated by trigger'
12455      WHERE f_int1 = new.f_int1;
12456END|
12457INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12458SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
12459WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12460
12461# check trigger-2 success: 	1
12462DROP TRIGGER trg_1;
12463UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12464f_int2 = CAST(f_char1 AS SIGNED INT),
12465f_charbig = 'just inserted'
12466   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12467DELETE FROM t0_aux
12468WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12469INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12470SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12471'just inserted' FROM t0_template
12472WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12473CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
12474BEGIN
12475UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12476f_charbig = 'updated by trigger'
12477      WHERE f_int1 = new.f_int1;
12478END|
12479UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
12480WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12481
12482# check trigger-3 success: 	1
12483DROP TRIGGER trg_1;
12484UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12485f_int2 = CAST(f_char1 AS SIGNED INT),
12486f_charbig = 'just inserted'
12487   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12488DELETE FROM t0_aux
12489WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12490INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12491SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12492'just inserted' FROM t0_template
12493WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12494CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
12495BEGIN
12496UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12497f_charbig = 'updated by trigger'
12498      WHERE f_int1 = - old.f_int1;
12499END|
12500UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
12501WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12502
12503# check trigger-4 success: 	1
12504DROP TRIGGER trg_1;
12505UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12506f_int2 = CAST(f_char1 AS SIGNED INT),
12507f_charbig = 'just inserted'
12508   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12509DELETE FROM t0_aux
12510WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12511INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12512SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12513'just inserted' FROM t0_template
12514WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12515CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
12516BEGIN
12517UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12518f_charbig = 'updated by trigger'
12519      WHERE f_int1 = new.f_int1;
12520END|
12521UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
12522WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12523
12524# check trigger-5 success: 	1
12525DROP TRIGGER trg_1;
12526UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12527f_int2 = CAST(f_char1 AS SIGNED INT),
12528f_charbig = 'just inserted'
12529   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12530DELETE FROM t0_aux
12531WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12532INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12533SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12534'just inserted' FROM t0_template
12535WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12536CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
12537BEGIN
12538UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12539f_charbig = 'updated by trigger'
12540      WHERE f_int1 = - old.f_int1;
12541END|
12542UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
12543WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12544
12545# check trigger-6 success: 	1
12546DROP TRIGGER trg_1;
12547UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12548f_int2 = CAST(f_char1 AS SIGNED INT),
12549f_charbig = 'just inserted'
12550   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12551DELETE FROM t0_aux
12552WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12553INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12554SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12555'just inserted' FROM t0_template
12556WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12557CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
12558BEGIN
12559UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12560f_charbig = 'updated by trigger'
12561      WHERE f_int1 = - old.f_int1;
12562END|
12563DELETE FROM t0_aux
12564WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12565
12566# check trigger-7 success: 	1
12567DROP TRIGGER trg_1;
12568UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12569f_int2 = CAST(f_char1 AS SIGNED INT),
12570f_charbig = 'just inserted'
12571   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12572DELETE FROM t0_aux
12573WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12574INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12575SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12576'just inserted' FROM t0_template
12577WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12578CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
12579BEGIN
12580UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12581f_charbig = 'updated by trigger'
12582      WHERE f_int1 = - old.f_int1;
12583END|
12584DELETE FROM t0_aux
12585WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12586
12587# check trigger-8 success: 	1
12588DROP TRIGGER trg_1;
12589UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12590f_int2 = CAST(f_char1 AS SIGNED INT),
12591f_charbig = 'just inserted'
12592   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12593DELETE FROM t0_aux
12594WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12595DELETE FROM t1
12596WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12597CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
12598BEGIN
12599SET new.f_int1 = old.f_int1 + @max_row,
12600new.f_int2 = old.f_int2 - @max_row,
12601new.f_charbig = '####updated per update trigger####';
12602END|
12603UPDATE t1
12604SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
12605f_charbig = '####updated per update statement itself####';
12606Warnings:
12607Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
12608
12609# check trigger-9 success: 	1
12610DROP TRIGGER trg_2;
12611UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12612f_int2 = CAST(f_char1 AS SIGNED INT),
12613f_charbig = CONCAT('===',f_char1,'===');
12614Warnings:
12615Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
12616CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
12617BEGIN
12618SET new.f_int1 = new.f_int1 + @max_row,
12619new.f_int2 = new.f_int2 - @max_row,
12620new.f_charbig = '####updated per update trigger####';
12621END|
12622UPDATE t1
12623SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
12624f_charbig = '####updated per update statement itself####';
12625Warnings:
12626Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
12627
12628# check trigger-10 success: 	1
12629DROP TRIGGER trg_2;
12630UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12631f_int2 = CAST(f_char1 AS SIGNED INT),
12632f_charbig = CONCAT('===',f_char1,'===');
12633Warnings:
12634Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
12635CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
12636BEGIN
12637SET new.f_int1 = @my_max1 + @counter,
12638new.f_int2 = @my_min2 - @counter,
12639new.f_charbig = '####updated per insert trigger####';
12640SET @counter = @counter + 1;
12641END|
12642SET @counter = 1;
12643SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
12644Warnings:
12645Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
12646INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12647SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
12648CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
12649WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
12650ORDER BY f_int1;
12651DROP TRIGGER trg_3;
12652
12653# check trigger-11 success: 	1
12654Warnings:
12655Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
12656DELETE FROM t1
12657WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
12658AND f_int2 <> CAST(f_char1 AS SIGNED INT)
12659AND f_charbig = '####updated per insert trigger####';
12660CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
12661BEGIN
12662SET new.f_int1 = @my_max1 + @counter,
12663new.f_int2 = @my_min2 - @counter,
12664new.f_charbig = '####updated per insert trigger####';
12665SET @counter = @counter + 1;
12666END|
12667SET @counter = 1;
12668SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
12669Warnings:
12670Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
12671INSERT INTO t1 (f_char1, f_char2, f_charbig)
12672SELECT CAST(f_int1 AS CHAR),
12673CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
12674WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
12675ORDER BY f_int1;
12676DROP TRIGGER trg_3;
12677
12678# check trigger-12 success: 	1
12679Warnings:
12680Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
12681DELETE FROM t1
12682WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
12683AND f_int2 <> CAST(f_char1 AS SIGNED INT)
12684AND f_charbig = '####updated per insert trigger####';
12685ANALYZE  TABLE t1;
12686Table	Op	Msg_type	Msg_text
12687test.t1	analyze	status	OK
12688test.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.
12689CHECK    TABLE t1 EXTENDED;
12690Table	Op	Msg_type	Msg_text
12691test.t1	check	status	OK
12692test.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.
12693CHECKSUM TABLE t1 EXTENDED;
12694Table	Checksum
12695test.t1	<some_value>
12696OPTIMIZE TABLE t1;
12697Table	Op	Msg_type	Msg_text
12698test.t1	optimize	status	OK
12699test.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.
12700# check layout success:    1
12701REPAIR   TABLE t1 EXTENDED;
12702Table	Op	Msg_type	Msg_text
12703test.t1	repair	status	OK
12704test.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.
12705# check layout success:    1
12706TRUNCATE t1;
12707Warnings:
12708Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
12709
12710# check TRUNCATE success: 	1
12711# check layout success:    1
12712# End usability test (inc/partition_check.inc)
12713DROP TABLE t1;
12714CREATE TABLE t1 (
12715f_int1 INTEGER,
12716f_int2 INTEGER,
12717f_char1 CHAR(20),
12718f_char2 CHAR(20),
12719f_charbig VARCHAR(1000)
12720, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
12721)
12722PARTITION BY LIST(ABS(MOD(f_int1,2)))
12723SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
12724(PARTITION part1 VALUES IN (0)
12725DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
12726INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
12727PARTITION part2 VALUES IN (1)
12728DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
12729INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
12730PARTITION part3 VALUES IN (NULL)
12731DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
12732INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir');
12733Warnings:
12734Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
12735INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
12736SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
12737Warnings:
12738Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
12739# Start usability test (inc/partition_check.inc)
12740create_command
12741SHOW CREATE TABLE t1;
12742Table	Create Table
12743t1	CREATE TABLE `t1` (
12744  `f_int1` int(11) DEFAULT NULL,
12745  `f_int2` int(11) DEFAULT NULL,
12746  `f_char1` char(20) DEFAULT NULL,
12747  `f_char2` char(20) DEFAULT NULL,
12748  `f_charbig` varchar(1000) DEFAULT NULL,
12749  UNIQUE KEY `uidx1` (`f_int1`,`f_int2`),
12750  UNIQUE KEY `uidx2` (`f_int2`,`f_int1`)
12751) ENGINE=MyISAM DEFAULT CHARSET=latin1
12752/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
12753SUBPARTITION BY KEY (f_int1)
12754SUBPARTITIONS 3
12755(PARTITION part1 VALUES IN (0) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
12756 PARTITION part2 VALUES IN (1) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
12757 PARTITION part3 VALUES IN (NULL) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM) */
12758
12759unified filelist
12760t1#P#part1#SP#part1sp0.MYD
12761t1#P#part1#SP#part1sp0.MYI
12762t1#P#part1#SP#part1sp1.MYD
12763t1#P#part1#SP#part1sp1.MYI
12764t1#P#part1#SP#part1sp2.MYD
12765t1#P#part1#SP#part1sp2.MYI
12766t1#P#part2#SP#part2sp0.MYD
12767t1#P#part2#SP#part2sp0.MYI
12768t1#P#part2#SP#part2sp1.MYD
12769t1#P#part2#SP#part2sp1.MYI
12770t1#P#part2#SP#part2sp2.MYD
12771t1#P#part2#SP#part2sp2.MYI
12772t1#P#part3#SP#part3sp0.MYD
12773t1#P#part3#SP#part3sp0.MYI
12774t1#P#part3#SP#part3sp1.MYD
12775t1#P#part3#SP#part3sp1.MYI
12776t1#P#part3#SP#part3sp2.MYD
12777t1#P#part3#SP#part3sp2.MYI
12778t1.frm
12779t1.par
12780t1#P#part1#SP#part1sp0.MYD
12781t1#P#part1#SP#part1sp1.MYD
12782t1#P#part1#SP#part1sp2.MYD
12783t1#P#part2#SP#part2sp0.MYD
12784t1#P#part2#SP#part2sp1.MYD
12785t1#P#part2#SP#part2sp2.MYD
12786t1#P#part3#SP#part3sp0.MYD
12787t1#P#part3#SP#part3sp1.MYD
12788t1#P#part3#SP#part3sp2.MYD
12789t1#P#part1#SP#part1sp0.MYI
12790t1#P#part1#SP#part1sp1.MYI
12791t1#P#part1#SP#part1sp2.MYI
12792t1#P#part2#SP#part2sp0.MYI
12793t1#P#part2#SP#part2sp1.MYI
12794t1#P#part2#SP#part2sp2.MYI
12795t1#P#part3#SP#part3sp0.MYI
12796t1#P#part3#SP#part3sp1.MYI
12797t1#P#part3#SP#part3sp2.MYI
12798
12799# check prerequisites-1 success:    1
12800# check COUNT(*) success:    1
12801# check MIN/MAX(f_int1) success:    1
12802# check MIN/MAX(f_int2) success:    1
12803INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12804SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
12805CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
12806WHERE f_int1 IN (2,3);
12807ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
12808# check prerequisites-3 success:    1
12809# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
12810INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12811SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
12812CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
12813WHERE f_int1 IN (2,3);
12814DELETE FROM t1 WHERE f_charbig = 'delete me';
12815INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12816SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
12817CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
12818WHERE f_int1 IN (2,3);
12819DELETE FROM t1 WHERE f_charbig = 'delete me';
12820# check read via f_int1 success: 1
12821# check read via f_int2 success: 1
12822
12823# check multiple-1 success: 	1
12824DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
12825
12826# check multiple-2 success: 	1
12827INSERT INTO t1 SELECT * FROM t0_template
12828WHERE MOD(f_int1,3) = 0;
12829
12830# check multiple-3 success: 	1
12831UPDATE t1 SET f_int1 = f_int1 + @max_row
12832WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
12833AND @max_row_div2 + @max_row_div4;
12834
12835# check multiple-4 success: 	1
12836DELETE FROM t1
12837WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
12838AND @max_row_div2 + @max_row_div4 + @max_row;
12839
12840# check multiple-5 success: 	1
12841SELECT COUNT(*) INTO @try_count FROM t0_template
12842WHERE MOD(f_int1,3) = 0
12843AND f_int1 BETWEEN @max_row_div2 AND @max_row;
12844SELECT COUNT(*) INTO @clash_count
12845FROM t1 INNER JOIN t0_template USING(f_int1)
12846WHERE MOD(f_int1,3) = 0
12847AND f_int1 BETWEEN @max_row_div2 AND @max_row;
12848SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
12849INSERT INTO t1
12850SET f_int1 = @cur_value , f_int2 = @cur_value,
12851f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
12852f_charbig = '#SINGLE#';
12853
12854# check single-1 success: 	1
12855SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
12856INSERT INTO t1
12857SET f_int1 = @cur_value , f_int2 = @cur_value,
12858f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
12859f_charbig = '#SINGLE#';
12860
12861# check single-2 success: 	1
12862SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
12863SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
12864UPDATE t1 SET f_int1 = @cur_value2
12865WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
12866
12867# check single-3 success: 	1
12868SET @cur_value1= -1;
12869SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
12870UPDATE t1 SET f_int1 = @cur_value1
12871WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
12872
12873# check single-4 success: 	1
12874SELECT MAX(f_int1) INTO @cur_value FROM t1;
12875DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
12876
12877# check single-5 success: 	1
12878DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
12879
12880# check single-6 success: 	1
12881INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
12882
12883# check single-7 success: 	1
12884DELETE FROM t1 WHERE f_charbig = '#2147483647##';
12885DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
12886INSERT t1 SET f_int1 = 0 , f_int2 = 0,
12887f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
12888f_charbig = '#NULL#';
12889INSERT INTO t1
12890SET f_int1 = NULL , f_int2 = -@max_row,
12891f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
12892f_charbig = '#NULL#';
12893# check null success:    1
12894
12895# check null-1 success: 	1
12896UPDATE t1 SET f_int1 = -@max_row
12897WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
12898AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
12899
12900# check null-2 success: 	1
12901UPDATE t1 SET f_int1 = NULL
12902WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
12903AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
12904
12905# check null-3 success: 	1
12906DELETE FROM t1
12907WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
12908AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
12909
12910# check null-4 success: 	1
12911DELETE FROM t1
12912WHERE f_int1 = 0 AND f_int2 = 0
12913AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
12914AND f_charbig = '#NULL#';
12915INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12916SELECT f_int1, f_int1, '', '', 'was inserted'
12917   FROM t0_template source_tab
12918WHERE MOD(f_int1,3) = 0
12919AND f_int1 BETWEEN @max_row_div2 AND @max_row
12920ON DUPLICATE KEY
12921UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
12922f_int2 = 2 * @max_row + source_tab.f_int1,
12923f_charbig = 'was updated';
12924
12925# check unique-1-a success: 	1
12926
12927# check unique-1-b success: 	1
12928DELETE FROM t1 WHERE f_charbig = 'was inserted';
12929UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12930f_int2 = CAST(f_char1 AS SIGNED INT),
12931f_charbig = CONCAT('===',f_char1,'===')
12932WHERE f_charbig = 'was updated';
12933REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12934SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
12935   FROM t0_template source_tab
12936WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
12937
12938# check replace success: 	1
12939DELETE FROM t1
12940WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
12941DELETE FROM t1
12942WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
12943f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
12944UPDATE t1 SET f_int2 = f_int1,
12945f_char1 = CAST(f_int1 AS CHAR),
12946f_char2 = CAST(f_int1 AS CHAR),
12947f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
12948WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
12949SET AUTOCOMMIT= 0;
12950INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12951SELECT f_int1, f_int1, '', '', 'was inserted'
12952FROM t0_template source_tab
12953WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
12954
12955# check transactions-1 success: 	1
12956COMMIT WORK;
12957
12958# check transactions-2 success: 	1
12959ROLLBACK WORK;
12960
12961# check transactions-3 success: 	1
12962DELETE FROM t1 WHERE f_charbig = 'was inserted';
12963COMMIT WORK;
12964ROLLBACK WORK;
12965
12966# check transactions-4 success: 	1
12967INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12968SELECT f_int1, f_int1, '', '', 'was inserted'
12969FROM t0_template source_tab
12970WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
12971
12972# check transactions-5 success: 	1
12973ROLLBACK WORK;
12974Warnings:
12975Warning	1196	Some non-transactional changed tables couldn't be rolled back
12976
12977# check transactions-6 success: 	1
12978# INFO: Storage engine used for t1 seems to be not transactional.
12979COMMIT;
12980
12981# check transactions-7 success: 	1
12982DELETE FROM t1 WHERE f_charbig = 'was inserted';
12983COMMIT WORK;
12984SET @@session.sql_mode = 'traditional';
12985Warnings:
12986Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
12987SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
12988INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12989SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
12990'', '', 'was inserted' FROM t0_template
12991WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
12992ERROR 22012: Division by 0
12993COMMIT;
12994
12995# check transactions-8 success: 	1
12996# INFO: Storage engine used for t1 seems to be unable to revert
12997#       changes made by the failing statement.
12998SET @@session.sql_mode = '';
12999Warnings:
13000Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
13001SET AUTOCOMMIT= 1;
13002DELETE FROM t1 WHERE f_charbig = 'was inserted';
13003COMMIT WORK;
13004UPDATE t1 SET f_charbig = REPEAT('b', 1000);
13005
13006# check special-1 success: 	1
13007UPDATE t1 SET f_charbig = '';
13008
13009# check special-2 success: 	1
13010UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
13011INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
13012SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
13013WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13014INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13015SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13016'just inserted' FROM t0_template
13017WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13018CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
13019BEGIN
13020UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13021f_charbig = 'updated by trigger'
13022      WHERE f_int1 = new.f_int1;
13023END|
13024INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13025SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
13026WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13027
13028# check trigger-1 success: 	1
13029DROP TRIGGER trg_1;
13030UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13031f_int2 = CAST(f_char1 AS SIGNED INT),
13032f_charbig = 'just inserted'
13033   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13034DELETE FROM t0_aux
13035WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13036INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13037SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13038'just inserted' FROM t0_template
13039WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13040CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
13041BEGIN
13042UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13043f_charbig = 'updated by trigger'
13044      WHERE f_int1 = new.f_int1;
13045END|
13046INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13047SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
13048WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13049
13050# check trigger-2 success: 	1
13051DROP TRIGGER trg_1;
13052UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13053f_int2 = CAST(f_char1 AS SIGNED INT),
13054f_charbig = 'just inserted'
13055   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13056DELETE FROM t0_aux
13057WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13058INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13059SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13060'just inserted' FROM t0_template
13061WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13062CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
13063BEGIN
13064UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13065f_charbig = 'updated by trigger'
13066      WHERE f_int1 = new.f_int1;
13067END|
13068UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
13069WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13070
13071# check trigger-3 success: 	1
13072DROP TRIGGER trg_1;
13073UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13074f_int2 = CAST(f_char1 AS SIGNED INT),
13075f_charbig = 'just inserted'
13076   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13077DELETE FROM t0_aux
13078WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13079INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13080SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13081'just inserted' FROM t0_template
13082WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13083CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
13084BEGIN
13085UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13086f_charbig = 'updated by trigger'
13087      WHERE f_int1 = - old.f_int1;
13088END|
13089UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
13090WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13091
13092# check trigger-4 success: 	1
13093DROP TRIGGER trg_1;
13094UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13095f_int2 = CAST(f_char1 AS SIGNED INT),
13096f_charbig = 'just inserted'
13097   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13098DELETE FROM t0_aux
13099WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13100INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13101SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13102'just inserted' FROM t0_template
13103WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13104CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
13105BEGIN
13106UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13107f_charbig = 'updated by trigger'
13108      WHERE f_int1 = new.f_int1;
13109END|
13110UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
13111WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13112
13113# check trigger-5 success: 	1
13114DROP TRIGGER trg_1;
13115UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13116f_int2 = CAST(f_char1 AS SIGNED INT),
13117f_charbig = 'just inserted'
13118   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13119DELETE FROM t0_aux
13120WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13121INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13122SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13123'just inserted' FROM t0_template
13124WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13125CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
13126BEGIN
13127UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13128f_charbig = 'updated by trigger'
13129      WHERE f_int1 = - old.f_int1;
13130END|
13131UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
13132WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13133
13134# check trigger-6 success: 	1
13135DROP TRIGGER trg_1;
13136UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13137f_int2 = CAST(f_char1 AS SIGNED INT),
13138f_charbig = 'just inserted'
13139   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13140DELETE FROM t0_aux
13141WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13142INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13143SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13144'just inserted' FROM t0_template
13145WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13146CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
13147BEGIN
13148UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13149f_charbig = 'updated by trigger'
13150      WHERE f_int1 = - old.f_int1;
13151END|
13152DELETE FROM t0_aux
13153WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13154
13155# check trigger-7 success: 	1
13156DROP TRIGGER trg_1;
13157UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13158f_int2 = CAST(f_char1 AS SIGNED INT),
13159f_charbig = 'just inserted'
13160   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13161DELETE FROM t0_aux
13162WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13163INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13164SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13165'just inserted' FROM t0_template
13166WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13167CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
13168BEGIN
13169UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13170f_charbig = 'updated by trigger'
13171      WHERE f_int1 = - old.f_int1;
13172END|
13173DELETE FROM t0_aux
13174WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13175
13176# check trigger-8 success: 	1
13177DROP TRIGGER trg_1;
13178UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13179f_int2 = CAST(f_char1 AS SIGNED INT),
13180f_charbig = 'just inserted'
13181   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13182DELETE FROM t0_aux
13183WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13184DELETE FROM t1
13185WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13186CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
13187BEGIN
13188SET new.f_int1 = old.f_int1 + @max_row,
13189new.f_int2 = old.f_int2 - @max_row,
13190new.f_charbig = '####updated per update trigger####';
13191END|
13192UPDATE t1
13193SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
13194f_charbig = '####updated per update statement itself####';
13195Warnings:
13196Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
13197
13198# check trigger-9 success: 	1
13199DROP TRIGGER trg_2;
13200UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13201f_int2 = CAST(f_char1 AS SIGNED INT),
13202f_charbig = CONCAT('===',f_char1,'===');
13203Warnings:
13204Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
13205CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
13206BEGIN
13207SET new.f_int1 = new.f_int1 + @max_row,
13208new.f_int2 = new.f_int2 - @max_row,
13209new.f_charbig = '####updated per update trigger####';
13210END|
13211UPDATE t1
13212SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
13213f_charbig = '####updated per update statement itself####';
13214Warnings:
13215Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
13216
13217# check trigger-10 success: 	1
13218DROP TRIGGER trg_2;
13219UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13220f_int2 = CAST(f_char1 AS SIGNED INT),
13221f_charbig = CONCAT('===',f_char1,'===');
13222Warnings:
13223Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
13224CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
13225BEGIN
13226SET new.f_int1 = @my_max1 + @counter,
13227new.f_int2 = @my_min2 - @counter,
13228new.f_charbig = '####updated per insert trigger####';
13229SET @counter = @counter + 1;
13230END|
13231SET @counter = 1;
13232SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
13233Warnings:
13234Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
13235INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13236SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
13237CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
13238WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
13239ORDER BY f_int1;
13240DROP TRIGGER trg_3;
13241
13242# check trigger-11 success: 	1
13243Warnings:
13244Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
13245DELETE FROM t1
13246WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
13247AND f_int2 <> CAST(f_char1 AS SIGNED INT)
13248AND f_charbig = '####updated per insert trigger####';
13249CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
13250BEGIN
13251SET new.f_int1 = @my_max1 + @counter,
13252new.f_int2 = @my_min2 - @counter,
13253new.f_charbig = '####updated per insert trigger####';
13254SET @counter = @counter + 1;
13255END|
13256SET @counter = 1;
13257SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
13258Warnings:
13259Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
13260INSERT INTO t1 (f_char1, f_char2, f_charbig)
13261SELECT CAST(f_int1 AS CHAR),
13262CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
13263WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
13264ORDER BY f_int1;
13265DROP TRIGGER trg_3;
13266
13267# check trigger-12 success: 	1
13268Warnings:
13269Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
13270DELETE FROM t1
13271WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
13272AND f_int2 <> CAST(f_char1 AS SIGNED INT)
13273AND f_charbig = '####updated per insert trigger####';
13274ANALYZE  TABLE t1;
13275Table	Op	Msg_type	Msg_text
13276test.t1	analyze	status	OK
13277test.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.
13278CHECK    TABLE t1 EXTENDED;
13279Table	Op	Msg_type	Msg_text
13280test.t1	check	status	OK
13281test.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.
13282CHECKSUM TABLE t1 EXTENDED;
13283Table	Checksum
13284test.t1	<some_value>
13285OPTIMIZE TABLE t1;
13286Table	Op	Msg_type	Msg_text
13287test.t1	optimize	status	OK
13288test.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.
13289# check layout success:    1
13290REPAIR   TABLE t1 EXTENDED;
13291Table	Op	Msg_type	Msg_text
13292test.t1	repair	status	OK
13293test.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.
13294# check layout success:    1
13295TRUNCATE t1;
13296Warnings:
13297Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
13298
13299# check TRUNCATE success: 	1
13300# check layout success:    1
13301# End usability test (inc/partition_check.inc)
13302DROP TABLE t1;
13303#------------------------------------------------------------------------
13304#  3   Tables with PRIMARY KEY and/or UNIQUE INDEXes
13305#        The partitioning function contains two columns.
13306#------------------------------------------------------------------------
13307#  3.3 PRIMARY KEY and UNIQUE INDEX consisting of two columns
13308DROP TABLE IF EXISTS t1;
13309CREATE TABLE t1 (
13310f_int1 INTEGER,
13311f_int2 INTEGER,
13312f_char1 CHAR(20),
13313f_char2 CHAR(20),
13314f_charbig VARCHAR(1000)
13315, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
13316)
13317PARTITION BY HASH(f_int1 + f_int2) PARTITIONS 2
13318(PARTITION p1
13319DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
13320INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
13321PARTITION p2
13322DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
13323INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir');
13324Warnings:
13325Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
13326INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
13327SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
13328Warnings:
13329Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
13330# Start usability test (inc/partition_check.inc)
13331create_command
13332SHOW CREATE TABLE t1;
13333Table	Create Table
13334t1	CREATE TABLE `t1` (
13335  `f_int1` int(11) DEFAULT NULL,
13336  `f_int2` int(11) DEFAULT NULL,
13337  `f_char1` char(20) DEFAULT NULL,
13338  `f_char2` char(20) DEFAULT NULL,
13339  `f_charbig` varchar(1000) DEFAULT NULL,
13340  UNIQUE KEY `uidx1` (`f_int1`,`f_int2`),
13341  UNIQUE KEY `uidx2` (`f_int2`,`f_int1`)
13342) ENGINE=MyISAM DEFAULT CHARSET=latin1
13343/*!50100 PARTITION BY HASH (f_int1 + f_int2)
13344(PARTITION p1 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
13345 PARTITION p2 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM) */
13346
13347unified filelist
13348t1#P#p1.MYD
13349t1#P#p1.MYI
13350t1#P#p2.MYD
13351t1#P#p2.MYI
13352t1.frm
13353t1.par
13354t1#P#p1.MYD
13355t1#P#p2.MYD
13356t1#P#p1.MYI
13357t1#P#p2.MYI
13358
13359# check prerequisites-1 success:    1
13360# check COUNT(*) success:    1
13361# check MIN/MAX(f_int1) success:    1
13362# check MIN/MAX(f_int2) success:    1
13363INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13364SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
13365CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
13366WHERE f_int1 IN (2,3);
13367ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
13368# check prerequisites-3 success:    1
13369# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
13370INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13371SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
13372CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
13373WHERE f_int1 IN (2,3);
13374DELETE FROM t1 WHERE f_charbig = 'delete me';
13375INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13376SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
13377CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
13378WHERE f_int1 IN (2,3);
13379DELETE FROM t1 WHERE f_charbig = 'delete me';
13380# check read via f_int1 success: 1
13381# check read via f_int2 success: 1
13382
13383# check multiple-1 success: 	1
13384DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
13385
13386# check multiple-2 success: 	1
13387INSERT INTO t1 SELECT * FROM t0_template
13388WHERE MOD(f_int1,3) = 0;
13389
13390# check multiple-3 success: 	1
13391UPDATE t1 SET f_int1 = f_int1 + @max_row
13392WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
13393AND @max_row_div2 + @max_row_div4;
13394
13395# check multiple-4 success: 	1
13396DELETE FROM t1
13397WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
13398AND @max_row_div2 + @max_row_div4 + @max_row;
13399
13400# check multiple-5 success: 	1
13401SELECT COUNT(*) INTO @try_count FROM t0_template
13402WHERE MOD(f_int1,3) = 0
13403AND f_int1 BETWEEN @max_row_div2 AND @max_row;
13404SELECT COUNT(*) INTO @clash_count
13405FROM t1 INNER JOIN t0_template USING(f_int1)
13406WHERE MOD(f_int1,3) = 0
13407AND f_int1 BETWEEN @max_row_div2 AND @max_row;
13408SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
13409INSERT INTO t1
13410SET f_int1 = @cur_value , f_int2 = @cur_value,
13411f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
13412f_charbig = '#SINGLE#';
13413
13414# check single-1 success: 	1
13415SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
13416INSERT INTO t1
13417SET f_int1 = @cur_value , f_int2 = @cur_value,
13418f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
13419f_charbig = '#SINGLE#';
13420
13421# check single-2 success: 	1
13422SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
13423SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
13424UPDATE t1 SET f_int1 = @cur_value2
13425WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
13426
13427# check single-3 success: 	1
13428SET @cur_value1= -1;
13429SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
13430UPDATE t1 SET f_int1 = @cur_value1
13431WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
13432
13433# check single-4 success: 	1
13434SELECT MAX(f_int1) INTO @cur_value FROM t1;
13435DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
13436
13437# check single-5 success: 	1
13438DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
13439
13440# check single-6 success: 	1
13441INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
13442
13443# check single-7 success: 	1
13444DELETE FROM t1 WHERE f_charbig = '#2147483647##';
13445DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
13446INSERT t1 SET f_int1 = 0 , f_int2 = 0,
13447f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
13448f_charbig = '#NULL#';
13449INSERT INTO t1
13450SET f_int1 = NULL , f_int2 = -@max_row,
13451f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
13452f_charbig = '#NULL#';
13453# check null success:    1
13454
13455# check null-1 success: 	1
13456UPDATE t1 SET f_int1 = -@max_row
13457WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
13458AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
13459
13460# check null-2 success: 	1
13461UPDATE t1 SET f_int1 = NULL
13462WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
13463AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
13464
13465# check null-3 success: 	1
13466DELETE FROM t1
13467WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
13468AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
13469
13470# check null-4 success: 	1
13471DELETE FROM t1
13472WHERE f_int1 = 0 AND f_int2 = 0
13473AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
13474AND f_charbig = '#NULL#';
13475INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13476SELECT f_int1, f_int1, '', '', 'was inserted'
13477   FROM t0_template source_tab
13478WHERE MOD(f_int1,3) = 0
13479AND f_int1 BETWEEN @max_row_div2 AND @max_row
13480ON DUPLICATE KEY
13481UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
13482f_int2 = 2 * @max_row + source_tab.f_int1,
13483f_charbig = 'was updated';
13484
13485# check unique-1-a success: 	1
13486
13487# check unique-1-b success: 	1
13488DELETE FROM t1 WHERE f_charbig = 'was inserted';
13489UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13490f_int2 = CAST(f_char1 AS SIGNED INT),
13491f_charbig = CONCAT('===',f_char1,'===')
13492WHERE f_charbig = 'was updated';
13493REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13494SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
13495   FROM t0_template source_tab
13496WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
13497
13498# check replace success: 	1
13499DELETE FROM t1
13500WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
13501DELETE FROM t1
13502WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
13503f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
13504UPDATE t1 SET f_int2 = f_int1,
13505f_char1 = CAST(f_int1 AS CHAR),
13506f_char2 = CAST(f_int1 AS CHAR),
13507f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
13508WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
13509SET AUTOCOMMIT= 0;
13510INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13511SELECT f_int1, f_int1, '', '', 'was inserted'
13512FROM t0_template source_tab
13513WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
13514
13515# check transactions-1 success: 	1
13516COMMIT WORK;
13517
13518# check transactions-2 success: 	1
13519ROLLBACK WORK;
13520
13521# check transactions-3 success: 	1
13522DELETE FROM t1 WHERE f_charbig = 'was inserted';
13523COMMIT WORK;
13524ROLLBACK WORK;
13525
13526# check transactions-4 success: 	1
13527INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13528SELECT f_int1, f_int1, '', '', 'was inserted'
13529FROM t0_template source_tab
13530WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
13531
13532# check transactions-5 success: 	1
13533ROLLBACK WORK;
13534Warnings:
13535Warning	1196	Some non-transactional changed tables couldn't be rolled back
13536
13537# check transactions-6 success: 	1
13538# INFO: Storage engine used for t1 seems to be not transactional.
13539COMMIT;
13540
13541# check transactions-7 success: 	1
13542DELETE FROM t1 WHERE f_charbig = 'was inserted';
13543COMMIT WORK;
13544SET @@session.sql_mode = 'traditional';
13545Warnings:
13546Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
13547SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
13548INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13549SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
13550'', '', 'was inserted' FROM t0_template
13551WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
13552ERROR 22012: Division by 0
13553COMMIT;
13554
13555# check transactions-8 success: 	1
13556# INFO: Storage engine used for t1 seems to be unable to revert
13557#       changes made by the failing statement.
13558SET @@session.sql_mode = '';
13559Warnings:
13560Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
13561SET AUTOCOMMIT= 1;
13562DELETE FROM t1 WHERE f_charbig = 'was inserted';
13563COMMIT WORK;
13564UPDATE t1 SET f_charbig = REPEAT('b', 1000);
13565
13566# check special-1 success: 	1
13567UPDATE t1 SET f_charbig = '';
13568
13569# check special-2 success: 	1
13570UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
13571INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
13572SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
13573WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13574INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13575SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13576'just inserted' FROM t0_template
13577WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13578CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
13579BEGIN
13580UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13581f_charbig = 'updated by trigger'
13582      WHERE f_int1 = new.f_int1;
13583END|
13584INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13585SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
13586WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13587
13588# check trigger-1 success: 	1
13589DROP TRIGGER trg_1;
13590UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13591f_int2 = CAST(f_char1 AS SIGNED INT),
13592f_charbig = 'just inserted'
13593   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13594DELETE FROM t0_aux
13595WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13596INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13597SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13598'just inserted' FROM t0_template
13599WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13600CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
13601BEGIN
13602UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13603f_charbig = 'updated by trigger'
13604      WHERE f_int1 = new.f_int1;
13605END|
13606INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13607SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
13608WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13609
13610# check trigger-2 success: 	1
13611DROP TRIGGER trg_1;
13612UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13613f_int2 = CAST(f_char1 AS SIGNED INT),
13614f_charbig = 'just inserted'
13615   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13616DELETE FROM t0_aux
13617WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13618INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13619SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13620'just inserted' FROM t0_template
13621WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13622CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
13623BEGIN
13624UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13625f_charbig = 'updated by trigger'
13626      WHERE f_int1 = new.f_int1;
13627END|
13628UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
13629WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13630
13631# check trigger-3 success: 	1
13632DROP TRIGGER trg_1;
13633UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13634f_int2 = CAST(f_char1 AS SIGNED INT),
13635f_charbig = 'just inserted'
13636   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13637DELETE FROM t0_aux
13638WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13639INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13640SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13641'just inserted' FROM t0_template
13642WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13643CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
13644BEGIN
13645UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13646f_charbig = 'updated by trigger'
13647      WHERE f_int1 = - old.f_int1;
13648END|
13649UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
13650WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13651
13652# check trigger-4 success: 	1
13653DROP TRIGGER trg_1;
13654UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13655f_int2 = CAST(f_char1 AS SIGNED INT),
13656f_charbig = 'just inserted'
13657   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13658DELETE FROM t0_aux
13659WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13660INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13661SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13662'just inserted' FROM t0_template
13663WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13664CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
13665BEGIN
13666UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13667f_charbig = 'updated by trigger'
13668      WHERE f_int1 = new.f_int1;
13669END|
13670UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
13671WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13672
13673# check trigger-5 success: 	1
13674DROP TRIGGER trg_1;
13675UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13676f_int2 = CAST(f_char1 AS SIGNED INT),
13677f_charbig = 'just inserted'
13678   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13679DELETE FROM t0_aux
13680WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13681INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13682SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13683'just inserted' FROM t0_template
13684WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13685CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
13686BEGIN
13687UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13688f_charbig = 'updated by trigger'
13689      WHERE f_int1 = - old.f_int1;
13690END|
13691UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
13692WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13693
13694# check trigger-6 success: 	1
13695DROP TRIGGER trg_1;
13696UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13697f_int2 = CAST(f_char1 AS SIGNED INT),
13698f_charbig = 'just inserted'
13699   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13700DELETE FROM t0_aux
13701WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13702INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13703SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13704'just inserted' FROM t0_template
13705WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13706CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
13707BEGIN
13708UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13709f_charbig = 'updated by trigger'
13710      WHERE f_int1 = - old.f_int1;
13711END|
13712DELETE FROM t0_aux
13713WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13714
13715# check trigger-7 success: 	1
13716DROP TRIGGER trg_1;
13717UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13718f_int2 = CAST(f_char1 AS SIGNED INT),
13719f_charbig = 'just inserted'
13720   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13721DELETE FROM t0_aux
13722WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13723INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13724SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13725'just inserted' FROM t0_template
13726WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13727CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
13728BEGIN
13729UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13730f_charbig = 'updated by trigger'
13731      WHERE f_int1 = - old.f_int1;
13732END|
13733DELETE FROM t0_aux
13734WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13735
13736# check trigger-8 success: 	1
13737DROP TRIGGER trg_1;
13738UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13739f_int2 = CAST(f_char1 AS SIGNED INT),
13740f_charbig = 'just inserted'
13741   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13742DELETE FROM t0_aux
13743WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13744DELETE FROM t1
13745WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13746CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
13747BEGIN
13748SET new.f_int1 = old.f_int1 + @max_row,
13749new.f_int2 = old.f_int2 - @max_row,
13750new.f_charbig = '####updated per update trigger####';
13751END|
13752UPDATE t1
13753SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
13754f_charbig = '####updated per update statement itself####';
13755Warnings:
13756Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
13757
13758# check trigger-9 success: 	1
13759DROP TRIGGER trg_2;
13760UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13761f_int2 = CAST(f_char1 AS SIGNED INT),
13762f_charbig = CONCAT('===',f_char1,'===');
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.
13765CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
13766BEGIN
13767SET new.f_int1 = new.f_int1 + @max_row,
13768new.f_int2 = new.f_int2 - @max_row,
13769new.f_charbig = '####updated per update trigger####';
13770END|
13771UPDATE t1
13772SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
13773f_charbig = '####updated per update statement itself####';
13774Warnings:
13775Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
13776
13777# check trigger-10 success: 	1
13778DROP TRIGGER trg_2;
13779UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13780f_int2 = CAST(f_char1 AS SIGNED INT),
13781f_charbig = CONCAT('===',f_char1,'===');
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.
13784CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
13785BEGIN
13786SET new.f_int1 = @my_max1 + @counter,
13787new.f_int2 = @my_min2 - @counter,
13788new.f_charbig = '####updated per insert trigger####';
13789SET @counter = @counter + 1;
13790END|
13791SET @counter = 1;
13792SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
13793Warnings:
13794Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
13795INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13796SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
13797CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
13798WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
13799ORDER BY f_int1;
13800DROP TRIGGER trg_3;
13801
13802# check trigger-11 success: 	1
13803Warnings:
13804Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
13805DELETE FROM t1
13806WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
13807AND f_int2 <> CAST(f_char1 AS SIGNED INT)
13808AND f_charbig = '####updated per insert trigger####';
13809CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
13810BEGIN
13811SET new.f_int1 = @my_max1 + @counter,
13812new.f_int2 = @my_min2 - @counter,
13813new.f_charbig = '####updated per insert trigger####';
13814SET @counter = @counter + 1;
13815END|
13816SET @counter = 1;
13817SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
13818Warnings:
13819Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
13820INSERT INTO t1 (f_char1, f_char2, f_charbig)
13821SELECT CAST(f_int1 AS CHAR),
13822CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
13823WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
13824ORDER BY f_int1;
13825DROP TRIGGER trg_3;
13826
13827# check trigger-12 success: 	1
13828Warnings:
13829Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
13830DELETE FROM t1
13831WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
13832AND f_int2 <> CAST(f_char1 AS SIGNED INT)
13833AND f_charbig = '####updated per insert trigger####';
13834ANALYZE  TABLE t1;
13835Table	Op	Msg_type	Msg_text
13836test.t1	analyze	status	OK
13837test.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.
13838CHECK    TABLE t1 EXTENDED;
13839Table	Op	Msg_type	Msg_text
13840test.t1	check	status	OK
13841test.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.
13842CHECKSUM TABLE t1 EXTENDED;
13843Table	Checksum
13844test.t1	<some_value>
13845OPTIMIZE TABLE t1;
13846Table	Op	Msg_type	Msg_text
13847test.t1	optimize	status	OK
13848test.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.
13849# check layout success:    1
13850REPAIR   TABLE t1 EXTENDED;
13851Table	Op	Msg_type	Msg_text
13852test.t1	repair	status	OK
13853test.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.
13854# check layout success:    1
13855TRUNCATE t1;
13856Warnings:
13857Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
13858
13859# check TRUNCATE success: 	1
13860# check layout success:    1
13861# End usability test (inc/partition_check.inc)
13862DROP TABLE t1;
13863CREATE TABLE t1 (
13864f_int1 INTEGER,
13865f_int2 INTEGER,
13866f_char1 CHAR(20),
13867f_char2 CHAR(20),
13868f_charbig VARCHAR(1000)
13869, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
13870)
13871PARTITION BY KEY(f_int1,f_int2) PARTITIONS 5
13872(PARTITION p1
13873DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
13874INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
13875PARTITION p2
13876DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
13877INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
13878PARTITION p3
13879DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
13880INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
13881PARTITION p4
13882DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
13883INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
13884PARTITION p5
13885DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
13886INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir');
13887Warnings:
13888Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
13889INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
13890SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
13891Warnings:
13892Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
13893# Start usability test (inc/partition_check.inc)
13894create_command
13895SHOW CREATE TABLE t1;
13896Table	Create Table
13897t1	CREATE TABLE `t1` (
13898  `f_int1` int(11) DEFAULT NULL,
13899  `f_int2` int(11) DEFAULT NULL,
13900  `f_char1` char(20) DEFAULT NULL,
13901  `f_char2` char(20) DEFAULT NULL,
13902  `f_charbig` varchar(1000) DEFAULT NULL,
13903  UNIQUE KEY `uidx1` (`f_int1`,`f_int2`),
13904  UNIQUE KEY `uidx2` (`f_int2`,`f_int1`)
13905) ENGINE=MyISAM DEFAULT CHARSET=latin1
13906/*!50100 PARTITION BY KEY (f_int1,f_int2)
13907(PARTITION p1 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
13908 PARTITION p2 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
13909 PARTITION p3 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
13910 PARTITION p4 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
13911 PARTITION p5 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM) */
13912
13913unified filelist
13914t1#P#p1.MYD
13915t1#P#p1.MYI
13916t1#P#p2.MYD
13917t1#P#p2.MYI
13918t1#P#p3.MYD
13919t1#P#p3.MYI
13920t1#P#p4.MYD
13921t1#P#p4.MYI
13922t1#P#p5.MYD
13923t1#P#p5.MYI
13924t1.frm
13925t1.par
13926t1#P#p1.MYD
13927t1#P#p2.MYD
13928t1#P#p3.MYD
13929t1#P#p4.MYD
13930t1#P#p5.MYD
13931t1#P#p1.MYI
13932t1#P#p2.MYI
13933t1#P#p3.MYI
13934t1#P#p4.MYI
13935t1#P#p5.MYI
13936
13937# check prerequisites-1 success:    1
13938# check COUNT(*) success:    1
13939# check MIN/MAX(f_int1) success:    1
13940# check MIN/MAX(f_int2) success:    1
13941INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13942SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
13943CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
13944WHERE f_int1 IN (2,3);
13945ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
13946# check prerequisites-3 success:    1
13947# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
13948INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13949SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
13950CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
13951WHERE f_int1 IN (2,3);
13952DELETE FROM t1 WHERE f_charbig = 'delete me';
13953INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13954SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
13955CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
13956WHERE f_int1 IN (2,3);
13957DELETE FROM t1 WHERE f_charbig = 'delete me';
13958# check read via f_int1 success: 1
13959# check read via f_int2 success: 1
13960
13961# check multiple-1 success: 	1
13962DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
13963
13964# check multiple-2 success: 	1
13965INSERT INTO t1 SELECT * FROM t0_template
13966WHERE MOD(f_int1,3) = 0;
13967
13968# check multiple-3 success: 	1
13969UPDATE t1 SET f_int1 = f_int1 + @max_row
13970WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
13971AND @max_row_div2 + @max_row_div4;
13972
13973# check multiple-4 success: 	1
13974DELETE FROM t1
13975WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
13976AND @max_row_div2 + @max_row_div4 + @max_row;
13977
13978# check multiple-5 success: 	1
13979SELECT COUNT(*) INTO @try_count FROM t0_template
13980WHERE MOD(f_int1,3) = 0
13981AND f_int1 BETWEEN @max_row_div2 AND @max_row;
13982SELECT COUNT(*) INTO @clash_count
13983FROM t1 INNER JOIN t0_template USING(f_int1)
13984WHERE MOD(f_int1,3) = 0
13985AND f_int1 BETWEEN @max_row_div2 AND @max_row;
13986SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
13987INSERT INTO t1
13988SET f_int1 = @cur_value , f_int2 = @cur_value,
13989f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
13990f_charbig = '#SINGLE#';
13991
13992# check single-1 success: 	1
13993SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
13994INSERT INTO t1
13995SET f_int1 = @cur_value , f_int2 = @cur_value,
13996f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
13997f_charbig = '#SINGLE#';
13998
13999# check single-2 success: 	1
14000SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
14001SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
14002UPDATE t1 SET f_int1 = @cur_value2
14003WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
14004
14005# check single-3 success: 	1
14006SET @cur_value1= -1;
14007SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
14008UPDATE t1 SET f_int1 = @cur_value1
14009WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
14010
14011# check single-4 success: 	1
14012SELECT MAX(f_int1) INTO @cur_value FROM t1;
14013DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
14014
14015# check single-5 success: 	1
14016DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
14017
14018# check single-6 success: 	1
14019INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
14020
14021# check single-7 success: 	1
14022DELETE FROM t1 WHERE f_charbig = '#2147483647##';
14023DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
14024INSERT t1 SET f_int1 = 0 , f_int2 = 0,
14025f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
14026f_charbig = '#NULL#';
14027INSERT INTO t1
14028SET f_int1 = NULL , f_int2 = -@max_row,
14029f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
14030f_charbig = '#NULL#';
14031# check null success:    1
14032
14033# check null-1 success: 	1
14034UPDATE t1 SET f_int1 = -@max_row
14035WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
14036AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
14037
14038# check null-2 success: 	1
14039UPDATE t1 SET f_int1 = NULL
14040WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
14041AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
14042
14043# check null-3 success: 	1
14044DELETE FROM t1
14045WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
14046AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
14047
14048# check null-4 success: 	1
14049DELETE FROM t1
14050WHERE f_int1 = 0 AND f_int2 = 0
14051AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
14052AND f_charbig = '#NULL#';
14053INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14054SELECT f_int1, f_int1, '', '', 'was inserted'
14055   FROM t0_template source_tab
14056WHERE MOD(f_int1,3) = 0
14057AND f_int1 BETWEEN @max_row_div2 AND @max_row
14058ON DUPLICATE KEY
14059UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
14060f_int2 = 2 * @max_row + source_tab.f_int1,
14061f_charbig = 'was updated';
14062
14063# check unique-1-a success: 	1
14064
14065# check unique-1-b success: 	1
14066DELETE FROM t1 WHERE f_charbig = 'was inserted';
14067UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14068f_int2 = CAST(f_char1 AS SIGNED INT),
14069f_charbig = CONCAT('===',f_char1,'===')
14070WHERE f_charbig = 'was updated';
14071REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14072SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
14073   FROM t0_template source_tab
14074WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
14075
14076# check replace success: 	1
14077DELETE FROM t1
14078WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
14079DELETE FROM t1
14080WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
14081f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
14082UPDATE t1 SET f_int2 = f_int1,
14083f_char1 = CAST(f_int1 AS CHAR),
14084f_char2 = CAST(f_int1 AS CHAR),
14085f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
14086WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
14087SET AUTOCOMMIT= 0;
14088INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14089SELECT f_int1, f_int1, '', '', 'was inserted'
14090FROM t0_template source_tab
14091WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
14092
14093# check transactions-1 success: 	1
14094COMMIT WORK;
14095
14096# check transactions-2 success: 	1
14097ROLLBACK WORK;
14098
14099# check transactions-3 success: 	1
14100DELETE FROM t1 WHERE f_charbig = 'was inserted';
14101COMMIT WORK;
14102ROLLBACK WORK;
14103
14104# check transactions-4 success: 	1
14105INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14106SELECT f_int1, f_int1, '', '', 'was inserted'
14107FROM t0_template source_tab
14108WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
14109
14110# check transactions-5 success: 	1
14111ROLLBACK WORK;
14112Warnings:
14113Warning	1196	Some non-transactional changed tables couldn't be rolled back
14114
14115# check transactions-6 success: 	1
14116# INFO: Storage engine used for t1 seems to be not transactional.
14117COMMIT;
14118
14119# check transactions-7 success: 	1
14120DELETE FROM t1 WHERE f_charbig = 'was inserted';
14121COMMIT WORK;
14122SET @@session.sql_mode = 'traditional';
14123Warnings:
14124Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
14125SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
14126INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14127SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
14128'', '', 'was inserted' FROM t0_template
14129WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
14130ERROR 22012: Division by 0
14131COMMIT;
14132
14133# check transactions-8 success: 	1
14134# INFO: Storage engine used for t1 seems to be unable to revert
14135#       changes made by the failing statement.
14136SET @@session.sql_mode = '';
14137Warnings:
14138Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
14139SET AUTOCOMMIT= 1;
14140DELETE FROM t1 WHERE f_charbig = 'was inserted';
14141COMMIT WORK;
14142UPDATE t1 SET f_charbig = REPEAT('b', 1000);
14143
14144# check special-1 success: 	1
14145UPDATE t1 SET f_charbig = '';
14146
14147# check special-2 success: 	1
14148UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
14149INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
14150SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
14151WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14152INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14153SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14154'just inserted' FROM t0_template
14155WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14156CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
14157BEGIN
14158UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14159f_charbig = 'updated by trigger'
14160      WHERE f_int1 = new.f_int1;
14161END|
14162INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14163SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
14164WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14165
14166# check trigger-1 success: 	1
14167DROP TRIGGER trg_1;
14168UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14169f_int2 = CAST(f_char1 AS SIGNED INT),
14170f_charbig = 'just inserted'
14171   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14172DELETE FROM t0_aux
14173WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14174INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14175SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14176'just inserted' FROM t0_template
14177WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14178CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
14179BEGIN
14180UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14181f_charbig = 'updated by trigger'
14182      WHERE f_int1 = new.f_int1;
14183END|
14184INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14185SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
14186WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14187
14188# check trigger-2 success: 	1
14189DROP TRIGGER trg_1;
14190UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14191f_int2 = CAST(f_char1 AS SIGNED INT),
14192f_charbig = 'just inserted'
14193   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14194DELETE FROM t0_aux
14195WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14196INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14197SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14198'just inserted' FROM t0_template
14199WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14200CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
14201BEGIN
14202UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14203f_charbig = 'updated by trigger'
14204      WHERE f_int1 = new.f_int1;
14205END|
14206UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
14207WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14208
14209# check trigger-3 success: 	1
14210DROP TRIGGER trg_1;
14211UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14212f_int2 = CAST(f_char1 AS SIGNED INT),
14213f_charbig = 'just inserted'
14214   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14215DELETE FROM t0_aux
14216WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14217INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14218SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14219'just inserted' FROM t0_template
14220WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14221CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
14222BEGIN
14223UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14224f_charbig = 'updated by trigger'
14225      WHERE f_int1 = - old.f_int1;
14226END|
14227UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
14228WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14229
14230# check trigger-4 success: 	1
14231DROP TRIGGER trg_1;
14232UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14233f_int2 = CAST(f_char1 AS SIGNED INT),
14234f_charbig = 'just inserted'
14235   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14236DELETE FROM t0_aux
14237WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14238INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14239SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14240'just inserted' FROM t0_template
14241WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14242CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
14243BEGIN
14244UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14245f_charbig = 'updated by trigger'
14246      WHERE f_int1 = new.f_int1;
14247END|
14248UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
14249WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14250
14251# check trigger-5 success: 	1
14252DROP TRIGGER trg_1;
14253UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14254f_int2 = CAST(f_char1 AS SIGNED INT),
14255f_charbig = 'just inserted'
14256   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14257DELETE FROM t0_aux
14258WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14259INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14260SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14261'just inserted' FROM t0_template
14262WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14263CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
14264BEGIN
14265UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14266f_charbig = 'updated by trigger'
14267      WHERE f_int1 = - old.f_int1;
14268END|
14269UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
14270WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14271
14272# check trigger-6 success: 	1
14273DROP TRIGGER trg_1;
14274UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14275f_int2 = CAST(f_char1 AS SIGNED INT),
14276f_charbig = 'just inserted'
14277   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14278DELETE FROM t0_aux
14279WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14280INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14281SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14282'just inserted' FROM t0_template
14283WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14284CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
14285BEGIN
14286UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14287f_charbig = 'updated by trigger'
14288      WHERE f_int1 = - old.f_int1;
14289END|
14290DELETE FROM t0_aux
14291WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14292
14293# check trigger-7 success: 	1
14294DROP TRIGGER trg_1;
14295UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14296f_int2 = CAST(f_char1 AS SIGNED INT),
14297f_charbig = 'just inserted'
14298   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14299DELETE FROM t0_aux
14300WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14301INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14302SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14303'just inserted' FROM t0_template
14304WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14305CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
14306BEGIN
14307UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14308f_charbig = 'updated by trigger'
14309      WHERE f_int1 = - old.f_int1;
14310END|
14311DELETE FROM t0_aux
14312WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14313
14314# check trigger-8 success: 	1
14315DROP TRIGGER trg_1;
14316UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14317f_int2 = CAST(f_char1 AS SIGNED INT),
14318f_charbig = 'just inserted'
14319   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14320DELETE FROM t0_aux
14321WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14322DELETE FROM t1
14323WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14324CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
14325BEGIN
14326SET new.f_int1 = old.f_int1 + @max_row,
14327new.f_int2 = old.f_int2 - @max_row,
14328new.f_charbig = '####updated per update trigger####';
14329END|
14330UPDATE t1
14331SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
14332f_charbig = '####updated per update statement itself####';
14333Warnings:
14334Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
14335
14336# check trigger-9 success: 	1
14337DROP TRIGGER trg_2;
14338UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14339f_int2 = CAST(f_char1 AS SIGNED INT),
14340f_charbig = CONCAT('===',f_char1,'===');
14341Warnings:
14342Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
14343CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
14344BEGIN
14345SET new.f_int1 = new.f_int1 + @max_row,
14346new.f_int2 = new.f_int2 - @max_row,
14347new.f_charbig = '####updated per update trigger####';
14348END|
14349UPDATE t1
14350SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
14351f_charbig = '####updated per update statement itself####';
14352Warnings:
14353Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
14354
14355# check trigger-10 success: 	1
14356DROP TRIGGER trg_2;
14357UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14358f_int2 = CAST(f_char1 AS SIGNED INT),
14359f_charbig = CONCAT('===',f_char1,'===');
14360Warnings:
14361Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
14362CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
14363BEGIN
14364SET new.f_int1 = @my_max1 + @counter,
14365new.f_int2 = @my_min2 - @counter,
14366new.f_charbig = '####updated per insert trigger####';
14367SET @counter = @counter + 1;
14368END|
14369SET @counter = 1;
14370SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
14371Warnings:
14372Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
14373INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14374SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
14375CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
14376WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
14377ORDER BY f_int1;
14378DROP TRIGGER trg_3;
14379
14380# check trigger-11 success: 	1
14381Warnings:
14382Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
14383DELETE FROM t1
14384WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
14385AND f_int2 <> CAST(f_char1 AS SIGNED INT)
14386AND f_charbig = '####updated per insert trigger####';
14387CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
14388BEGIN
14389SET new.f_int1 = @my_max1 + @counter,
14390new.f_int2 = @my_min2 - @counter,
14391new.f_charbig = '####updated per insert trigger####';
14392SET @counter = @counter + 1;
14393END|
14394SET @counter = 1;
14395SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
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_char1, f_char2, f_charbig)
14399SELECT CAST(f_int1 AS CHAR),
14400CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
14401WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
14402ORDER BY f_int1;
14403DROP TRIGGER trg_3;
14404
14405# check trigger-12 success: 	1
14406Warnings:
14407Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
14408DELETE FROM t1
14409WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
14410AND f_int2 <> CAST(f_char1 AS SIGNED INT)
14411AND f_charbig = '####updated per insert trigger####';
14412ANALYZE  TABLE t1;
14413Table	Op	Msg_type	Msg_text
14414test.t1	analyze	status	OK
14415test.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.
14416CHECK    TABLE t1 EXTENDED;
14417Table	Op	Msg_type	Msg_text
14418test.t1	check	status	OK
14419test.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.
14420CHECKSUM TABLE t1 EXTENDED;
14421Table	Checksum
14422test.t1	<some_value>
14423OPTIMIZE TABLE t1;
14424Table	Op	Msg_type	Msg_text
14425test.t1	optimize	status	OK
14426test.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.
14427# check layout success:    1
14428REPAIR   TABLE t1 EXTENDED;
14429Table	Op	Msg_type	Msg_text
14430test.t1	repair	status	OK
14431test.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.
14432# check layout success:    1
14433TRUNCATE t1;
14434Warnings:
14435Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
14436
14437# check TRUNCATE success: 	1
14438# check layout success:    1
14439# End usability test (inc/partition_check.inc)
14440DROP TABLE t1;
14441CREATE TABLE t1 (
14442f_int1 INTEGER,
14443f_int2 INTEGER,
14444f_char1 CHAR(20),
14445f_char2 CHAR(20),
14446f_charbig VARCHAR(1000)
14447, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
14448)
14449PARTITION BY LIST(MOD(f_int1 + f_int2,4))
14450(PARTITION part_3 VALUES IN (-3)
14451DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
14452PARTITION part_2 VALUES IN (-2)
14453DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
14454PARTITION part_1 VALUES IN (-1)
14455DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
14456PARTITION part_N VALUES IN (NULL)
14457DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
14458PARTITION part0 VALUES IN (0)
14459DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
14460PARTITION part1 VALUES IN (1)
14461DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
14462PARTITION part2 VALUES IN (2)
14463DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
14464PARTITION part3 VALUES IN (3)
14465DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir');
14466Warnings:
14467Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
14468INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
14469SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
14470Warnings:
14471Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
14472# Start usability test (inc/partition_check.inc)
14473create_command
14474SHOW CREATE TABLE t1;
14475Table	Create Table
14476t1	CREATE TABLE `t1` (
14477  `f_int1` int(11) DEFAULT NULL,
14478  `f_int2` int(11) DEFAULT NULL,
14479  `f_char1` char(20) DEFAULT NULL,
14480  `f_char2` char(20) DEFAULT NULL,
14481  `f_charbig` varchar(1000) DEFAULT NULL,
14482  UNIQUE KEY `uidx1` (`f_int1`,`f_int2`),
14483  UNIQUE KEY `uidx2` (`f_int2`,`f_int1`)
14484) ENGINE=MyISAM DEFAULT CHARSET=latin1
14485/*!50100 PARTITION BY LIST (MOD(f_int1 + f_int2,4))
14486(PARTITION part_3 VALUES IN (-3) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
14487 PARTITION part_2 VALUES IN (-2) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
14488 PARTITION part_1 VALUES IN (-1) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
14489 PARTITION part_N VALUES IN (NULL) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
14490 PARTITION part0 VALUES IN (0) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
14491 PARTITION part1 VALUES IN (1) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
14492 PARTITION part2 VALUES IN (2) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
14493 PARTITION part3 VALUES IN (3) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM) */
14494
14495unified filelist
14496t1#P#part0.MYD
14497t1#P#part0.MYI
14498t1#P#part1.MYD
14499t1#P#part1.MYI
14500t1#P#part2.MYD
14501t1#P#part2.MYI
14502t1#P#part3.MYD
14503t1#P#part3.MYI
14504t1#P#part_1.MYD
14505t1#P#part_1.MYI
14506t1#P#part_2.MYD
14507t1#P#part_2.MYI
14508t1#P#part_3.MYD
14509t1#P#part_3.MYI
14510t1#P#part_N.MYD
14511t1#P#part_N.MYI
14512t1.frm
14513t1.par
14514t1#P#part0.MYD
14515t1#P#part1.MYD
14516t1#P#part2.MYD
14517t1#P#part3.MYD
14518t1#P#part_1.MYD
14519t1#P#part_2.MYD
14520t1#P#part_3.MYD
14521t1#P#part_N.MYD
14522t1#P#part0.MYI
14523t1#P#part1.MYI
14524t1#P#part2.MYI
14525t1#P#part3.MYI
14526t1#P#part_1.MYI
14527t1#P#part_2.MYI
14528t1#P#part_3.MYI
14529t1#P#part_N.MYI
14530
14531# check prerequisites-1 success:    1
14532# check COUNT(*) success:    1
14533# check MIN/MAX(f_int1) success:    1
14534# check MIN/MAX(f_int2) success:    1
14535INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14536SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
14537CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
14538WHERE f_int1 IN (2,3);
14539ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
14540# check prerequisites-3 success:    1
14541# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
14542INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14543SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
14544CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
14545WHERE f_int1 IN (2,3);
14546DELETE FROM t1 WHERE f_charbig = 'delete me';
14547INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14548SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
14549CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
14550WHERE f_int1 IN (2,3);
14551DELETE FROM t1 WHERE f_charbig = 'delete me';
14552# check read via f_int1 success: 1
14553# check read via f_int2 success: 1
14554
14555# check multiple-1 success: 	1
14556DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
14557
14558# check multiple-2 success: 	1
14559INSERT INTO t1 SELECT * FROM t0_template
14560WHERE MOD(f_int1,3) = 0;
14561
14562# check multiple-3 success: 	1
14563UPDATE t1 SET f_int1 = f_int1 + @max_row
14564WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
14565AND @max_row_div2 + @max_row_div4;
14566
14567# check multiple-4 success: 	1
14568DELETE FROM t1
14569WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
14570AND @max_row_div2 + @max_row_div4 + @max_row;
14571
14572# check multiple-5 success: 	1
14573SELECT COUNT(*) INTO @try_count FROM t0_template
14574WHERE MOD(f_int1,3) = 0
14575AND f_int1 BETWEEN @max_row_div2 AND @max_row;
14576SELECT COUNT(*) INTO @clash_count
14577FROM t1 INNER JOIN t0_template USING(f_int1)
14578WHERE MOD(f_int1,3) = 0
14579AND f_int1 BETWEEN @max_row_div2 AND @max_row;
14580SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
14581INSERT INTO t1
14582SET f_int1 = @cur_value , f_int2 = @cur_value,
14583f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
14584f_charbig = '#SINGLE#';
14585
14586# check single-1 success: 	1
14587SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
14588INSERT INTO t1
14589SET f_int1 = @cur_value , f_int2 = @cur_value,
14590f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
14591f_charbig = '#SINGLE#';
14592
14593# check single-2 success: 	1
14594SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
14595SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
14596UPDATE t1 SET f_int1 = @cur_value2
14597WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
14598
14599# check single-3 success: 	1
14600SET @cur_value1= -1;
14601SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
14602UPDATE t1 SET f_int1 = @cur_value1
14603WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
14604
14605# check single-4 success: 	1
14606SELECT MAX(f_int1) INTO @cur_value FROM t1;
14607DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
14608
14609# check single-5 success: 	1
14610DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
14611
14612# check single-6 success: 	1
14613INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
14614
14615# check single-7 success: 	1
14616DELETE FROM t1 WHERE f_charbig = '#2147483647##';
14617DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
14618INSERT t1 SET f_int1 = 0 , f_int2 = 0,
14619f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
14620f_charbig = '#NULL#';
14621INSERT INTO t1
14622SET f_int1 = NULL , f_int2 = -@max_row,
14623f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
14624f_charbig = '#NULL#';
14625# check null success:    1
14626
14627# check null-1 success: 	1
14628UPDATE t1 SET f_int1 = -@max_row
14629WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
14630AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
14631
14632# check null-2 success: 	1
14633UPDATE t1 SET f_int1 = NULL
14634WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
14635AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
14636
14637# check null-3 success: 	1
14638DELETE FROM t1
14639WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
14640AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
14641
14642# check null-4 success: 	1
14643DELETE FROM t1
14644WHERE f_int1 = 0 AND f_int2 = 0
14645AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
14646AND f_charbig = '#NULL#';
14647INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14648SELECT f_int1, f_int1, '', '', 'was inserted'
14649   FROM t0_template source_tab
14650WHERE MOD(f_int1,3) = 0
14651AND f_int1 BETWEEN @max_row_div2 AND @max_row
14652ON DUPLICATE KEY
14653UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
14654f_int2 = 2 * @max_row + source_tab.f_int1,
14655f_charbig = 'was updated';
14656
14657# check unique-1-a success: 	1
14658
14659# check unique-1-b success: 	1
14660DELETE FROM t1 WHERE f_charbig = 'was inserted';
14661UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14662f_int2 = CAST(f_char1 AS SIGNED INT),
14663f_charbig = CONCAT('===',f_char1,'===')
14664WHERE f_charbig = 'was updated';
14665REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14666SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
14667   FROM t0_template source_tab
14668WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
14669
14670# check replace success: 	1
14671DELETE FROM t1
14672WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
14673DELETE FROM t1
14674WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
14675f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
14676UPDATE t1 SET f_int2 = f_int1,
14677f_char1 = CAST(f_int1 AS CHAR),
14678f_char2 = CAST(f_int1 AS CHAR),
14679f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
14680WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
14681SET AUTOCOMMIT= 0;
14682INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14683SELECT f_int1, f_int1, '', '', 'was inserted'
14684FROM t0_template source_tab
14685WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
14686
14687# check transactions-1 success: 	1
14688COMMIT WORK;
14689
14690# check transactions-2 success: 	1
14691ROLLBACK WORK;
14692
14693# check transactions-3 success: 	1
14694DELETE FROM t1 WHERE f_charbig = 'was inserted';
14695COMMIT WORK;
14696ROLLBACK WORK;
14697
14698# check transactions-4 success: 	1
14699INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14700SELECT f_int1, f_int1, '', '', 'was inserted'
14701FROM t0_template source_tab
14702WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
14703
14704# check transactions-5 success: 	1
14705ROLLBACK WORK;
14706Warnings:
14707Warning	1196	Some non-transactional changed tables couldn't be rolled back
14708
14709# check transactions-6 success: 	1
14710# INFO: Storage engine used for t1 seems to be not transactional.
14711COMMIT;
14712
14713# check transactions-7 success: 	1
14714DELETE FROM t1 WHERE f_charbig = 'was inserted';
14715COMMIT WORK;
14716SET @@session.sql_mode = 'traditional';
14717Warnings:
14718Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
14719SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
14720INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14721SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
14722'', '', 'was inserted' FROM t0_template
14723WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
14724ERROR 22012: Division by 0
14725COMMIT;
14726
14727# check transactions-8 success: 	1
14728# INFO: Storage engine used for t1 seems to be unable to revert
14729#       changes made by the failing statement.
14730SET @@session.sql_mode = '';
14731Warnings:
14732Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
14733SET AUTOCOMMIT= 1;
14734DELETE FROM t1 WHERE f_charbig = 'was inserted';
14735COMMIT WORK;
14736UPDATE t1 SET f_charbig = REPEAT('b', 1000);
14737
14738# check special-1 success: 	1
14739UPDATE t1 SET f_charbig = '';
14740
14741# check special-2 success: 	1
14742UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
14743INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
14744SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
14745WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14746INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14747SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14748'just inserted' FROM t0_template
14749WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14750CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
14751BEGIN
14752UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14753f_charbig = 'updated by trigger'
14754      WHERE f_int1 = new.f_int1;
14755END|
14756INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14757SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
14758WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14759
14760# check trigger-1 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 INSERT 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 = new.f_int1;
14777END|
14778INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14779SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
14780WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14781
14782# check trigger-2 success: 	1
14783DROP TRIGGER trg_1;
14784UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14785f_int2 = CAST(f_char1 AS SIGNED INT),
14786f_charbig = 'just inserted'
14787   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14788DELETE FROM t0_aux
14789WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14790INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14791SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14792'just inserted' FROM t0_template
14793WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14794CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
14795BEGIN
14796UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14797f_charbig = 'updated by trigger'
14798      WHERE f_int1 = new.f_int1;
14799END|
14800UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
14801WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14802
14803# check trigger-3 success: 	1
14804DROP TRIGGER trg_1;
14805UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14806f_int2 = CAST(f_char1 AS SIGNED INT),
14807f_charbig = 'just inserted'
14808   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14809DELETE FROM t0_aux
14810WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14811INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14812SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14813'just inserted' FROM t0_template
14814WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14815CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
14816BEGIN
14817UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14818f_charbig = 'updated by trigger'
14819      WHERE f_int1 = - old.f_int1;
14820END|
14821UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
14822WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14823
14824# check trigger-4 success: 	1
14825DROP TRIGGER trg_1;
14826UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14827f_int2 = CAST(f_char1 AS SIGNED INT),
14828f_charbig = 'just inserted'
14829   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14830DELETE FROM t0_aux
14831WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14832INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14833SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14834'just inserted' FROM t0_template
14835WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14836CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
14837BEGIN
14838UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14839f_charbig = 'updated by trigger'
14840      WHERE f_int1 = new.f_int1;
14841END|
14842UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
14843WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14844
14845# check trigger-5 success: 	1
14846DROP TRIGGER trg_1;
14847UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14848f_int2 = CAST(f_char1 AS SIGNED INT),
14849f_charbig = 'just inserted'
14850   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14851DELETE FROM t0_aux
14852WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14853INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14854SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14855'just inserted' FROM t0_template
14856WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14857CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
14858BEGIN
14859UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14860f_charbig = 'updated by trigger'
14861      WHERE f_int1 = - old.f_int1;
14862END|
14863UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
14864WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14865
14866# check trigger-6 success: 	1
14867DROP TRIGGER trg_1;
14868UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14869f_int2 = CAST(f_char1 AS SIGNED INT),
14870f_charbig = 'just inserted'
14871   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14872DELETE FROM t0_aux
14873WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14874INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14875SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14876'just inserted' FROM t0_template
14877WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14878CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
14879BEGIN
14880UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14881f_charbig = 'updated by trigger'
14882      WHERE f_int1 = - old.f_int1;
14883END|
14884DELETE FROM t0_aux
14885WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14886
14887# check trigger-7 success: 	1
14888DROP TRIGGER trg_1;
14889UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14890f_int2 = CAST(f_char1 AS SIGNED INT),
14891f_charbig = 'just inserted'
14892   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14893DELETE FROM t0_aux
14894WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14895INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14896SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14897'just inserted' FROM t0_template
14898WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14899CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
14900BEGIN
14901UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14902f_charbig = 'updated by trigger'
14903      WHERE f_int1 = - old.f_int1;
14904END|
14905DELETE FROM t0_aux
14906WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14907
14908# check trigger-8 success: 	1
14909DROP TRIGGER trg_1;
14910UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14911f_int2 = CAST(f_char1 AS SIGNED INT),
14912f_charbig = 'just inserted'
14913   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14914DELETE FROM t0_aux
14915WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14916DELETE FROM t1
14917WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14918CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
14919BEGIN
14920SET new.f_int1 = old.f_int1 + @max_row,
14921new.f_int2 = old.f_int2 - @max_row,
14922new.f_charbig = '####updated per update trigger####';
14923END|
14924UPDATE t1
14925SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
14926f_charbig = '####updated per update statement itself####';
14927Warnings:
14928Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
14929
14930# check trigger-9 success: 	1
14931DROP TRIGGER trg_2;
14932UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14933f_int2 = CAST(f_char1 AS SIGNED INT),
14934f_charbig = CONCAT('===',f_char1,'===');
14935Warnings:
14936Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
14937CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
14938BEGIN
14939SET new.f_int1 = new.f_int1 + @max_row,
14940new.f_int2 = new.f_int2 - @max_row,
14941new.f_charbig = '####updated per update trigger####';
14942END|
14943UPDATE t1
14944SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
14945f_charbig = '####updated per update statement itself####';
14946Warnings:
14947Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
14948
14949# check trigger-10 success: 	1
14950DROP TRIGGER trg_2;
14951UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14952f_int2 = CAST(f_char1 AS SIGNED INT),
14953f_charbig = CONCAT('===',f_char1,'===');
14954Warnings:
14955Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
14956CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
14957BEGIN
14958SET new.f_int1 = @my_max1 + @counter,
14959new.f_int2 = @my_min2 - @counter,
14960new.f_charbig = '####updated per insert trigger####';
14961SET @counter = @counter + 1;
14962END|
14963SET @counter = 1;
14964SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
14965Warnings:
14966Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
14967INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14968SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
14969CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
14970WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
14971ORDER BY f_int1;
14972DROP TRIGGER trg_3;
14973
14974# check trigger-11 success: 	1
14975Warnings:
14976Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
14977DELETE FROM t1
14978WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
14979AND f_int2 <> CAST(f_char1 AS SIGNED INT)
14980AND f_charbig = '####updated per insert trigger####';
14981CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
14982BEGIN
14983SET new.f_int1 = @my_max1 + @counter,
14984new.f_int2 = @my_min2 - @counter,
14985new.f_charbig = '####updated per insert trigger####';
14986SET @counter = @counter + 1;
14987END|
14988SET @counter = 1;
14989SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
14990Warnings:
14991Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
14992INSERT INTO t1 (f_char1, f_char2, f_charbig)
14993SELECT CAST(f_int1 AS CHAR),
14994CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
14995WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
14996ORDER BY f_int1;
14997DROP TRIGGER trg_3;
14998
14999# check trigger-12 success: 	1
15000Warnings:
15001Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
15002DELETE FROM t1
15003WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
15004AND f_int2 <> CAST(f_char1 AS SIGNED INT)
15005AND f_charbig = '####updated per insert trigger####';
15006ANALYZE  TABLE t1;
15007Table	Op	Msg_type	Msg_text
15008test.t1	analyze	status	OK
15009test.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.
15010CHECK    TABLE t1 EXTENDED;
15011Table	Op	Msg_type	Msg_text
15012test.t1	check	status	OK
15013test.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.
15014CHECKSUM TABLE t1 EXTENDED;
15015Table	Checksum
15016test.t1	<some_value>
15017OPTIMIZE TABLE t1;
15018Table	Op	Msg_type	Msg_text
15019test.t1	optimize	status	OK
15020test.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.
15021# check layout success:    1
15022REPAIR   TABLE t1 EXTENDED;
15023Table	Op	Msg_type	Msg_text
15024test.t1	repair	status	OK
15025test.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.
15026# check layout success:    1
15027TRUNCATE t1;
15028Warnings:
15029Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
15030
15031# check TRUNCATE success: 	1
15032# check layout success:    1
15033# End usability test (inc/partition_check.inc)
15034DROP TABLE t1;
15035CREATE TABLE t1 (
15036f_int1 INTEGER,
15037f_int2 INTEGER,
15038f_char1 CHAR(20),
15039f_char2 CHAR(20),
15040f_charbig VARCHAR(1000)
15041, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
15042)
15043PARTITION BY RANGE((f_int1 + f_int2) DIV 2)
15044(PARTITION parta VALUES LESS THAN (0)
15045DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
15046INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
15047PARTITION partb VALUES LESS THAN (5)
15048DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
15049INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
15050PARTITION partc VALUES LESS THAN (10)
15051DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
15052INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
15053PARTITION partd VALUES LESS THAN (10 + 5)
15054DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
15055INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
15056PARTITION parte VALUES LESS THAN (20)
15057DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
15058INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
15059PARTITION partf VALUES LESS THAN (2147483646)
15060DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
15061INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir');
15062Warnings:
15063Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
15064INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15065SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
15066Warnings:
15067Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
15068# Start usability test (inc/partition_check.inc)
15069create_command
15070SHOW CREATE TABLE t1;
15071Table	Create Table
15072t1	CREATE TABLE `t1` (
15073  `f_int1` int(11) DEFAULT NULL,
15074  `f_int2` int(11) DEFAULT NULL,
15075  `f_char1` char(20) DEFAULT NULL,
15076  `f_char2` char(20) DEFAULT NULL,
15077  `f_charbig` varchar(1000) DEFAULT NULL,
15078  UNIQUE KEY `uidx1` (`f_int1`,`f_int2`),
15079  UNIQUE KEY `uidx2` (`f_int2`,`f_int1`)
15080) ENGINE=MyISAM DEFAULT CHARSET=latin1
15081/*!50100 PARTITION BY RANGE ((f_int1 + f_int2) DIV 2)
15082(PARTITION parta VALUES LESS THAN (0) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
15083 PARTITION partb VALUES LESS THAN (5) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
15084 PARTITION partc VALUES LESS THAN (10) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
15085 PARTITION partd VALUES LESS THAN (15) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
15086 PARTITION parte VALUES LESS THAN (20) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
15087 PARTITION partf VALUES LESS THAN (2147483646) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM) */
15088
15089unified filelist
15090t1#P#parta.MYD
15091t1#P#parta.MYI
15092t1#P#partb.MYD
15093t1#P#partb.MYI
15094t1#P#partc.MYD
15095t1#P#partc.MYI
15096t1#P#partd.MYD
15097t1#P#partd.MYI
15098t1#P#parte.MYD
15099t1#P#parte.MYI
15100t1#P#partf.MYD
15101t1#P#partf.MYI
15102t1.frm
15103t1.par
15104t1#P#parta.MYD
15105t1#P#partb.MYD
15106t1#P#partc.MYD
15107t1#P#partd.MYD
15108t1#P#parte.MYD
15109t1#P#partf.MYD
15110t1#P#parta.MYI
15111t1#P#partb.MYI
15112t1#P#partc.MYI
15113t1#P#partd.MYI
15114t1#P#parte.MYI
15115t1#P#partf.MYI
15116
15117# check prerequisites-1 success:    1
15118# check COUNT(*) success:    1
15119# check MIN/MAX(f_int1) success:    1
15120# check MIN/MAX(f_int2) success:    1
15121INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15122SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
15123CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
15124WHERE f_int1 IN (2,3);
15125ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
15126# check prerequisites-3 success:    1
15127# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
15128INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15129SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
15130CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
15131WHERE f_int1 IN (2,3);
15132DELETE FROM t1 WHERE f_charbig = 'delete me';
15133INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15134SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
15135CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
15136WHERE f_int1 IN (2,3);
15137DELETE FROM t1 WHERE f_charbig = 'delete me';
15138# check read via f_int1 success: 1
15139# check read via f_int2 success: 1
15140
15141# check multiple-1 success: 	1
15142DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
15143
15144# check multiple-2 success: 	1
15145INSERT INTO t1 SELECT * FROM t0_template
15146WHERE MOD(f_int1,3) = 0;
15147
15148# check multiple-3 success: 	1
15149UPDATE t1 SET f_int1 = f_int1 + @max_row
15150WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
15151AND @max_row_div2 + @max_row_div4;
15152
15153# check multiple-4 success: 	1
15154DELETE FROM t1
15155WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
15156AND @max_row_div2 + @max_row_div4 + @max_row;
15157
15158# check multiple-5 success: 	1
15159SELECT COUNT(*) INTO @try_count FROM t0_template
15160WHERE MOD(f_int1,3) = 0
15161AND f_int1 BETWEEN @max_row_div2 AND @max_row;
15162SELECT COUNT(*) INTO @clash_count
15163FROM t1 INNER JOIN t0_template USING(f_int1)
15164WHERE MOD(f_int1,3) = 0
15165AND f_int1 BETWEEN @max_row_div2 AND @max_row;
15166SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
15167INSERT INTO t1
15168SET f_int1 = @cur_value , f_int2 = @cur_value,
15169f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
15170f_charbig = '#SINGLE#';
15171
15172# check single-1 success: 	1
15173SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
15174INSERT INTO t1
15175SET f_int1 = @cur_value , f_int2 = @cur_value,
15176f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
15177f_charbig = '#SINGLE#';
15178
15179# check single-2 success: 	1
15180SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
15181SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
15182UPDATE t1 SET f_int1 = @cur_value2
15183WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
15184
15185# check single-3 success: 	1
15186SET @cur_value1= -1;
15187SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
15188UPDATE t1 SET f_int1 = @cur_value1
15189WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
15190
15191# check single-4 success: 	1
15192SELECT MAX(f_int1) INTO @cur_value FROM t1;
15193DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
15194
15195# check single-5 success: 	1
15196DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
15197
15198# check single-6 success: 	1
15199INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
15200ERROR HY000: Table has no partition for value 2147483647
15201DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
15202INSERT t1 SET f_int1 = 0 , f_int2 = 0,
15203f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
15204f_charbig = '#NULL#';
15205INSERT INTO t1
15206SET f_int1 = NULL , f_int2 = -@max_row,
15207f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
15208f_charbig = '#NULL#';
15209# check null success:    1
15210
15211# check null-1 success: 	1
15212UPDATE t1 SET f_int1 = -@max_row
15213WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
15214AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
15215
15216# check null-2 success: 	1
15217UPDATE t1 SET f_int1 = NULL
15218WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
15219AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
15220
15221# check null-3 success: 	1
15222DELETE FROM t1
15223WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
15224AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
15225
15226# check null-4 success: 	1
15227DELETE FROM t1
15228WHERE f_int1 = 0 AND f_int2 = 0
15229AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
15230AND f_charbig = '#NULL#';
15231INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15232SELECT f_int1, f_int1, '', '', 'was inserted'
15233   FROM t0_template source_tab
15234WHERE MOD(f_int1,3) = 0
15235AND f_int1 BETWEEN @max_row_div2 AND @max_row
15236ON DUPLICATE KEY
15237UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
15238f_int2 = 2 * @max_row + source_tab.f_int1,
15239f_charbig = 'was updated';
15240
15241# check unique-1-a success: 	1
15242
15243# check unique-1-b success: 	1
15244DELETE FROM t1 WHERE f_charbig = 'was inserted';
15245UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15246f_int2 = CAST(f_char1 AS SIGNED INT),
15247f_charbig = CONCAT('===',f_char1,'===')
15248WHERE f_charbig = 'was updated';
15249REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15250SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
15251   FROM t0_template source_tab
15252WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
15253
15254# check replace success: 	1
15255DELETE FROM t1
15256WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
15257DELETE FROM t1
15258WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
15259f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
15260UPDATE t1 SET f_int2 = f_int1,
15261f_char1 = CAST(f_int1 AS CHAR),
15262f_char2 = CAST(f_int1 AS CHAR),
15263f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
15264WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
15265SET AUTOCOMMIT= 0;
15266INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15267SELECT f_int1, f_int1, '', '', 'was inserted'
15268FROM t0_template source_tab
15269WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
15270
15271# check transactions-1 success: 	1
15272COMMIT WORK;
15273
15274# check transactions-2 success: 	1
15275ROLLBACK WORK;
15276
15277# check transactions-3 success: 	1
15278DELETE FROM t1 WHERE f_charbig = 'was inserted';
15279COMMIT WORK;
15280ROLLBACK WORK;
15281
15282# check transactions-4 success: 	1
15283INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15284SELECT f_int1, f_int1, '', '', 'was inserted'
15285FROM t0_template source_tab
15286WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
15287
15288# check transactions-5 success: 	1
15289ROLLBACK WORK;
15290Warnings:
15291Warning	1196	Some non-transactional changed tables couldn't be rolled back
15292
15293# check transactions-6 success: 	1
15294# INFO: Storage engine used for t1 seems to be not transactional.
15295COMMIT;
15296
15297# check transactions-7 success: 	1
15298DELETE FROM t1 WHERE f_charbig = 'was inserted';
15299COMMIT WORK;
15300SET @@session.sql_mode = 'traditional';
15301Warnings:
15302Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
15303SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
15304INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15305SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
15306'', '', 'was inserted' FROM t0_template
15307WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
15308ERROR 22012: Division by 0
15309COMMIT;
15310
15311# check transactions-8 success: 	1
15312# INFO: Storage engine used for t1 seems to be unable to revert
15313#       changes made by the failing statement.
15314SET @@session.sql_mode = '';
15315Warnings:
15316Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
15317SET AUTOCOMMIT= 1;
15318DELETE FROM t1 WHERE f_charbig = 'was inserted';
15319COMMIT WORK;
15320UPDATE t1 SET f_charbig = REPEAT('b', 1000);
15321
15322# check special-1 success: 	1
15323UPDATE t1 SET f_charbig = '';
15324
15325# check special-2 success: 	1
15326UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
15327INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15328SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
15329WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15330INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15331SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15332'just inserted' FROM t0_template
15333WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15334CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
15335BEGIN
15336UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15337f_charbig = 'updated by trigger'
15338      WHERE f_int1 = new.f_int1;
15339END|
15340INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15341SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
15342WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15343
15344# check trigger-1 success: 	1
15345DROP TRIGGER trg_1;
15346UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15347f_int2 = CAST(f_char1 AS SIGNED INT),
15348f_charbig = 'just inserted'
15349   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15350DELETE FROM t0_aux
15351WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15352INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15353SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15354'just inserted' FROM t0_template
15355WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15356CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
15357BEGIN
15358UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15359f_charbig = 'updated by trigger'
15360      WHERE f_int1 = new.f_int1;
15361END|
15362INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15363SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
15364WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15365
15366# check trigger-2 success: 	1
15367DROP TRIGGER trg_1;
15368UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15369f_int2 = CAST(f_char1 AS SIGNED INT),
15370f_charbig = 'just inserted'
15371   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15372DELETE FROM t0_aux
15373WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15374INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15375SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15376'just inserted' FROM t0_template
15377WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15378CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
15379BEGIN
15380UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15381f_charbig = 'updated by trigger'
15382      WHERE f_int1 = new.f_int1;
15383END|
15384UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
15385WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15386
15387# check trigger-3 success: 	1
15388DROP TRIGGER trg_1;
15389UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15390f_int2 = CAST(f_char1 AS SIGNED INT),
15391f_charbig = 'just inserted'
15392   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15393DELETE FROM t0_aux
15394WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15395INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15396SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15397'just inserted' FROM t0_template
15398WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15399CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
15400BEGIN
15401UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15402f_charbig = 'updated by trigger'
15403      WHERE f_int1 = - old.f_int1;
15404END|
15405UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
15406WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15407
15408# check trigger-4 success: 	1
15409DROP TRIGGER trg_1;
15410UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15411f_int2 = CAST(f_char1 AS SIGNED INT),
15412f_charbig = 'just inserted'
15413   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15414DELETE FROM t0_aux
15415WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15416INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15417SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15418'just inserted' FROM t0_template
15419WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15420CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
15421BEGIN
15422UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15423f_charbig = 'updated by trigger'
15424      WHERE f_int1 = new.f_int1;
15425END|
15426UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
15427WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15428
15429# check trigger-5 success: 	1
15430DROP TRIGGER trg_1;
15431UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15432f_int2 = CAST(f_char1 AS SIGNED INT),
15433f_charbig = 'just inserted'
15434   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15435DELETE FROM t0_aux
15436WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15437INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15438SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15439'just inserted' FROM t0_template
15440WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15441CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
15442BEGIN
15443UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15444f_charbig = 'updated by trigger'
15445      WHERE f_int1 = - old.f_int1;
15446END|
15447UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
15448WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15449
15450# check trigger-6 success: 	1
15451DROP TRIGGER trg_1;
15452UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15453f_int2 = CAST(f_char1 AS SIGNED INT),
15454f_charbig = 'just inserted'
15455   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15456DELETE FROM t0_aux
15457WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15458INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15459SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15460'just inserted' FROM t0_template
15461WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15462CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
15463BEGIN
15464UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15465f_charbig = 'updated by trigger'
15466      WHERE f_int1 = - old.f_int1;
15467END|
15468DELETE FROM t0_aux
15469WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15470
15471# check trigger-7 success: 	1
15472DROP TRIGGER trg_1;
15473UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15474f_int2 = CAST(f_char1 AS SIGNED INT),
15475f_charbig = 'just inserted'
15476   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15477DELETE FROM t0_aux
15478WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15479INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15480SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15481'just inserted' FROM t0_template
15482WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15483CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
15484BEGIN
15485UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15486f_charbig = 'updated by trigger'
15487      WHERE f_int1 = - old.f_int1;
15488END|
15489DELETE FROM t0_aux
15490WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15491
15492# check trigger-8 success: 	1
15493DROP TRIGGER trg_1;
15494UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15495f_int2 = CAST(f_char1 AS SIGNED INT),
15496f_charbig = 'just inserted'
15497   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15498DELETE FROM t0_aux
15499WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15500DELETE FROM t1
15501WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15502CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
15503BEGIN
15504SET new.f_int1 = old.f_int1 + @max_row,
15505new.f_int2 = old.f_int2 - @max_row,
15506new.f_charbig = '####updated per update trigger####';
15507END|
15508UPDATE t1
15509SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
15510f_charbig = '####updated per update statement itself####';
15511Warnings:
15512Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
15513
15514# check trigger-9 success: 	1
15515DROP TRIGGER trg_2;
15516UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15517f_int2 = CAST(f_char1 AS SIGNED INT),
15518f_charbig = CONCAT('===',f_char1,'===');
15519Warnings:
15520Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
15521CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
15522BEGIN
15523SET new.f_int1 = new.f_int1 + @max_row,
15524new.f_int2 = new.f_int2 - @max_row,
15525new.f_charbig = '####updated per update trigger####';
15526END|
15527UPDATE t1
15528SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
15529f_charbig = '####updated per update statement itself####';
15530Warnings:
15531Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
15532
15533# check trigger-10 success: 	1
15534DROP TRIGGER trg_2;
15535UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15536f_int2 = CAST(f_char1 AS SIGNED INT),
15537f_charbig = CONCAT('===',f_char1,'===');
15538Warnings:
15539Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
15540CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
15541BEGIN
15542SET new.f_int1 = @my_max1 + @counter,
15543new.f_int2 = @my_min2 - @counter,
15544new.f_charbig = '####updated per insert trigger####';
15545SET @counter = @counter + 1;
15546END|
15547SET @counter = 1;
15548SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
15549Warnings:
15550Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
15551INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15552SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
15553CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
15554WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
15555ORDER BY f_int1;
15556DROP TRIGGER trg_3;
15557
15558# check trigger-11 success: 	1
15559Warnings:
15560Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
15561DELETE FROM t1
15562WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
15563AND f_int2 <> CAST(f_char1 AS SIGNED INT)
15564AND f_charbig = '####updated per insert trigger####';
15565CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
15566BEGIN
15567SET new.f_int1 = @my_max1 + @counter,
15568new.f_int2 = @my_min2 - @counter,
15569new.f_charbig = '####updated per insert trigger####';
15570SET @counter = @counter + 1;
15571END|
15572SET @counter = 1;
15573SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
15574Warnings:
15575Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
15576INSERT INTO t1 (f_char1, f_char2, f_charbig)
15577SELECT CAST(f_int1 AS CHAR),
15578CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
15579WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
15580ORDER BY f_int1;
15581DROP TRIGGER trg_3;
15582
15583# check trigger-12 success: 	1
15584Warnings:
15585Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
15586DELETE FROM t1
15587WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
15588AND f_int2 <> CAST(f_char1 AS SIGNED INT)
15589AND f_charbig = '####updated per insert trigger####';
15590ANALYZE  TABLE t1;
15591Table	Op	Msg_type	Msg_text
15592test.t1	analyze	status	OK
15593test.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.
15594CHECK    TABLE t1 EXTENDED;
15595Table	Op	Msg_type	Msg_text
15596test.t1	check	status	OK
15597test.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.
15598CHECKSUM TABLE t1 EXTENDED;
15599Table	Checksum
15600test.t1	<some_value>
15601OPTIMIZE TABLE t1;
15602Table	Op	Msg_type	Msg_text
15603test.t1	optimize	status	OK
15604test.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.
15605# check layout success:    1
15606REPAIR   TABLE t1 EXTENDED;
15607Table	Op	Msg_type	Msg_text
15608test.t1	repair	status	OK
15609test.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.
15610# check layout success:    1
15611TRUNCATE t1;
15612Warnings:
15613Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
15614
15615# check TRUNCATE success: 	1
15616# check layout success:    1
15617# End usability test (inc/partition_check.inc)
15618DROP TABLE t1;
15619CREATE TABLE t1 (
15620f_int1 INTEGER,
15621f_int2 INTEGER,
15622f_char1 CHAR(20),
15623f_char2 CHAR(20),
15624f_charbig VARCHAR(1000)
15625, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
15626)
15627PARTITION BY RANGE(f_int1) SUBPARTITION BY HASH(f_int2) SUBPARTITIONS 2
15628(PARTITION parta VALUES LESS THAN (0)
15629DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
15630INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
15631PARTITION partb VALUES LESS THAN (5)
15632DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
15633INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
15634PARTITION partc VALUES LESS THAN (10)
15635DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
15636INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
15637PARTITION partd VALUES LESS THAN (2147483646)
15638DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
15639INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir');
15640Warnings:
15641Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
15642INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15643SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
15644Warnings:
15645Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
15646# Start usability test (inc/partition_check.inc)
15647create_command
15648SHOW CREATE TABLE t1;
15649Table	Create Table
15650t1	CREATE TABLE `t1` (
15651  `f_int1` int(11) DEFAULT NULL,
15652  `f_int2` int(11) DEFAULT NULL,
15653  `f_char1` char(20) DEFAULT NULL,
15654  `f_char2` char(20) DEFAULT NULL,
15655  `f_charbig` varchar(1000) DEFAULT NULL,
15656  UNIQUE KEY `uidx1` (`f_int1`,`f_int2`),
15657  UNIQUE KEY `uidx2` (`f_int2`,`f_int1`)
15658) ENGINE=MyISAM DEFAULT CHARSET=latin1
15659/*!50100 PARTITION BY RANGE (f_int1)
15660SUBPARTITION BY HASH (f_int2)
15661SUBPARTITIONS 2
15662(PARTITION parta VALUES LESS THAN (0) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
15663 PARTITION partb VALUES LESS THAN (5) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
15664 PARTITION partc VALUES LESS THAN (10) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
15665 PARTITION partd VALUES LESS THAN (2147483646) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM) */
15666
15667unified filelist
15668t1#P#parta#SP#partasp0.MYD
15669t1#P#parta#SP#partasp0.MYI
15670t1#P#parta#SP#partasp1.MYD
15671t1#P#parta#SP#partasp1.MYI
15672t1#P#partb#SP#partbsp0.MYD
15673t1#P#partb#SP#partbsp0.MYI
15674t1#P#partb#SP#partbsp1.MYD
15675t1#P#partb#SP#partbsp1.MYI
15676t1#P#partc#SP#partcsp0.MYD
15677t1#P#partc#SP#partcsp0.MYI
15678t1#P#partc#SP#partcsp1.MYD
15679t1#P#partc#SP#partcsp1.MYI
15680t1#P#partd#SP#partdsp0.MYD
15681t1#P#partd#SP#partdsp0.MYI
15682t1#P#partd#SP#partdsp1.MYD
15683t1#P#partd#SP#partdsp1.MYI
15684t1.frm
15685t1.par
15686t1#P#parta#SP#partasp0.MYD
15687t1#P#parta#SP#partasp1.MYD
15688t1#P#partb#SP#partbsp0.MYD
15689t1#P#partb#SP#partbsp1.MYD
15690t1#P#partc#SP#partcsp0.MYD
15691t1#P#partc#SP#partcsp1.MYD
15692t1#P#partd#SP#partdsp0.MYD
15693t1#P#partd#SP#partdsp1.MYD
15694t1#P#parta#SP#partasp0.MYI
15695t1#P#parta#SP#partasp1.MYI
15696t1#P#partb#SP#partbsp0.MYI
15697t1#P#partb#SP#partbsp1.MYI
15698t1#P#partc#SP#partcsp0.MYI
15699t1#P#partc#SP#partcsp1.MYI
15700t1#P#partd#SP#partdsp0.MYI
15701t1#P#partd#SP#partdsp1.MYI
15702
15703# check prerequisites-1 success:    1
15704# check COUNT(*) success:    1
15705# check MIN/MAX(f_int1) success:    1
15706# check MIN/MAX(f_int2) success:    1
15707INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15708SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
15709CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
15710WHERE f_int1 IN (2,3);
15711ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
15712# check prerequisites-3 success:    1
15713# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
15714INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15715SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
15716CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
15717WHERE f_int1 IN (2,3);
15718DELETE FROM t1 WHERE f_charbig = 'delete me';
15719INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15720SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
15721CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
15722WHERE f_int1 IN (2,3);
15723DELETE FROM t1 WHERE f_charbig = 'delete me';
15724# check read via f_int1 success: 1
15725# check read via f_int2 success: 1
15726
15727# check multiple-1 success: 	1
15728DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
15729
15730# check multiple-2 success: 	1
15731INSERT INTO t1 SELECT * FROM t0_template
15732WHERE MOD(f_int1,3) = 0;
15733
15734# check multiple-3 success: 	1
15735UPDATE t1 SET f_int1 = f_int1 + @max_row
15736WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
15737AND @max_row_div2 + @max_row_div4;
15738
15739# check multiple-4 success: 	1
15740DELETE FROM t1
15741WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
15742AND @max_row_div2 + @max_row_div4 + @max_row;
15743
15744# check multiple-5 success: 	1
15745SELECT COUNT(*) INTO @try_count FROM t0_template
15746WHERE MOD(f_int1,3) = 0
15747AND f_int1 BETWEEN @max_row_div2 AND @max_row;
15748SELECT COUNT(*) INTO @clash_count
15749FROM t1 INNER JOIN t0_template USING(f_int1)
15750WHERE MOD(f_int1,3) = 0
15751AND f_int1 BETWEEN @max_row_div2 AND @max_row;
15752SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
15753INSERT INTO t1
15754SET f_int1 = @cur_value , f_int2 = @cur_value,
15755f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
15756f_charbig = '#SINGLE#';
15757
15758# check single-1 success: 	1
15759SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
15760INSERT INTO t1
15761SET f_int1 = @cur_value , f_int2 = @cur_value,
15762f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
15763f_charbig = '#SINGLE#';
15764
15765# check single-2 success: 	1
15766SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
15767SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
15768UPDATE t1 SET f_int1 = @cur_value2
15769WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
15770
15771# check single-3 success: 	1
15772SET @cur_value1= -1;
15773SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
15774UPDATE t1 SET f_int1 = @cur_value1
15775WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
15776
15777# check single-4 success: 	1
15778SELECT MAX(f_int1) INTO @cur_value FROM t1;
15779DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
15780
15781# check single-5 success: 	1
15782DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
15783
15784# check single-6 success: 	1
15785INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
15786ERROR HY000: Table has no partition for value 2147483647
15787DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
15788INSERT t1 SET f_int1 = 0 , f_int2 = 0,
15789f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
15790f_charbig = '#NULL#';
15791INSERT INTO t1
15792SET f_int1 = NULL , f_int2 = -@max_row,
15793f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
15794f_charbig = '#NULL#';
15795# check null success:    1
15796
15797# check null-1 success: 	1
15798UPDATE t1 SET f_int1 = -@max_row
15799WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
15800AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
15801
15802# check null-2 success: 	1
15803UPDATE t1 SET f_int1 = NULL
15804WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
15805AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
15806
15807# check null-3 success: 	1
15808DELETE FROM t1
15809WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
15810AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
15811
15812# check null-4 success: 	1
15813DELETE FROM t1
15814WHERE f_int1 = 0 AND f_int2 = 0
15815AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
15816AND f_charbig = '#NULL#';
15817INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15818SELECT f_int1, f_int1, '', '', 'was inserted'
15819   FROM t0_template source_tab
15820WHERE MOD(f_int1,3) = 0
15821AND f_int1 BETWEEN @max_row_div2 AND @max_row
15822ON DUPLICATE KEY
15823UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
15824f_int2 = 2 * @max_row + source_tab.f_int1,
15825f_charbig = 'was updated';
15826
15827# check unique-1-a success: 	1
15828
15829# check unique-1-b success: 	1
15830DELETE FROM t1 WHERE f_charbig = 'was inserted';
15831UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15832f_int2 = CAST(f_char1 AS SIGNED INT),
15833f_charbig = CONCAT('===',f_char1,'===')
15834WHERE f_charbig = 'was updated';
15835REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15836SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
15837   FROM t0_template source_tab
15838WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
15839
15840# check replace success: 	1
15841DELETE FROM t1
15842WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
15843DELETE FROM t1
15844WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
15845f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
15846UPDATE t1 SET f_int2 = f_int1,
15847f_char1 = CAST(f_int1 AS CHAR),
15848f_char2 = CAST(f_int1 AS CHAR),
15849f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
15850WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
15851SET AUTOCOMMIT= 0;
15852INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15853SELECT f_int1, f_int1, '', '', 'was inserted'
15854FROM t0_template source_tab
15855WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
15856
15857# check transactions-1 success: 	1
15858COMMIT WORK;
15859
15860# check transactions-2 success: 	1
15861ROLLBACK WORK;
15862
15863# check transactions-3 success: 	1
15864DELETE FROM t1 WHERE f_charbig = 'was inserted';
15865COMMIT WORK;
15866ROLLBACK WORK;
15867
15868# check transactions-4 success: 	1
15869INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15870SELECT f_int1, f_int1, '', '', 'was inserted'
15871FROM t0_template source_tab
15872WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
15873
15874# check transactions-5 success: 	1
15875ROLLBACK WORK;
15876Warnings:
15877Warning	1196	Some non-transactional changed tables couldn't be rolled back
15878
15879# check transactions-6 success: 	1
15880# INFO: Storage engine used for t1 seems to be not transactional.
15881COMMIT;
15882
15883# check transactions-7 success: 	1
15884DELETE FROM t1 WHERE f_charbig = 'was inserted';
15885COMMIT WORK;
15886SET @@session.sql_mode = 'traditional';
15887Warnings:
15888Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
15889SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
15890INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15891SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
15892'', '', 'was inserted' FROM t0_template
15893WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
15894ERROR 22012: Division by 0
15895COMMIT;
15896
15897# check transactions-8 success: 	1
15898# INFO: Storage engine used for t1 seems to be unable to revert
15899#       changes made by the failing statement.
15900SET @@session.sql_mode = '';
15901Warnings:
15902Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
15903SET AUTOCOMMIT= 1;
15904DELETE FROM t1 WHERE f_charbig = 'was inserted';
15905COMMIT WORK;
15906UPDATE t1 SET f_charbig = REPEAT('b', 1000);
15907
15908# check special-1 success: 	1
15909UPDATE t1 SET f_charbig = '';
15910
15911# check special-2 success: 	1
15912UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
15913INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15914SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
15915WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15916INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15917SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15918'just inserted' FROM t0_template
15919WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15920CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
15921BEGIN
15922UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15923f_charbig = 'updated by trigger'
15924      WHERE f_int1 = new.f_int1;
15925END|
15926INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15927SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
15928WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15929
15930# check trigger-1 success: 	1
15931DROP TRIGGER trg_1;
15932UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15933f_int2 = CAST(f_char1 AS SIGNED INT),
15934f_charbig = 'just inserted'
15935   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15936DELETE FROM t0_aux
15937WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15938INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15939SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15940'just inserted' FROM t0_template
15941WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15942CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
15943BEGIN
15944UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15945f_charbig = 'updated by trigger'
15946      WHERE f_int1 = new.f_int1;
15947END|
15948INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15949SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
15950WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15951
15952# check trigger-2 success: 	1
15953DROP TRIGGER trg_1;
15954UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15955f_int2 = CAST(f_char1 AS SIGNED INT),
15956f_charbig = 'just inserted'
15957   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15958DELETE FROM t0_aux
15959WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15960INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15961SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15962'just inserted' FROM t0_template
15963WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15964CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
15965BEGIN
15966UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15967f_charbig = 'updated by trigger'
15968      WHERE f_int1 = new.f_int1;
15969END|
15970UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
15971WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15972
15973# check trigger-3 success: 	1
15974DROP TRIGGER trg_1;
15975UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15976f_int2 = CAST(f_char1 AS SIGNED INT),
15977f_charbig = 'just inserted'
15978   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15979DELETE FROM t0_aux
15980WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15981INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15982SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15983'just inserted' FROM t0_template
15984WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15985CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
15986BEGIN
15987UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15988f_charbig = 'updated by trigger'
15989      WHERE f_int1 = - old.f_int1;
15990END|
15991UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
15992WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15993
15994# check trigger-4 success: 	1
15995DROP TRIGGER trg_1;
15996UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15997f_int2 = CAST(f_char1 AS SIGNED INT),
15998f_charbig = 'just inserted'
15999   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16000DELETE FROM t0_aux
16001WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16002INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16003SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16004'just inserted' FROM t0_template
16005WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16006CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
16007BEGIN
16008UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16009f_charbig = 'updated by trigger'
16010      WHERE f_int1 = new.f_int1;
16011END|
16012UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
16013WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16014
16015# check trigger-5 success: 	1
16016DROP TRIGGER trg_1;
16017UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16018f_int2 = CAST(f_char1 AS SIGNED INT),
16019f_charbig = 'just inserted'
16020   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16021DELETE FROM t0_aux
16022WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16023INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16024SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16025'just inserted' FROM t0_template
16026WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16027CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
16028BEGIN
16029UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16030f_charbig = 'updated by trigger'
16031      WHERE f_int1 = - old.f_int1;
16032END|
16033UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
16034WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16035
16036# check trigger-6 success: 	1
16037DROP TRIGGER trg_1;
16038UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16039f_int2 = CAST(f_char1 AS SIGNED INT),
16040f_charbig = 'just inserted'
16041   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16042DELETE FROM t0_aux
16043WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16044INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16045SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16046'just inserted' FROM t0_template
16047WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16048CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
16049BEGIN
16050UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16051f_charbig = 'updated by trigger'
16052      WHERE f_int1 = - old.f_int1;
16053END|
16054DELETE FROM t0_aux
16055WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16056
16057# check trigger-7 success: 	1
16058DROP TRIGGER trg_1;
16059UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16060f_int2 = CAST(f_char1 AS SIGNED INT),
16061f_charbig = 'just inserted'
16062   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16063DELETE FROM t0_aux
16064WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16065INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16066SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16067'just inserted' FROM t0_template
16068WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16069CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
16070BEGIN
16071UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16072f_charbig = 'updated by trigger'
16073      WHERE f_int1 = - old.f_int1;
16074END|
16075DELETE FROM t0_aux
16076WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16077
16078# check trigger-8 success: 	1
16079DROP TRIGGER trg_1;
16080UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16081f_int2 = CAST(f_char1 AS SIGNED INT),
16082f_charbig = 'just inserted'
16083   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16084DELETE FROM t0_aux
16085WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16086DELETE FROM t1
16087WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16088CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
16089BEGIN
16090SET new.f_int1 = old.f_int1 + @max_row,
16091new.f_int2 = old.f_int2 - @max_row,
16092new.f_charbig = '####updated per update trigger####';
16093END|
16094UPDATE t1
16095SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
16096f_charbig = '####updated per update statement itself####';
16097Warnings:
16098Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
16099
16100# check trigger-9 success: 	1
16101DROP TRIGGER trg_2;
16102UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16103f_int2 = CAST(f_char1 AS SIGNED INT),
16104f_charbig = CONCAT('===',f_char1,'===');
16105Warnings:
16106Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
16107CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
16108BEGIN
16109SET new.f_int1 = new.f_int1 + @max_row,
16110new.f_int2 = new.f_int2 - @max_row,
16111new.f_charbig = '####updated per update trigger####';
16112END|
16113UPDATE t1
16114SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
16115f_charbig = '####updated per update statement itself####';
16116Warnings:
16117Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
16118
16119# check trigger-10 success: 	1
16120DROP TRIGGER trg_2;
16121UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16122f_int2 = CAST(f_char1 AS SIGNED INT),
16123f_charbig = CONCAT('===',f_char1,'===');
16124Warnings:
16125Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
16126CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
16127BEGIN
16128SET new.f_int1 = @my_max1 + @counter,
16129new.f_int2 = @my_min2 - @counter,
16130new.f_charbig = '####updated per insert trigger####';
16131SET @counter = @counter + 1;
16132END|
16133SET @counter = 1;
16134SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
16135Warnings:
16136Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
16137INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16138SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
16139CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
16140WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
16141ORDER BY f_int1;
16142DROP TRIGGER trg_3;
16143
16144# check trigger-11 success: 	1
16145Warnings:
16146Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
16147DELETE FROM t1
16148WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
16149AND f_int2 <> CAST(f_char1 AS SIGNED INT)
16150AND f_charbig = '####updated per insert trigger####';
16151CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
16152BEGIN
16153SET new.f_int1 = @my_max1 + @counter,
16154new.f_int2 = @my_min2 - @counter,
16155new.f_charbig = '####updated per insert trigger####';
16156SET @counter = @counter + 1;
16157END|
16158SET @counter = 1;
16159SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
16160Warnings:
16161Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
16162INSERT INTO t1 (f_char1, f_char2, f_charbig)
16163SELECT CAST(f_int1 AS CHAR),
16164CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
16165WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
16166ORDER BY f_int1;
16167DROP TRIGGER trg_3;
16168
16169# check trigger-12 success: 	1
16170Warnings:
16171Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
16172DELETE FROM t1
16173WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
16174AND f_int2 <> CAST(f_char1 AS SIGNED INT)
16175AND f_charbig = '####updated per insert trigger####';
16176ANALYZE  TABLE t1;
16177Table	Op	Msg_type	Msg_text
16178test.t1	analyze	status	OK
16179test.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.
16180CHECK    TABLE t1 EXTENDED;
16181Table	Op	Msg_type	Msg_text
16182test.t1	check	status	OK
16183test.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.
16184CHECKSUM TABLE t1 EXTENDED;
16185Table	Checksum
16186test.t1	<some_value>
16187OPTIMIZE TABLE t1;
16188Table	Op	Msg_type	Msg_text
16189test.t1	optimize	status	OK
16190test.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.
16191# check layout success:    1
16192REPAIR   TABLE t1 EXTENDED;
16193Table	Op	Msg_type	Msg_text
16194test.t1	repair	status	OK
16195test.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.
16196# check layout success:    1
16197TRUNCATE t1;
16198Warnings:
16199Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
16200
16201# check TRUNCATE success: 	1
16202# check layout success:    1
16203# End usability test (inc/partition_check.inc)
16204DROP TABLE t1;
16205CREATE TABLE t1 (
16206f_int1 INTEGER,
16207f_int2 INTEGER,
16208f_char1 CHAR(20),
16209f_char2 CHAR(20),
16210f_charbig VARCHAR(1000)
16211, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
16212)
16213PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int2)
16214(PARTITION part1 VALUES LESS THAN (0)
16215(SUBPARTITION subpart11 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
16216SUBPARTITION subpart12 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'),
16217PARTITION part2 VALUES LESS THAN (5)
16218(SUBPARTITION subpart21 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
16219SUBPARTITION subpart22 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'),
16220PARTITION part3 VALUES LESS THAN (10)
16221(SUBPARTITION subpart31 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
16222SUBPARTITION subpart32 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'),
16223PARTITION part4 VALUES LESS THAN (2147483646)
16224(SUBPARTITION subpart41 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
16225SUBPARTITION subpart42 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'));
16226Warnings:
16227Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
16228INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
16229SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
16230Warnings:
16231Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
16232# Start usability test (inc/partition_check.inc)
16233create_command
16234SHOW CREATE TABLE t1;
16235Table	Create Table
16236t1	CREATE TABLE `t1` (
16237  `f_int1` int(11) DEFAULT NULL,
16238  `f_int2` int(11) DEFAULT NULL,
16239  `f_char1` char(20) DEFAULT NULL,
16240  `f_char2` char(20) DEFAULT NULL,
16241  `f_charbig` varchar(1000) DEFAULT NULL,
16242  UNIQUE KEY `uidx1` (`f_int1`,`f_int2`),
16243  UNIQUE KEY `uidx2` (`f_int2`,`f_int1`)
16244) ENGINE=MyISAM DEFAULT CHARSET=latin1
16245/*!50100 PARTITION BY RANGE (f_int1)
16246SUBPARTITION BY KEY (f_int2)
16247(PARTITION part1 VALUES LESS THAN (0)
16248 (SUBPARTITION subpart11 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
16249  SUBPARTITION subpart12 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM),
16250 PARTITION part2 VALUES LESS THAN (5)
16251 (SUBPARTITION subpart21 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
16252  SUBPARTITION subpart22 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM),
16253 PARTITION part3 VALUES LESS THAN (10)
16254 (SUBPARTITION subpart31 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
16255  SUBPARTITION subpart32 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM),
16256 PARTITION part4 VALUES LESS THAN (2147483646)
16257 (SUBPARTITION subpart41 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
16258  SUBPARTITION subpart42 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM)) */
16259
16260unified filelist
16261t1#P#part1#SP#subpart11.MYD
16262t1#P#part1#SP#subpart11.MYI
16263t1#P#part1#SP#subpart12.MYD
16264t1#P#part1#SP#subpart12.MYI
16265t1#P#part2#SP#subpart21.MYD
16266t1#P#part2#SP#subpart21.MYI
16267t1#P#part2#SP#subpart22.MYD
16268t1#P#part2#SP#subpart22.MYI
16269t1#P#part3#SP#subpart31.MYD
16270t1#P#part3#SP#subpart31.MYI
16271t1#P#part3#SP#subpart32.MYD
16272t1#P#part3#SP#subpart32.MYI
16273t1#P#part4#SP#subpart41.MYD
16274t1#P#part4#SP#subpart41.MYI
16275t1#P#part4#SP#subpart42.MYD
16276t1#P#part4#SP#subpart42.MYI
16277t1.frm
16278t1.par
16279t1#P#part1#SP#subpart11.MYD
16280t1#P#part1#SP#subpart12.MYD
16281t1#P#part2#SP#subpart21.MYD
16282t1#P#part2#SP#subpart22.MYD
16283t1#P#part3#SP#subpart31.MYD
16284t1#P#part3#SP#subpart32.MYD
16285t1#P#part4#SP#subpart41.MYD
16286t1#P#part4#SP#subpart42.MYD
16287t1#P#part1#SP#subpart11.MYI
16288t1#P#part1#SP#subpart12.MYI
16289t1#P#part2#SP#subpart21.MYI
16290t1#P#part2#SP#subpart22.MYI
16291t1#P#part3#SP#subpart31.MYI
16292t1#P#part3#SP#subpart32.MYI
16293t1#P#part4#SP#subpart41.MYI
16294t1#P#part4#SP#subpart42.MYI
16295
16296# check prerequisites-1 success:    1
16297# check COUNT(*) success:    1
16298# check MIN/MAX(f_int1) success:    1
16299# check MIN/MAX(f_int2) success:    1
16300INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16301SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
16302CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
16303WHERE f_int1 IN (2,3);
16304ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
16305# check prerequisites-3 success:    1
16306# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
16307INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16308SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
16309CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
16310WHERE f_int1 IN (2,3);
16311DELETE FROM t1 WHERE f_charbig = 'delete me';
16312INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16313SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
16314CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
16315WHERE f_int1 IN (2,3);
16316DELETE FROM t1 WHERE f_charbig = 'delete me';
16317# check read via f_int1 success: 1
16318# check read via f_int2 success: 1
16319
16320# check multiple-1 success: 	1
16321DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
16322
16323# check multiple-2 success: 	1
16324INSERT INTO t1 SELECT * FROM t0_template
16325WHERE MOD(f_int1,3) = 0;
16326
16327# check multiple-3 success: 	1
16328UPDATE t1 SET f_int1 = f_int1 + @max_row
16329WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
16330AND @max_row_div2 + @max_row_div4;
16331
16332# check multiple-4 success: 	1
16333DELETE FROM t1
16334WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
16335AND @max_row_div2 + @max_row_div4 + @max_row;
16336
16337# check multiple-5 success: 	1
16338SELECT COUNT(*) INTO @try_count FROM t0_template
16339WHERE MOD(f_int1,3) = 0
16340AND f_int1 BETWEEN @max_row_div2 AND @max_row;
16341SELECT COUNT(*) INTO @clash_count
16342FROM t1 INNER JOIN t0_template USING(f_int1)
16343WHERE MOD(f_int1,3) = 0
16344AND f_int1 BETWEEN @max_row_div2 AND @max_row;
16345SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
16346INSERT INTO t1
16347SET f_int1 = @cur_value , f_int2 = @cur_value,
16348f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
16349f_charbig = '#SINGLE#';
16350
16351# check single-1 success: 	1
16352SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
16353INSERT INTO t1
16354SET f_int1 = @cur_value , f_int2 = @cur_value,
16355f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
16356f_charbig = '#SINGLE#';
16357
16358# check single-2 success: 	1
16359SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
16360SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
16361UPDATE t1 SET f_int1 = @cur_value2
16362WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
16363
16364# check single-3 success: 	1
16365SET @cur_value1= -1;
16366SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
16367UPDATE t1 SET f_int1 = @cur_value1
16368WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
16369
16370# check single-4 success: 	1
16371SELECT MAX(f_int1) INTO @cur_value FROM t1;
16372DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
16373
16374# check single-5 success: 	1
16375DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
16376
16377# check single-6 success: 	1
16378INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
16379ERROR HY000: Table has no partition for value 2147483647
16380DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
16381INSERT t1 SET f_int1 = 0 , f_int2 = 0,
16382f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
16383f_charbig = '#NULL#';
16384INSERT INTO t1
16385SET f_int1 = NULL , f_int2 = -@max_row,
16386f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
16387f_charbig = '#NULL#';
16388# check null success:    1
16389
16390# check null-1 success: 	1
16391UPDATE t1 SET f_int1 = -@max_row
16392WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
16393AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
16394
16395# check null-2 success: 	1
16396UPDATE t1 SET f_int1 = NULL
16397WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
16398AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
16399
16400# check null-3 success: 	1
16401DELETE FROM t1
16402WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
16403AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
16404
16405# check null-4 success: 	1
16406DELETE FROM t1
16407WHERE f_int1 = 0 AND f_int2 = 0
16408AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
16409AND f_charbig = '#NULL#';
16410INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16411SELECT f_int1, f_int1, '', '', 'was inserted'
16412   FROM t0_template source_tab
16413WHERE MOD(f_int1,3) = 0
16414AND f_int1 BETWEEN @max_row_div2 AND @max_row
16415ON DUPLICATE KEY
16416UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
16417f_int2 = 2 * @max_row + source_tab.f_int1,
16418f_charbig = 'was updated';
16419
16420# check unique-1-a success: 	1
16421
16422# check unique-1-b success: 	1
16423DELETE FROM t1 WHERE f_charbig = 'was inserted';
16424UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16425f_int2 = CAST(f_char1 AS SIGNED INT),
16426f_charbig = CONCAT('===',f_char1,'===')
16427WHERE f_charbig = 'was updated';
16428REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16429SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
16430   FROM t0_template source_tab
16431WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
16432
16433# check replace success: 	1
16434DELETE FROM t1
16435WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
16436DELETE FROM t1
16437WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
16438f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
16439UPDATE t1 SET f_int2 = f_int1,
16440f_char1 = CAST(f_int1 AS CHAR),
16441f_char2 = CAST(f_int1 AS CHAR),
16442f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
16443WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
16444SET AUTOCOMMIT= 0;
16445INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16446SELECT f_int1, f_int1, '', '', 'was inserted'
16447FROM t0_template source_tab
16448WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
16449
16450# check transactions-1 success: 	1
16451COMMIT WORK;
16452
16453# check transactions-2 success: 	1
16454ROLLBACK WORK;
16455
16456# check transactions-3 success: 	1
16457DELETE FROM t1 WHERE f_charbig = 'was inserted';
16458COMMIT WORK;
16459ROLLBACK WORK;
16460
16461# check transactions-4 success: 	1
16462INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16463SELECT f_int1, f_int1, '', '', 'was inserted'
16464FROM t0_template source_tab
16465WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
16466
16467# check transactions-5 success: 	1
16468ROLLBACK WORK;
16469Warnings:
16470Warning	1196	Some non-transactional changed tables couldn't be rolled back
16471
16472# check transactions-6 success: 	1
16473# INFO: Storage engine used for t1 seems to be not transactional.
16474COMMIT;
16475
16476# check transactions-7 success: 	1
16477DELETE FROM t1 WHERE f_charbig = 'was inserted';
16478COMMIT WORK;
16479SET @@session.sql_mode = 'traditional';
16480Warnings:
16481Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
16482SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
16483INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16484SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
16485'', '', 'was inserted' FROM t0_template
16486WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
16487ERROR 22012: Division by 0
16488COMMIT;
16489
16490# check transactions-8 success: 	1
16491# INFO: Storage engine used for t1 seems to be unable to revert
16492#       changes made by the failing statement.
16493SET @@session.sql_mode = '';
16494Warnings:
16495Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
16496SET AUTOCOMMIT= 1;
16497DELETE FROM t1 WHERE f_charbig = 'was inserted';
16498COMMIT WORK;
16499UPDATE t1 SET f_charbig = REPEAT('b', 1000);
16500
16501# check special-1 success: 	1
16502UPDATE t1 SET f_charbig = '';
16503
16504# check special-2 success: 	1
16505UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
16506INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
16507SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
16508WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16509INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16510SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16511'just inserted' FROM t0_template
16512WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16513CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
16514BEGIN
16515UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16516f_charbig = 'updated by trigger'
16517      WHERE f_int1 = new.f_int1;
16518END|
16519INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16520SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
16521WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16522
16523# check trigger-1 success: 	1
16524DROP TRIGGER trg_1;
16525UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16526f_int2 = CAST(f_char1 AS SIGNED INT),
16527f_charbig = 'just inserted'
16528   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16529DELETE FROM t0_aux
16530WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16531INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16532SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16533'just inserted' FROM t0_template
16534WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16535CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
16536BEGIN
16537UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16538f_charbig = 'updated by trigger'
16539      WHERE f_int1 = new.f_int1;
16540END|
16541INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16542SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
16543WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16544
16545# check trigger-2 success: 	1
16546DROP TRIGGER trg_1;
16547UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16548f_int2 = CAST(f_char1 AS SIGNED INT),
16549f_charbig = 'just inserted'
16550   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16551DELETE FROM t0_aux
16552WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16553INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16554SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16555'just inserted' FROM t0_template
16556WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16557CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
16558BEGIN
16559UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16560f_charbig = 'updated by trigger'
16561      WHERE f_int1 = new.f_int1;
16562END|
16563UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
16564WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16565
16566# check trigger-3 success: 	1
16567DROP TRIGGER trg_1;
16568UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16569f_int2 = CAST(f_char1 AS SIGNED INT),
16570f_charbig = 'just inserted'
16571   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16572DELETE FROM t0_aux
16573WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16574INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16575SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16576'just inserted' FROM t0_template
16577WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16578CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
16579BEGIN
16580UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16581f_charbig = 'updated by trigger'
16582      WHERE f_int1 = - old.f_int1;
16583END|
16584UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
16585WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16586
16587# check trigger-4 success: 	1
16588DROP TRIGGER trg_1;
16589UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16590f_int2 = CAST(f_char1 AS SIGNED INT),
16591f_charbig = 'just inserted'
16592   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16593DELETE FROM t0_aux
16594WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16595INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16596SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16597'just inserted' FROM t0_template
16598WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16599CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
16600BEGIN
16601UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16602f_charbig = 'updated by trigger'
16603      WHERE f_int1 = new.f_int1;
16604END|
16605UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
16606WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16607
16608# check trigger-5 success: 	1
16609DROP TRIGGER trg_1;
16610UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16611f_int2 = CAST(f_char1 AS SIGNED INT),
16612f_charbig = 'just inserted'
16613   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16614DELETE FROM t0_aux
16615WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16616INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16617SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16618'just inserted' FROM t0_template
16619WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16620CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
16621BEGIN
16622UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16623f_charbig = 'updated by trigger'
16624      WHERE f_int1 = - old.f_int1;
16625END|
16626UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
16627WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16628
16629# check trigger-6 success: 	1
16630DROP TRIGGER trg_1;
16631UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16632f_int2 = CAST(f_char1 AS SIGNED INT),
16633f_charbig = 'just inserted'
16634   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16635DELETE FROM t0_aux
16636WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16637INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16638SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16639'just inserted' FROM t0_template
16640WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16641CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
16642BEGIN
16643UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16644f_charbig = 'updated by trigger'
16645      WHERE f_int1 = - old.f_int1;
16646END|
16647DELETE FROM t0_aux
16648WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16649
16650# check trigger-7 success: 	1
16651DROP TRIGGER trg_1;
16652UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16653f_int2 = CAST(f_char1 AS SIGNED INT),
16654f_charbig = 'just inserted'
16655   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16656DELETE FROM t0_aux
16657WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16658INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16659SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16660'just inserted' FROM t0_template
16661WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16662CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
16663BEGIN
16664UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16665f_charbig = 'updated by trigger'
16666      WHERE f_int1 = - old.f_int1;
16667END|
16668DELETE FROM t0_aux
16669WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16670
16671# check trigger-8 success: 	1
16672DROP TRIGGER trg_1;
16673UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16674f_int2 = CAST(f_char1 AS SIGNED INT),
16675f_charbig = 'just inserted'
16676   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16677DELETE FROM t0_aux
16678WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16679DELETE FROM t1
16680WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16681CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
16682BEGIN
16683SET new.f_int1 = old.f_int1 + @max_row,
16684new.f_int2 = old.f_int2 - @max_row,
16685new.f_charbig = '####updated per update trigger####';
16686END|
16687UPDATE t1
16688SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
16689f_charbig = '####updated per update statement itself####';
16690Warnings:
16691Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
16692
16693# check trigger-9 success: 	1
16694DROP TRIGGER trg_2;
16695UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16696f_int2 = CAST(f_char1 AS SIGNED INT),
16697f_charbig = CONCAT('===',f_char1,'===');
16698Warnings:
16699Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
16700CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
16701BEGIN
16702SET new.f_int1 = new.f_int1 + @max_row,
16703new.f_int2 = new.f_int2 - @max_row,
16704new.f_charbig = '####updated per update trigger####';
16705END|
16706UPDATE t1
16707SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
16708f_charbig = '####updated per update statement itself####';
16709Warnings:
16710Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
16711
16712# check trigger-10 success: 	1
16713DROP TRIGGER trg_2;
16714UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16715f_int2 = CAST(f_char1 AS SIGNED INT),
16716f_charbig = CONCAT('===',f_char1,'===');
16717Warnings:
16718Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
16719CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
16720BEGIN
16721SET new.f_int1 = @my_max1 + @counter,
16722new.f_int2 = @my_min2 - @counter,
16723new.f_charbig = '####updated per insert trigger####';
16724SET @counter = @counter + 1;
16725END|
16726SET @counter = 1;
16727SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
16728Warnings:
16729Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
16730INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16731SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
16732CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
16733WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
16734ORDER BY f_int1;
16735DROP TRIGGER trg_3;
16736
16737# check trigger-11 success: 	1
16738Warnings:
16739Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
16740DELETE FROM t1
16741WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
16742AND f_int2 <> CAST(f_char1 AS SIGNED INT)
16743AND f_charbig = '####updated per insert trigger####';
16744CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
16745BEGIN
16746SET new.f_int1 = @my_max1 + @counter,
16747new.f_int2 = @my_min2 - @counter,
16748new.f_charbig = '####updated per insert trigger####';
16749SET @counter = @counter + 1;
16750END|
16751SET @counter = 1;
16752SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
16753Warnings:
16754Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
16755INSERT INTO t1 (f_char1, f_char2, f_charbig)
16756SELECT CAST(f_int1 AS CHAR),
16757CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
16758WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
16759ORDER BY f_int1;
16760DROP TRIGGER trg_3;
16761
16762# check trigger-12 success: 	1
16763Warnings:
16764Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
16765DELETE FROM t1
16766WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
16767AND f_int2 <> CAST(f_char1 AS SIGNED INT)
16768AND f_charbig = '####updated per insert trigger####';
16769ANALYZE  TABLE t1;
16770Table	Op	Msg_type	Msg_text
16771test.t1	analyze	status	OK
16772test.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.
16773CHECK    TABLE t1 EXTENDED;
16774Table	Op	Msg_type	Msg_text
16775test.t1	check	status	OK
16776test.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.
16777CHECKSUM TABLE t1 EXTENDED;
16778Table	Checksum
16779test.t1	<some_value>
16780OPTIMIZE TABLE t1;
16781Table	Op	Msg_type	Msg_text
16782test.t1	optimize	status	OK
16783test.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.
16784# check layout success:    1
16785REPAIR   TABLE t1 EXTENDED;
16786Table	Op	Msg_type	Msg_text
16787test.t1	repair	status	OK
16788test.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.
16789# check layout success:    1
16790TRUNCATE t1;
16791Warnings:
16792Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
16793
16794# check TRUNCATE success: 	1
16795# check layout success:    1
16796# End usability test (inc/partition_check.inc)
16797DROP TABLE t1;
16798CREATE TABLE t1 (
16799f_int1 INTEGER,
16800f_int2 INTEGER,
16801f_char1 CHAR(20),
16802f_char2 CHAR(20),
16803f_charbig VARCHAR(1000)
16804, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
16805)
16806PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int2 + 1)
16807(PARTITION part1 VALUES IN (0)
16808DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
16809INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'
16810(SUBPARTITION sp11
16811DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
16812INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
16813SUBPARTITION sp12
16814DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
16815INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'),
16816PARTITION part2 VALUES IN (1)
16817DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
16818INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'
16819(SUBPARTITION sp21
16820DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
16821INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
16822SUBPARTITION sp22
16823DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
16824INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'),
16825PARTITION part3 VALUES IN (2)
16826DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
16827INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'
16828(SUBPARTITION sp31,
16829SUBPARTITION sp32),
16830PARTITION part4 VALUES IN (NULL)
16831DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
16832INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'
16833(SUBPARTITION sp41
16834DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
16835INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
16836SUBPARTITION sp42
16837DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
16838INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'));
16839Warnings:
16840Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
16841INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
16842SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
16843Warnings:
16844Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
16845# Start usability test (inc/partition_check.inc)
16846create_command
16847SHOW CREATE TABLE t1;
16848Table	Create Table
16849t1	CREATE TABLE `t1` (
16850  `f_int1` int(11) DEFAULT NULL,
16851  `f_int2` int(11) DEFAULT NULL,
16852  `f_char1` char(20) DEFAULT NULL,
16853  `f_char2` char(20) DEFAULT NULL,
16854  `f_charbig` varchar(1000) DEFAULT NULL,
16855  UNIQUE KEY `uidx1` (`f_int1`,`f_int2`),
16856  UNIQUE KEY `uidx2` (`f_int2`,`f_int1`)
16857) ENGINE=MyISAM DEFAULT CHARSET=latin1
16858/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
16859SUBPARTITION BY HASH (f_int2 + 1)
16860(PARTITION part1 VALUES IN (0)
16861 (SUBPARTITION sp11 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
16862  SUBPARTITION sp12 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM),
16863 PARTITION part2 VALUES IN (1)
16864 (SUBPARTITION sp21 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
16865  SUBPARTITION sp22 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM),
16866 PARTITION part3 VALUES IN (2)
16867 (SUBPARTITION sp31 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
16868  SUBPARTITION sp32 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM),
16869 PARTITION part4 VALUES IN (NULL)
16870 (SUBPARTITION sp41 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
16871  SUBPARTITION sp42 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM)) */
16872
16873unified filelist
16874t1#P#part1#SP#sp11.MYD
16875t1#P#part1#SP#sp11.MYI
16876t1#P#part1#SP#sp12.MYD
16877t1#P#part1#SP#sp12.MYI
16878t1#P#part2#SP#sp21.MYD
16879t1#P#part2#SP#sp21.MYI
16880t1#P#part2#SP#sp22.MYD
16881t1#P#part2#SP#sp22.MYI
16882t1#P#part3#SP#sp31.MYD
16883t1#P#part3#SP#sp31.MYI
16884t1#P#part3#SP#sp32.MYD
16885t1#P#part3#SP#sp32.MYI
16886t1#P#part4#SP#sp41.MYD
16887t1#P#part4#SP#sp41.MYI
16888t1#P#part4#SP#sp42.MYD
16889t1#P#part4#SP#sp42.MYI
16890t1.frm
16891t1.par
16892t1#P#part1#SP#sp11.MYD
16893t1#P#part1#SP#sp12.MYD
16894t1#P#part2#SP#sp21.MYD
16895t1#P#part2#SP#sp22.MYD
16896t1#P#part3#SP#sp31.MYD
16897t1#P#part3#SP#sp32.MYD
16898t1#P#part4#SP#sp41.MYD
16899t1#P#part4#SP#sp42.MYD
16900t1#P#part1#SP#sp11.MYI
16901t1#P#part1#SP#sp12.MYI
16902t1#P#part2#SP#sp21.MYI
16903t1#P#part2#SP#sp22.MYI
16904t1#P#part3#SP#sp31.MYI
16905t1#P#part3#SP#sp32.MYI
16906t1#P#part4#SP#sp41.MYI
16907t1#P#part4#SP#sp42.MYI
16908
16909# check prerequisites-1 success:    1
16910# check COUNT(*) success:    1
16911# check MIN/MAX(f_int1) success:    1
16912# check MIN/MAX(f_int2) success:    1
16913INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16914SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
16915CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
16916WHERE f_int1 IN (2,3);
16917ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
16918# check prerequisites-3 success:    1
16919# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
16920INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16921SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
16922CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
16923WHERE f_int1 IN (2,3);
16924DELETE FROM t1 WHERE f_charbig = 'delete me';
16925INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16926SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
16927CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
16928WHERE f_int1 IN (2,3);
16929DELETE FROM t1 WHERE f_charbig = 'delete me';
16930# check read via f_int1 success: 1
16931# check read via f_int2 success: 1
16932
16933# check multiple-1 success: 	1
16934DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
16935
16936# check multiple-2 success: 	1
16937INSERT INTO t1 SELECT * FROM t0_template
16938WHERE MOD(f_int1,3) = 0;
16939
16940# check multiple-3 success: 	1
16941UPDATE t1 SET f_int1 = f_int1 + @max_row
16942WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
16943AND @max_row_div2 + @max_row_div4;
16944
16945# check multiple-4 success: 	1
16946DELETE FROM t1
16947WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
16948AND @max_row_div2 + @max_row_div4 + @max_row;
16949
16950# check multiple-5 success: 	1
16951SELECT COUNT(*) INTO @try_count FROM t0_template
16952WHERE MOD(f_int1,3) = 0
16953AND f_int1 BETWEEN @max_row_div2 AND @max_row;
16954SELECT COUNT(*) INTO @clash_count
16955FROM t1 INNER JOIN t0_template USING(f_int1)
16956WHERE MOD(f_int1,3) = 0
16957AND f_int1 BETWEEN @max_row_div2 AND @max_row;
16958SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
16959INSERT INTO t1
16960SET f_int1 = @cur_value , f_int2 = @cur_value,
16961f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
16962f_charbig = '#SINGLE#';
16963
16964# check single-1 success: 	1
16965SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
16966INSERT INTO t1
16967SET f_int1 = @cur_value , f_int2 = @cur_value,
16968f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
16969f_charbig = '#SINGLE#';
16970
16971# check single-2 success: 	1
16972SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
16973SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
16974UPDATE t1 SET f_int1 = @cur_value2
16975WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
16976
16977# check single-3 success: 	1
16978SET @cur_value1= -1;
16979SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
16980UPDATE t1 SET f_int1 = @cur_value1
16981WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
16982
16983# check single-4 success: 	1
16984SELECT MAX(f_int1) INTO @cur_value FROM t1;
16985DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
16986
16987# check single-5 success: 	1
16988DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
16989
16990# check single-6 success: 	1
16991INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
16992
16993# check single-7 success: 	1
16994DELETE FROM t1 WHERE f_charbig = '#2147483647##';
16995DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
16996INSERT t1 SET f_int1 = 0 , f_int2 = 0,
16997f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
16998f_charbig = '#NULL#';
16999INSERT INTO t1
17000SET f_int1 = NULL , f_int2 = -@max_row,
17001f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
17002f_charbig = '#NULL#';
17003# check null success:    1
17004
17005# check null-1 success: 	1
17006UPDATE t1 SET f_int1 = -@max_row
17007WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
17008AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
17009
17010# check null-2 success: 	1
17011UPDATE t1 SET f_int1 = NULL
17012WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
17013AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
17014
17015# check null-3 success: 	1
17016DELETE FROM t1
17017WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
17018AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
17019
17020# check null-4 success: 	1
17021DELETE FROM t1
17022WHERE f_int1 = 0 AND f_int2 = 0
17023AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
17024AND f_charbig = '#NULL#';
17025INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17026SELECT f_int1, f_int1, '', '', 'was inserted'
17027   FROM t0_template source_tab
17028WHERE MOD(f_int1,3) = 0
17029AND f_int1 BETWEEN @max_row_div2 AND @max_row
17030ON DUPLICATE KEY
17031UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
17032f_int2 = 2 * @max_row + source_tab.f_int1,
17033f_charbig = 'was updated';
17034
17035# check unique-1-a success: 	1
17036
17037# check unique-1-b success: 	1
17038DELETE FROM t1 WHERE f_charbig = 'was inserted';
17039UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17040f_int2 = CAST(f_char1 AS SIGNED INT),
17041f_charbig = CONCAT('===',f_char1,'===')
17042WHERE f_charbig = 'was updated';
17043REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17044SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
17045   FROM t0_template source_tab
17046WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
17047
17048# check replace success: 	1
17049DELETE FROM t1
17050WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
17051DELETE FROM t1
17052WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
17053f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
17054UPDATE t1 SET f_int2 = f_int1,
17055f_char1 = CAST(f_int1 AS CHAR),
17056f_char2 = CAST(f_int1 AS CHAR),
17057f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
17058WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
17059SET AUTOCOMMIT= 0;
17060INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17061SELECT f_int1, f_int1, '', '', 'was inserted'
17062FROM t0_template source_tab
17063WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
17064
17065# check transactions-1 success: 	1
17066COMMIT WORK;
17067
17068# check transactions-2 success: 	1
17069ROLLBACK WORK;
17070
17071# check transactions-3 success: 	1
17072DELETE FROM t1 WHERE f_charbig = 'was inserted';
17073COMMIT WORK;
17074ROLLBACK WORK;
17075
17076# check transactions-4 success: 	1
17077INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17078SELECT f_int1, f_int1, '', '', 'was inserted'
17079FROM t0_template source_tab
17080WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
17081
17082# check transactions-5 success: 	1
17083ROLLBACK WORK;
17084Warnings:
17085Warning	1196	Some non-transactional changed tables couldn't be rolled back
17086
17087# check transactions-6 success: 	1
17088# INFO: Storage engine used for t1 seems to be not transactional.
17089COMMIT;
17090
17091# check transactions-7 success: 	1
17092DELETE FROM t1 WHERE f_charbig = 'was inserted';
17093COMMIT WORK;
17094SET @@session.sql_mode = 'traditional';
17095Warnings:
17096Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
17097SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
17098INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17099SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
17100'', '', 'was inserted' FROM t0_template
17101WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
17102ERROR 22012: Division by 0
17103COMMIT;
17104
17105# check transactions-8 success: 	1
17106# INFO: Storage engine used for t1 seems to be unable to revert
17107#       changes made by the failing statement.
17108SET @@session.sql_mode = '';
17109Warnings:
17110Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
17111SET AUTOCOMMIT= 1;
17112DELETE FROM t1 WHERE f_charbig = 'was inserted';
17113COMMIT WORK;
17114UPDATE t1 SET f_charbig = REPEAT('b', 1000);
17115
17116# check special-1 success: 	1
17117UPDATE t1 SET f_charbig = '';
17118
17119# check special-2 success: 	1
17120UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
17121INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
17122SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
17123WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17124INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17125SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17126'just inserted' FROM t0_template
17127WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17128CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
17129BEGIN
17130UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17131f_charbig = 'updated by trigger'
17132      WHERE f_int1 = new.f_int1;
17133END|
17134INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17135SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
17136WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17137
17138# check trigger-1 success: 	1
17139DROP TRIGGER trg_1;
17140UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17141f_int2 = CAST(f_char1 AS SIGNED INT),
17142f_charbig = 'just inserted'
17143   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17144DELETE FROM t0_aux
17145WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17146INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17147SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17148'just inserted' FROM t0_template
17149WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17150CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
17151BEGIN
17152UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17153f_charbig = 'updated by trigger'
17154      WHERE f_int1 = new.f_int1;
17155END|
17156INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17157SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
17158WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17159
17160# check trigger-2 success: 	1
17161DROP TRIGGER trg_1;
17162UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17163f_int2 = CAST(f_char1 AS SIGNED INT),
17164f_charbig = 'just inserted'
17165   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17166DELETE FROM t0_aux
17167WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17168INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17169SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17170'just inserted' FROM t0_template
17171WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17172CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
17173BEGIN
17174UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17175f_charbig = 'updated by trigger'
17176      WHERE f_int1 = new.f_int1;
17177END|
17178UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
17179WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17180
17181# check trigger-3 success: 	1
17182DROP TRIGGER trg_1;
17183UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17184f_int2 = CAST(f_char1 AS SIGNED INT),
17185f_charbig = 'just inserted'
17186   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17187DELETE FROM t0_aux
17188WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17189INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17190SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17191'just inserted' FROM t0_template
17192WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17193CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
17194BEGIN
17195UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17196f_charbig = 'updated by trigger'
17197      WHERE f_int1 = - old.f_int1;
17198END|
17199UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
17200WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17201
17202# check trigger-4 success: 	1
17203DROP TRIGGER trg_1;
17204UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17205f_int2 = CAST(f_char1 AS SIGNED INT),
17206f_charbig = 'just inserted'
17207   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17208DELETE FROM t0_aux
17209WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17210INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17211SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17212'just inserted' FROM t0_template
17213WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17214CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
17215BEGIN
17216UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17217f_charbig = 'updated by trigger'
17218      WHERE f_int1 = new.f_int1;
17219END|
17220UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
17221WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17222
17223# check trigger-5 success: 	1
17224DROP TRIGGER trg_1;
17225UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17226f_int2 = CAST(f_char1 AS SIGNED INT),
17227f_charbig = 'just inserted'
17228   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17229DELETE FROM t0_aux
17230WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17231INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17232SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17233'just inserted' FROM t0_template
17234WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17235CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
17236BEGIN
17237UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17238f_charbig = 'updated by trigger'
17239      WHERE f_int1 = - old.f_int1;
17240END|
17241UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
17242WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17243
17244# check trigger-6 success: 	1
17245DROP TRIGGER trg_1;
17246UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17247f_int2 = CAST(f_char1 AS SIGNED INT),
17248f_charbig = 'just inserted'
17249   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17250DELETE FROM t0_aux
17251WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17252INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17253SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17254'just inserted' FROM t0_template
17255WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17256CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
17257BEGIN
17258UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17259f_charbig = 'updated by trigger'
17260      WHERE f_int1 = - old.f_int1;
17261END|
17262DELETE FROM t0_aux
17263WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17264
17265# check trigger-7 success: 	1
17266DROP TRIGGER trg_1;
17267UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17268f_int2 = CAST(f_char1 AS SIGNED INT),
17269f_charbig = 'just inserted'
17270   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17271DELETE FROM t0_aux
17272WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17273INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17274SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17275'just inserted' FROM t0_template
17276WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17277CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
17278BEGIN
17279UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17280f_charbig = 'updated by trigger'
17281      WHERE f_int1 = - old.f_int1;
17282END|
17283DELETE FROM t0_aux
17284WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17285
17286# check trigger-8 success: 	1
17287DROP TRIGGER trg_1;
17288UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17289f_int2 = CAST(f_char1 AS SIGNED INT),
17290f_charbig = 'just inserted'
17291   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17292DELETE FROM t0_aux
17293WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17294DELETE FROM t1
17295WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17296CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
17297BEGIN
17298SET new.f_int1 = old.f_int1 + @max_row,
17299new.f_int2 = old.f_int2 - @max_row,
17300new.f_charbig = '####updated per update trigger####';
17301END|
17302UPDATE t1
17303SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
17304f_charbig = '####updated per update statement itself####';
17305Warnings:
17306Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
17307
17308# check trigger-9 success: 	1
17309DROP TRIGGER trg_2;
17310UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17311f_int2 = CAST(f_char1 AS SIGNED INT),
17312f_charbig = CONCAT('===',f_char1,'===');
17313Warnings:
17314Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
17315CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
17316BEGIN
17317SET new.f_int1 = new.f_int1 + @max_row,
17318new.f_int2 = new.f_int2 - @max_row,
17319new.f_charbig = '####updated per update trigger####';
17320END|
17321UPDATE t1
17322SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
17323f_charbig = '####updated per update statement itself####';
17324Warnings:
17325Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
17326
17327# check trigger-10 success: 	1
17328DROP TRIGGER trg_2;
17329UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17330f_int2 = CAST(f_char1 AS SIGNED INT),
17331f_charbig = CONCAT('===',f_char1,'===');
17332Warnings:
17333Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
17334CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
17335BEGIN
17336SET new.f_int1 = @my_max1 + @counter,
17337new.f_int2 = @my_min2 - @counter,
17338new.f_charbig = '####updated per insert trigger####';
17339SET @counter = @counter + 1;
17340END|
17341SET @counter = 1;
17342SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
17343Warnings:
17344Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
17345INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17346SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
17347CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
17348WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
17349ORDER BY f_int1;
17350DROP TRIGGER trg_3;
17351
17352# check trigger-11 success: 	1
17353Warnings:
17354Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
17355DELETE FROM t1
17356WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
17357AND f_int2 <> CAST(f_char1 AS SIGNED INT)
17358AND f_charbig = '####updated per insert trigger####';
17359CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
17360BEGIN
17361SET new.f_int1 = @my_max1 + @counter,
17362new.f_int2 = @my_min2 - @counter,
17363new.f_charbig = '####updated per insert trigger####';
17364SET @counter = @counter + 1;
17365END|
17366SET @counter = 1;
17367SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
17368Warnings:
17369Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
17370INSERT INTO t1 (f_char1, f_char2, f_charbig)
17371SELECT CAST(f_int1 AS CHAR),
17372CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
17373WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
17374ORDER BY f_int1;
17375DROP TRIGGER trg_3;
17376
17377# check trigger-12 success: 	1
17378Warnings:
17379Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
17380DELETE FROM t1
17381WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
17382AND f_int2 <> CAST(f_char1 AS SIGNED INT)
17383AND f_charbig = '####updated per insert trigger####';
17384ANALYZE  TABLE t1;
17385Table	Op	Msg_type	Msg_text
17386test.t1	analyze	status	OK
17387test.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.
17388CHECK    TABLE t1 EXTENDED;
17389Table	Op	Msg_type	Msg_text
17390test.t1	check	status	OK
17391test.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.
17392CHECKSUM TABLE t1 EXTENDED;
17393Table	Checksum
17394test.t1	<some_value>
17395OPTIMIZE TABLE t1;
17396Table	Op	Msg_type	Msg_text
17397test.t1	optimize	status	OK
17398test.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.
17399# check layout success:    1
17400REPAIR   TABLE t1 EXTENDED;
17401Table	Op	Msg_type	Msg_text
17402test.t1	repair	status	OK
17403test.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.
17404# check layout success:    1
17405TRUNCATE t1;
17406Warnings:
17407Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
17408
17409# check TRUNCATE success: 	1
17410# check layout success:    1
17411# End usability test (inc/partition_check.inc)
17412DROP TABLE t1;
17413CREATE TABLE t1 (
17414f_int1 INTEGER,
17415f_int2 INTEGER,
17416f_char1 CHAR(20),
17417f_char2 CHAR(20),
17418f_charbig VARCHAR(1000)
17419, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
17420)
17421PARTITION BY LIST(ABS(MOD(f_int1,2)))
17422SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3
17423(PARTITION part1 VALUES IN (0)
17424DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
17425INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
17426PARTITION part2 VALUES IN (1)
17427DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
17428INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
17429PARTITION part3 VALUES IN (NULL)
17430DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
17431INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir');
17432Warnings:
17433Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
17434INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
17435SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
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# Start usability test (inc/partition_check.inc)
17439create_command
17440SHOW CREATE TABLE t1;
17441Table	Create Table
17442t1	CREATE TABLE `t1` (
17443  `f_int1` int(11) DEFAULT NULL,
17444  `f_int2` int(11) DEFAULT NULL,
17445  `f_char1` char(20) DEFAULT NULL,
17446  `f_char2` char(20) DEFAULT NULL,
17447  `f_charbig` varchar(1000) DEFAULT NULL,
17448  UNIQUE KEY `uidx1` (`f_int1`,`f_int2`),
17449  UNIQUE KEY `uidx2` (`f_int2`,`f_int1`)
17450) ENGINE=MyISAM DEFAULT CHARSET=latin1
17451/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
17452SUBPARTITION BY KEY (f_int2)
17453SUBPARTITIONS 3
17454(PARTITION part1 VALUES IN (0) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
17455 PARTITION part2 VALUES IN (1) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
17456 PARTITION part3 VALUES IN (NULL) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM) */
17457
17458unified filelist
17459t1#P#part1#SP#part1sp0.MYD
17460t1#P#part1#SP#part1sp0.MYI
17461t1#P#part1#SP#part1sp1.MYD
17462t1#P#part1#SP#part1sp1.MYI
17463t1#P#part1#SP#part1sp2.MYD
17464t1#P#part1#SP#part1sp2.MYI
17465t1#P#part2#SP#part2sp0.MYD
17466t1#P#part2#SP#part2sp0.MYI
17467t1#P#part2#SP#part2sp1.MYD
17468t1#P#part2#SP#part2sp1.MYI
17469t1#P#part2#SP#part2sp2.MYD
17470t1#P#part2#SP#part2sp2.MYI
17471t1#P#part3#SP#part3sp0.MYD
17472t1#P#part3#SP#part3sp0.MYI
17473t1#P#part3#SP#part3sp1.MYD
17474t1#P#part3#SP#part3sp1.MYI
17475t1#P#part3#SP#part3sp2.MYD
17476t1#P#part3#SP#part3sp2.MYI
17477t1.frm
17478t1.par
17479t1#P#part1#SP#part1sp0.MYD
17480t1#P#part1#SP#part1sp1.MYD
17481t1#P#part1#SP#part1sp2.MYD
17482t1#P#part2#SP#part2sp0.MYD
17483t1#P#part2#SP#part2sp1.MYD
17484t1#P#part2#SP#part2sp2.MYD
17485t1#P#part3#SP#part3sp0.MYD
17486t1#P#part3#SP#part3sp1.MYD
17487t1#P#part3#SP#part3sp2.MYD
17488t1#P#part1#SP#part1sp0.MYI
17489t1#P#part1#SP#part1sp1.MYI
17490t1#P#part1#SP#part1sp2.MYI
17491t1#P#part2#SP#part2sp0.MYI
17492t1#P#part2#SP#part2sp1.MYI
17493t1#P#part2#SP#part2sp2.MYI
17494t1#P#part3#SP#part3sp0.MYI
17495t1#P#part3#SP#part3sp1.MYI
17496t1#P#part3#SP#part3sp2.MYI
17497
17498# check prerequisites-1 success:    1
17499# check COUNT(*) success:    1
17500# check MIN/MAX(f_int1) success:    1
17501# check MIN/MAX(f_int2) success:    1
17502INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17503SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
17504CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
17505WHERE f_int1 IN (2,3);
17506ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
17507# check prerequisites-3 success:    1
17508# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
17509INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17510SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
17511CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
17512WHERE f_int1 IN (2,3);
17513DELETE FROM t1 WHERE f_charbig = 'delete me';
17514INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17515SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
17516CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
17517WHERE f_int1 IN (2,3);
17518DELETE FROM t1 WHERE f_charbig = 'delete me';
17519# check read via f_int1 success: 1
17520# check read via f_int2 success: 1
17521
17522# check multiple-1 success: 	1
17523DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
17524
17525# check multiple-2 success: 	1
17526INSERT INTO t1 SELECT * FROM t0_template
17527WHERE MOD(f_int1,3) = 0;
17528
17529# check multiple-3 success: 	1
17530UPDATE t1 SET f_int1 = f_int1 + @max_row
17531WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
17532AND @max_row_div2 + @max_row_div4;
17533
17534# check multiple-4 success: 	1
17535DELETE FROM t1
17536WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
17537AND @max_row_div2 + @max_row_div4 + @max_row;
17538
17539# check multiple-5 success: 	1
17540SELECT COUNT(*) INTO @try_count FROM t0_template
17541WHERE MOD(f_int1,3) = 0
17542AND f_int1 BETWEEN @max_row_div2 AND @max_row;
17543SELECT COUNT(*) INTO @clash_count
17544FROM t1 INNER JOIN t0_template USING(f_int1)
17545WHERE MOD(f_int1,3) = 0
17546AND f_int1 BETWEEN @max_row_div2 AND @max_row;
17547SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
17548INSERT INTO t1
17549SET f_int1 = @cur_value , f_int2 = @cur_value,
17550f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
17551f_charbig = '#SINGLE#';
17552
17553# check single-1 success: 	1
17554SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
17555INSERT INTO t1
17556SET f_int1 = @cur_value , f_int2 = @cur_value,
17557f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
17558f_charbig = '#SINGLE#';
17559
17560# check single-2 success: 	1
17561SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
17562SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
17563UPDATE t1 SET f_int1 = @cur_value2
17564WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
17565
17566# check single-3 success: 	1
17567SET @cur_value1= -1;
17568SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
17569UPDATE t1 SET f_int1 = @cur_value1
17570WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
17571
17572# check single-4 success: 	1
17573SELECT MAX(f_int1) INTO @cur_value FROM t1;
17574DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
17575
17576# check single-5 success: 	1
17577DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
17578
17579# check single-6 success: 	1
17580INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
17581
17582# check single-7 success: 	1
17583DELETE FROM t1 WHERE f_charbig = '#2147483647##';
17584DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
17585INSERT t1 SET f_int1 = 0 , f_int2 = 0,
17586f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
17587f_charbig = '#NULL#';
17588INSERT INTO t1
17589SET f_int1 = NULL , f_int2 = -@max_row,
17590f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
17591f_charbig = '#NULL#';
17592# check null success:    1
17593
17594# check null-1 success: 	1
17595UPDATE t1 SET f_int1 = -@max_row
17596WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
17597AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
17598
17599# check null-2 success: 	1
17600UPDATE t1 SET f_int1 = NULL
17601WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
17602AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
17603
17604# check null-3 success: 	1
17605DELETE FROM t1
17606WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
17607AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
17608
17609# check null-4 success: 	1
17610DELETE FROM t1
17611WHERE f_int1 = 0 AND f_int2 = 0
17612AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
17613AND f_charbig = '#NULL#';
17614INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17615SELECT f_int1, f_int1, '', '', 'was inserted'
17616   FROM t0_template source_tab
17617WHERE MOD(f_int1,3) = 0
17618AND f_int1 BETWEEN @max_row_div2 AND @max_row
17619ON DUPLICATE KEY
17620UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
17621f_int2 = 2 * @max_row + source_tab.f_int1,
17622f_charbig = 'was updated';
17623
17624# check unique-1-a success: 	1
17625
17626# check unique-1-b success: 	1
17627DELETE FROM t1 WHERE f_charbig = 'was inserted';
17628UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17629f_int2 = CAST(f_char1 AS SIGNED INT),
17630f_charbig = CONCAT('===',f_char1,'===')
17631WHERE f_charbig = 'was updated';
17632REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17633SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
17634   FROM t0_template source_tab
17635WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
17636
17637# check replace success: 	1
17638DELETE FROM t1
17639WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
17640DELETE FROM t1
17641WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
17642f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
17643UPDATE t1 SET f_int2 = f_int1,
17644f_char1 = CAST(f_int1 AS CHAR),
17645f_char2 = CAST(f_int1 AS CHAR),
17646f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
17647WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
17648SET AUTOCOMMIT= 0;
17649INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17650SELECT f_int1, f_int1, '', '', 'was inserted'
17651FROM t0_template source_tab
17652WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
17653
17654# check transactions-1 success: 	1
17655COMMIT WORK;
17656
17657# check transactions-2 success: 	1
17658ROLLBACK WORK;
17659
17660# check transactions-3 success: 	1
17661DELETE FROM t1 WHERE f_charbig = 'was inserted';
17662COMMIT WORK;
17663ROLLBACK WORK;
17664
17665# check transactions-4 success: 	1
17666INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17667SELECT f_int1, f_int1, '', '', 'was inserted'
17668FROM t0_template source_tab
17669WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
17670
17671# check transactions-5 success: 	1
17672ROLLBACK WORK;
17673Warnings:
17674Warning	1196	Some non-transactional changed tables couldn't be rolled back
17675
17676# check transactions-6 success: 	1
17677# INFO: Storage engine used for t1 seems to be not transactional.
17678COMMIT;
17679
17680# check transactions-7 success: 	1
17681DELETE FROM t1 WHERE f_charbig = 'was inserted';
17682COMMIT WORK;
17683SET @@session.sql_mode = 'traditional';
17684Warnings:
17685Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
17686SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
17687INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17688SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
17689'', '', 'was inserted' FROM t0_template
17690WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
17691ERROR 22012: Division by 0
17692COMMIT;
17693
17694# check transactions-8 success: 	1
17695# INFO: Storage engine used for t1 seems to be unable to revert
17696#       changes made by the failing statement.
17697SET @@session.sql_mode = '';
17698Warnings:
17699Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
17700SET AUTOCOMMIT= 1;
17701DELETE FROM t1 WHERE f_charbig = 'was inserted';
17702COMMIT WORK;
17703UPDATE t1 SET f_charbig = REPEAT('b', 1000);
17704
17705# check special-1 success: 	1
17706UPDATE t1 SET f_charbig = '';
17707
17708# check special-2 success: 	1
17709UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
17710INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
17711SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
17712WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17713INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17714SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17715'just inserted' FROM t0_template
17716WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17717CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
17718BEGIN
17719UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17720f_charbig = 'updated by trigger'
17721      WHERE f_int1 = new.f_int1;
17722END|
17723INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17724SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
17725WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17726
17727# check trigger-1 success: 	1
17728DROP TRIGGER trg_1;
17729UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17730f_int2 = CAST(f_char1 AS SIGNED INT),
17731f_charbig = 'just inserted'
17732   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17733DELETE FROM t0_aux
17734WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17735INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17736SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17737'just inserted' FROM t0_template
17738WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17739CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
17740BEGIN
17741UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17742f_charbig = 'updated by trigger'
17743      WHERE f_int1 = new.f_int1;
17744END|
17745INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17746SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
17747WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17748
17749# check trigger-2 success: 	1
17750DROP TRIGGER trg_1;
17751UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17752f_int2 = CAST(f_char1 AS SIGNED INT),
17753f_charbig = 'just inserted'
17754   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17755DELETE FROM t0_aux
17756WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17757INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17758SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17759'just inserted' FROM t0_template
17760WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17761CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
17762BEGIN
17763UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17764f_charbig = 'updated by trigger'
17765      WHERE f_int1 = new.f_int1;
17766END|
17767UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
17768WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17769
17770# check trigger-3 success: 	1
17771DROP TRIGGER trg_1;
17772UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17773f_int2 = CAST(f_char1 AS SIGNED INT),
17774f_charbig = 'just inserted'
17775   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17776DELETE FROM t0_aux
17777WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17778INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17779SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17780'just inserted' FROM t0_template
17781WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17782CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
17783BEGIN
17784UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17785f_charbig = 'updated by trigger'
17786      WHERE f_int1 = - old.f_int1;
17787END|
17788UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
17789WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17790
17791# check trigger-4 success: 	1
17792DROP TRIGGER trg_1;
17793UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17794f_int2 = CAST(f_char1 AS SIGNED INT),
17795f_charbig = 'just inserted'
17796   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17797DELETE FROM t0_aux
17798WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17799INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17800SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17801'just inserted' FROM t0_template
17802WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17803CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
17804BEGIN
17805UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17806f_charbig = 'updated by trigger'
17807      WHERE f_int1 = new.f_int1;
17808END|
17809UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
17810WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17811
17812# check trigger-5 success: 	1
17813DROP TRIGGER trg_1;
17814UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17815f_int2 = CAST(f_char1 AS SIGNED INT),
17816f_charbig = 'just inserted'
17817   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17818DELETE FROM t0_aux
17819WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17820INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17821SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17822'just inserted' FROM t0_template
17823WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17824CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
17825BEGIN
17826UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17827f_charbig = 'updated by trigger'
17828      WHERE f_int1 = - old.f_int1;
17829END|
17830UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
17831WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17832
17833# check trigger-6 success: 	1
17834DROP TRIGGER trg_1;
17835UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17836f_int2 = CAST(f_char1 AS SIGNED INT),
17837f_charbig = 'just inserted'
17838   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17839DELETE FROM t0_aux
17840WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17841INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17842SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17843'just inserted' FROM t0_template
17844WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17845CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
17846BEGIN
17847UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17848f_charbig = 'updated by trigger'
17849      WHERE f_int1 = - old.f_int1;
17850END|
17851DELETE FROM t0_aux
17852WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17853
17854# check trigger-7 success: 	1
17855DROP TRIGGER trg_1;
17856UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17857f_int2 = CAST(f_char1 AS SIGNED INT),
17858f_charbig = 'just inserted'
17859   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17860DELETE FROM t0_aux
17861WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17862INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17863SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17864'just inserted' FROM t0_template
17865WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17866CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
17867BEGIN
17868UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17869f_charbig = 'updated by trigger'
17870      WHERE f_int1 = - old.f_int1;
17871END|
17872DELETE FROM t0_aux
17873WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17874
17875# check trigger-8 success: 	1
17876DROP TRIGGER trg_1;
17877UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17878f_int2 = CAST(f_char1 AS SIGNED INT),
17879f_charbig = 'just inserted'
17880   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17881DELETE FROM t0_aux
17882WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17883DELETE FROM t1
17884WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17885CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
17886BEGIN
17887SET new.f_int1 = old.f_int1 + @max_row,
17888new.f_int2 = old.f_int2 - @max_row,
17889new.f_charbig = '####updated per update trigger####';
17890END|
17891UPDATE t1
17892SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
17893f_charbig = '####updated per update statement itself####';
17894Warnings:
17895Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
17896
17897# check trigger-9 success: 	1
17898DROP TRIGGER trg_2;
17899UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17900f_int2 = CAST(f_char1 AS SIGNED INT),
17901f_charbig = CONCAT('===',f_char1,'===');
17902Warnings:
17903Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
17904CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
17905BEGIN
17906SET new.f_int1 = new.f_int1 + @max_row,
17907new.f_int2 = new.f_int2 - @max_row,
17908new.f_charbig = '####updated per update trigger####';
17909END|
17910UPDATE t1
17911SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
17912f_charbig = '####updated per update statement itself####';
17913Warnings:
17914Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
17915
17916# check trigger-10 success: 	1
17917DROP TRIGGER trg_2;
17918UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17919f_int2 = CAST(f_char1 AS SIGNED INT),
17920f_charbig = CONCAT('===',f_char1,'===');
17921Warnings:
17922Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
17923CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
17924BEGIN
17925SET new.f_int1 = @my_max1 + @counter,
17926new.f_int2 = @my_min2 - @counter,
17927new.f_charbig = '####updated per insert trigger####';
17928SET @counter = @counter + 1;
17929END|
17930SET @counter = 1;
17931SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
17932Warnings:
17933Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
17934INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17935SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
17936CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
17937WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
17938ORDER BY f_int1;
17939DROP TRIGGER trg_3;
17940
17941# check trigger-11 success: 	1
17942Warnings:
17943Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
17944DELETE FROM t1
17945WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
17946AND f_int2 <> CAST(f_char1 AS SIGNED INT)
17947AND f_charbig = '####updated per insert trigger####';
17948CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
17949BEGIN
17950SET new.f_int1 = @my_max1 + @counter,
17951new.f_int2 = @my_min2 - @counter,
17952new.f_charbig = '####updated per insert trigger####';
17953SET @counter = @counter + 1;
17954END|
17955SET @counter = 1;
17956SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
17957Warnings:
17958Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
17959INSERT INTO t1 (f_char1, f_char2, f_charbig)
17960SELECT CAST(f_int1 AS CHAR),
17961CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
17962WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
17963ORDER BY f_int1;
17964DROP TRIGGER trg_3;
17965
17966# check trigger-12 success: 	1
17967Warnings:
17968Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
17969DELETE FROM t1
17970WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
17971AND f_int2 <> CAST(f_char1 AS SIGNED INT)
17972AND f_charbig = '####updated per insert trigger####';
17973ANALYZE  TABLE t1;
17974Table	Op	Msg_type	Msg_text
17975test.t1	analyze	status	OK
17976test.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.
17977CHECK    TABLE t1 EXTENDED;
17978Table	Op	Msg_type	Msg_text
17979test.t1	check	status	OK
17980test.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.
17981CHECKSUM TABLE t1 EXTENDED;
17982Table	Checksum
17983test.t1	<some_value>
17984OPTIMIZE TABLE t1;
17985Table	Op	Msg_type	Msg_text
17986test.t1	optimize	status	OK
17987test.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.
17988# check layout success:    1
17989REPAIR   TABLE t1 EXTENDED;
17990Table	Op	Msg_type	Msg_text
17991test.t1	repair	status	OK
17992test.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.
17993# check layout success:    1
17994TRUNCATE t1;
17995Warnings:
17996Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
17997
17998# check TRUNCATE success: 	1
17999# check layout success:    1
18000# End usability test (inc/partition_check.inc)
18001DROP TABLE t1;
18002#========================================================================
18003# 5 use partition_directory with DATA/INDEX DIRECTORY
18004#========================================================================
18005DROP TABLE IF EXISTS t1;
18006CREATE TABLE t1 (
18007f_int1 INTEGER,
18008f_int2 INTEGER,
18009f_char1 CHAR(20),
18010f_char2 CHAR(20),
18011f_charbig VARCHAR(1000)
18012, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
18013)
18014PARTITION BY HASH(f_int1) PARTITIONS 2
18015(PARTITION p1
18016INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
18017PARTITION p2
18018INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir');
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.
18021INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
18022SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
18023Warnings:
18024Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
18025# Start usability test (inc/partition_check.inc)
18026create_command
18027SHOW CREATE TABLE t1;
18028Table	Create Table
18029t1	CREATE TABLE `t1` (
18030  `f_int1` int(11) DEFAULT NULL,
18031  `f_int2` int(11) DEFAULT NULL,
18032  `f_char1` char(20) DEFAULT NULL,
18033  `f_char2` char(20) DEFAULT NULL,
18034  `f_charbig` varchar(1000) DEFAULT NULL,
18035  UNIQUE KEY `uidx1` (`f_int1`,`f_int2`),
18036  UNIQUE KEY `uidx2` (`f_int2`,`f_int1`)
18037) ENGINE=MyISAM DEFAULT CHARSET=latin1
18038/*!50100 PARTITION BY HASH (f_int1)
18039(PARTITION p1 INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
18040 PARTITION p2 INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM) */
18041
18042unified filelist
18043t1#P#p1.MYD
18044t1#P#p1.MYI
18045t1#P#p2.MYD
18046t1#P#p2.MYI
18047t1.frm
18048t1.par
18049t1#P#p1.MYI
18050t1#P#p2.MYI
18051
18052# check prerequisites-1 success:    1
18053# check COUNT(*) success:    1
18054# check MIN/MAX(f_int1) success:    1
18055# check MIN/MAX(f_int2) success:    1
18056INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18057SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
18058CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
18059WHERE f_int1 IN (2,3);
18060ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
18061# check prerequisites-3 success:    1
18062# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
18063INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18064SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
18065CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
18066WHERE f_int1 IN (2,3);
18067DELETE FROM t1 WHERE f_charbig = 'delete me';
18068INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18069SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
18070CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
18071WHERE f_int1 IN (2,3);
18072DELETE FROM t1 WHERE f_charbig = 'delete me';
18073# check read via f_int1 success: 1
18074# check read via f_int2 success: 1
18075
18076# check multiple-1 success: 	1
18077DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
18078
18079# check multiple-2 success: 	1
18080INSERT INTO t1 SELECT * FROM t0_template
18081WHERE MOD(f_int1,3) = 0;
18082
18083# check multiple-3 success: 	1
18084UPDATE t1 SET f_int1 = f_int1 + @max_row
18085WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
18086AND @max_row_div2 + @max_row_div4;
18087
18088# check multiple-4 success: 	1
18089DELETE FROM t1
18090WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
18091AND @max_row_div2 + @max_row_div4 + @max_row;
18092
18093# check multiple-5 success: 	1
18094SELECT COUNT(*) INTO @try_count FROM t0_template
18095WHERE MOD(f_int1,3) = 0
18096AND f_int1 BETWEEN @max_row_div2 AND @max_row;
18097SELECT COUNT(*) INTO @clash_count
18098FROM t1 INNER JOIN t0_template USING(f_int1)
18099WHERE MOD(f_int1,3) = 0
18100AND f_int1 BETWEEN @max_row_div2 AND @max_row;
18101SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
18102INSERT INTO t1
18103SET f_int1 = @cur_value , f_int2 = @cur_value,
18104f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
18105f_charbig = '#SINGLE#';
18106
18107# check single-1 success: 	1
18108SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
18109INSERT INTO t1
18110SET f_int1 = @cur_value , f_int2 = @cur_value,
18111f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
18112f_charbig = '#SINGLE#';
18113
18114# check single-2 success: 	1
18115SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
18116SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
18117UPDATE t1 SET f_int1 = @cur_value2
18118WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
18119
18120# check single-3 success: 	1
18121SET @cur_value1= -1;
18122SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
18123UPDATE t1 SET f_int1 = @cur_value1
18124WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
18125
18126# check single-4 success: 	1
18127SELECT MAX(f_int1) INTO @cur_value FROM t1;
18128DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
18129
18130# check single-5 success: 	1
18131DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
18132
18133# check single-6 success: 	1
18134INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
18135
18136# check single-7 success: 	1
18137DELETE FROM t1 WHERE f_charbig = '#2147483647##';
18138DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
18139INSERT t1 SET f_int1 = 0 , f_int2 = 0,
18140f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
18141f_charbig = '#NULL#';
18142INSERT INTO t1
18143SET f_int1 = NULL , f_int2 = -@max_row,
18144f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
18145f_charbig = '#NULL#';
18146# check null success:    1
18147
18148# check null-1 success: 	1
18149UPDATE t1 SET f_int1 = -@max_row
18150WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
18151AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
18152
18153# check null-2 success: 	1
18154UPDATE t1 SET f_int1 = NULL
18155WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
18156AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
18157
18158# check null-3 success: 	1
18159DELETE FROM t1
18160WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
18161AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
18162
18163# check null-4 success: 	1
18164DELETE FROM t1
18165WHERE f_int1 = 0 AND f_int2 = 0
18166AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
18167AND f_charbig = '#NULL#';
18168INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18169SELECT f_int1, f_int1, '', '', 'was inserted'
18170   FROM t0_template source_tab
18171WHERE MOD(f_int1,3) = 0
18172AND f_int1 BETWEEN @max_row_div2 AND @max_row
18173ON DUPLICATE KEY
18174UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
18175f_int2 = 2 * @max_row + source_tab.f_int1,
18176f_charbig = 'was updated';
18177
18178# check unique-1-a success: 	1
18179
18180# check unique-1-b success: 	1
18181DELETE FROM t1 WHERE f_charbig = 'was inserted';
18182UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18183f_int2 = CAST(f_char1 AS SIGNED INT),
18184f_charbig = CONCAT('===',f_char1,'===')
18185WHERE f_charbig = 'was updated';
18186REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18187SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
18188   FROM t0_template source_tab
18189WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
18190
18191# check replace success: 	1
18192DELETE FROM t1
18193WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
18194DELETE FROM t1
18195WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
18196f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
18197UPDATE t1 SET f_int2 = f_int1,
18198f_char1 = CAST(f_int1 AS CHAR),
18199f_char2 = CAST(f_int1 AS CHAR),
18200f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
18201WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
18202SET AUTOCOMMIT= 0;
18203INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18204SELECT f_int1, f_int1, '', '', 'was inserted'
18205FROM t0_template source_tab
18206WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
18207
18208# check transactions-1 success: 	1
18209COMMIT WORK;
18210
18211# check transactions-2 success: 	1
18212ROLLBACK WORK;
18213
18214# check transactions-3 success: 	1
18215DELETE FROM t1 WHERE f_charbig = 'was inserted';
18216COMMIT WORK;
18217ROLLBACK WORK;
18218
18219# check transactions-4 success: 	1
18220INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18221SELECT f_int1, f_int1, '', '', 'was inserted'
18222FROM t0_template source_tab
18223WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
18224
18225# check transactions-5 success: 	1
18226ROLLBACK WORK;
18227Warnings:
18228Warning	1196	Some non-transactional changed tables couldn't be rolled back
18229
18230# check transactions-6 success: 	1
18231# INFO: Storage engine used for t1 seems to be not transactional.
18232COMMIT;
18233
18234# check transactions-7 success: 	1
18235DELETE FROM t1 WHERE f_charbig = 'was inserted';
18236COMMIT WORK;
18237SET @@session.sql_mode = 'traditional';
18238Warnings:
18239Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
18240SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
18241INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18242SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
18243'', '', 'was inserted' FROM t0_template
18244WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
18245ERROR 22012: Division by 0
18246COMMIT;
18247
18248# check transactions-8 success: 	1
18249# INFO: Storage engine used for t1 seems to be unable to revert
18250#       changes made by the failing statement.
18251SET @@session.sql_mode = '';
18252Warnings:
18253Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
18254SET AUTOCOMMIT= 1;
18255DELETE FROM t1 WHERE f_charbig = 'was inserted';
18256COMMIT WORK;
18257UPDATE t1 SET f_charbig = REPEAT('b', 1000);
18258
18259# check special-1 success: 	1
18260UPDATE t1 SET f_charbig = '';
18261
18262# check special-2 success: 	1
18263UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
18264INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
18265SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
18266WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18267INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18268SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18269'just inserted' FROM t0_template
18270WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18271CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
18272BEGIN
18273UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18274f_charbig = 'updated by trigger'
18275      WHERE f_int1 = new.f_int1;
18276END|
18277INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18278SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
18279WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18280
18281# check trigger-1 success: 	1
18282DROP TRIGGER trg_1;
18283UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18284f_int2 = CAST(f_char1 AS SIGNED INT),
18285f_charbig = 'just inserted'
18286   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18287DELETE FROM t0_aux
18288WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18289INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18290SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18291'just inserted' FROM t0_template
18292WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18293CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
18294BEGIN
18295UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18296f_charbig = 'updated by trigger'
18297      WHERE f_int1 = new.f_int1;
18298END|
18299INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18300SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
18301WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18302
18303# check trigger-2 success: 	1
18304DROP TRIGGER trg_1;
18305UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18306f_int2 = CAST(f_char1 AS SIGNED INT),
18307f_charbig = 'just inserted'
18308   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18309DELETE FROM t0_aux
18310WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18311INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18312SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18313'just inserted' FROM t0_template
18314WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18315CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
18316BEGIN
18317UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18318f_charbig = 'updated by trigger'
18319      WHERE f_int1 = new.f_int1;
18320END|
18321UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
18322WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18323
18324# check trigger-3 success: 	1
18325DROP TRIGGER trg_1;
18326UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18327f_int2 = CAST(f_char1 AS SIGNED INT),
18328f_charbig = 'just inserted'
18329   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18330DELETE FROM t0_aux
18331WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18332INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18333SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18334'just inserted' FROM t0_template
18335WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18336CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
18337BEGIN
18338UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18339f_charbig = 'updated by trigger'
18340      WHERE f_int1 = - old.f_int1;
18341END|
18342UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
18343WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18344
18345# check trigger-4 success: 	1
18346DROP TRIGGER trg_1;
18347UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18348f_int2 = CAST(f_char1 AS SIGNED INT),
18349f_charbig = 'just inserted'
18350   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18351DELETE FROM t0_aux
18352WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18353INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18354SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18355'just inserted' FROM t0_template
18356WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18357CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
18358BEGIN
18359UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18360f_charbig = 'updated by trigger'
18361      WHERE f_int1 = new.f_int1;
18362END|
18363UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
18364WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18365
18366# check trigger-5 success: 	1
18367DROP TRIGGER trg_1;
18368UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18369f_int2 = CAST(f_char1 AS SIGNED INT),
18370f_charbig = 'just inserted'
18371   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18372DELETE FROM t0_aux
18373WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18374INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18375SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18376'just inserted' FROM t0_template
18377WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18378CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
18379BEGIN
18380UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18381f_charbig = 'updated by trigger'
18382      WHERE f_int1 = - old.f_int1;
18383END|
18384UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
18385WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18386
18387# check trigger-6 success: 	1
18388DROP TRIGGER trg_1;
18389UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18390f_int2 = CAST(f_char1 AS SIGNED INT),
18391f_charbig = 'just inserted'
18392   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18393DELETE FROM t0_aux
18394WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18395INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18396SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18397'just inserted' FROM t0_template
18398WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18399CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
18400BEGIN
18401UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18402f_charbig = 'updated by trigger'
18403      WHERE f_int1 = - old.f_int1;
18404END|
18405DELETE FROM t0_aux
18406WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18407
18408# check trigger-7 success: 	1
18409DROP TRIGGER trg_1;
18410UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18411f_int2 = CAST(f_char1 AS SIGNED INT),
18412f_charbig = 'just inserted'
18413   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18414DELETE FROM t0_aux
18415WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18416INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18417SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18418'just inserted' FROM t0_template
18419WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18420CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
18421BEGIN
18422UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18423f_charbig = 'updated by trigger'
18424      WHERE f_int1 = - old.f_int1;
18425END|
18426DELETE FROM t0_aux
18427WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18428
18429# check trigger-8 success: 	1
18430DROP TRIGGER trg_1;
18431UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18432f_int2 = CAST(f_char1 AS SIGNED INT),
18433f_charbig = 'just inserted'
18434   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18435DELETE FROM t0_aux
18436WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18437DELETE FROM t1
18438WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18439CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
18440BEGIN
18441SET new.f_int1 = old.f_int1 + @max_row,
18442new.f_int2 = old.f_int2 - @max_row,
18443new.f_charbig = '####updated per update trigger####';
18444END|
18445UPDATE t1
18446SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
18447f_charbig = '####updated per update statement itself####';
18448Warnings:
18449Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
18450
18451# check trigger-9 success: 	1
18452DROP TRIGGER trg_2;
18453UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18454f_int2 = CAST(f_char1 AS SIGNED INT),
18455f_charbig = CONCAT('===',f_char1,'===');
18456Warnings:
18457Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
18458CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
18459BEGIN
18460SET new.f_int1 = new.f_int1 + @max_row,
18461new.f_int2 = new.f_int2 - @max_row,
18462new.f_charbig = '####updated per update trigger####';
18463END|
18464UPDATE t1
18465SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
18466f_charbig = '####updated per update statement itself####';
18467Warnings:
18468Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
18469
18470# check trigger-10 success: 	1
18471DROP TRIGGER trg_2;
18472UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18473f_int2 = CAST(f_char1 AS SIGNED INT),
18474f_charbig = CONCAT('===',f_char1,'===');
18475Warnings:
18476Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
18477CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
18478BEGIN
18479SET new.f_int1 = @my_max1 + @counter,
18480new.f_int2 = @my_min2 - @counter,
18481new.f_charbig = '####updated per insert trigger####';
18482SET @counter = @counter + 1;
18483END|
18484SET @counter = 1;
18485SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
18486Warnings:
18487Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
18488INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18489SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
18490CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
18491WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
18492ORDER BY f_int1;
18493DROP TRIGGER trg_3;
18494
18495# check trigger-11 success: 	1
18496Warnings:
18497Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
18498DELETE FROM t1
18499WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
18500AND f_int2 <> CAST(f_char1 AS SIGNED INT)
18501AND f_charbig = '####updated per insert trigger####';
18502CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
18503BEGIN
18504SET new.f_int1 = @my_max1 + @counter,
18505new.f_int2 = @my_min2 - @counter,
18506new.f_charbig = '####updated per insert trigger####';
18507SET @counter = @counter + 1;
18508END|
18509SET @counter = 1;
18510SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
18511Warnings:
18512Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
18513INSERT INTO t1 (f_char1, f_char2, f_charbig)
18514SELECT CAST(f_int1 AS CHAR),
18515CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
18516WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
18517ORDER BY f_int1;
18518DROP TRIGGER trg_3;
18519
18520# check trigger-12 success: 	1
18521Warnings:
18522Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
18523DELETE FROM t1
18524WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
18525AND f_int2 <> CAST(f_char1 AS SIGNED INT)
18526AND f_charbig = '####updated per insert trigger####';
18527ANALYZE  TABLE t1;
18528Table	Op	Msg_type	Msg_text
18529test.t1	analyze	status	OK
18530test.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.
18531CHECK    TABLE t1 EXTENDED;
18532Table	Op	Msg_type	Msg_text
18533test.t1	check	status	OK
18534test.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.
18535CHECKSUM TABLE t1 EXTENDED;
18536Table	Checksum
18537test.t1	<some_value>
18538OPTIMIZE TABLE t1;
18539Table	Op	Msg_type	Msg_text
18540test.t1	optimize	status	OK
18541test.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.
18542# check layout success:    1
18543REPAIR   TABLE t1 EXTENDED;
18544Table	Op	Msg_type	Msg_text
18545test.t1	repair	status	OK
18546test.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.
18547# check layout success:    1
18548TRUNCATE t1;
18549Warnings:
18550Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
18551
18552# check TRUNCATE success: 	1
18553# check layout success:    1
18554# End usability test (inc/partition_check.inc)
18555DROP TABLE t1;
18556CREATE TABLE t1 (
18557f_int1 INTEGER,
18558f_int2 INTEGER,
18559f_char1 CHAR(20),
18560f_char2 CHAR(20),
18561f_charbig VARCHAR(1000)
18562, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
18563)
18564PARTITION BY HASH(f_int1) PARTITIONS 5
18565(PARTITION p1
18566DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir',
18567PARTITION p2
18568INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
18569PARTITION p3
18570DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
18571INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
18572PARTITION p4,
18573PARTITION p5
18574INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir');
18575Warnings:
18576Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
18577INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
18578SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
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.
18581# Start usability test (inc/partition_check.inc)
18582create_command
18583SHOW CREATE TABLE t1;
18584Table	Create Table
18585t1	CREATE TABLE `t1` (
18586  `f_int1` int(11) DEFAULT NULL,
18587  `f_int2` int(11) DEFAULT NULL,
18588  `f_char1` char(20) DEFAULT NULL,
18589  `f_char2` char(20) DEFAULT NULL,
18590  `f_charbig` varchar(1000) DEFAULT NULL,
18591  UNIQUE KEY `uidx1` (`f_int1`,`f_int2`),
18592  UNIQUE KEY `uidx2` (`f_int2`,`f_int1`)
18593) ENGINE=MyISAM DEFAULT CHARSET=latin1
18594/*!50100 PARTITION BY HASH (f_int1)
18595(PARTITION p1 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' ENGINE = MyISAM,
18596 PARTITION p2 INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
18597 PARTITION p3 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
18598 PARTITION p4 ENGINE = MyISAM,
18599 PARTITION p5 INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM) */
18600
18601unified filelist
18602t1#P#p1.MYD
18603t1#P#p1.MYI
18604t1#P#p2.MYD
18605t1#P#p2.MYI
18606t1#P#p3.MYD
18607t1#P#p3.MYI
18608t1#P#p4.MYD
18609t1#P#p4.MYI
18610t1#P#p5.MYD
18611t1#P#p5.MYI
18612t1.frm
18613t1.par
18614t1#P#p1.MYD
18615t1#P#p3.MYD
18616t1#P#p2.MYI
18617t1#P#p3.MYI
18618t1#P#p5.MYI
18619
18620# check prerequisites-1 success:    1
18621# check COUNT(*) success:    1
18622# check MIN/MAX(f_int1) success:    1
18623# check MIN/MAX(f_int2) success:    1
18624INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18625SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
18626CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
18627WHERE f_int1 IN (2,3);
18628ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
18629# check prerequisites-3 success:    1
18630# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
18631INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18632SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
18633CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
18634WHERE f_int1 IN (2,3);
18635DELETE FROM t1 WHERE f_charbig = 'delete me';
18636INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18637SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
18638CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
18639WHERE f_int1 IN (2,3);
18640DELETE FROM t1 WHERE f_charbig = 'delete me';
18641# check read via f_int1 success: 1
18642# check read via f_int2 success: 1
18643
18644# check multiple-1 success: 	1
18645DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
18646
18647# check multiple-2 success: 	1
18648INSERT INTO t1 SELECT * FROM t0_template
18649WHERE MOD(f_int1,3) = 0;
18650
18651# check multiple-3 success: 	1
18652UPDATE t1 SET f_int1 = f_int1 + @max_row
18653WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
18654AND @max_row_div2 + @max_row_div4;
18655
18656# check multiple-4 success: 	1
18657DELETE FROM t1
18658WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
18659AND @max_row_div2 + @max_row_div4 + @max_row;
18660
18661# check multiple-5 success: 	1
18662SELECT COUNT(*) INTO @try_count FROM t0_template
18663WHERE MOD(f_int1,3) = 0
18664AND f_int1 BETWEEN @max_row_div2 AND @max_row;
18665SELECT COUNT(*) INTO @clash_count
18666FROM t1 INNER JOIN t0_template USING(f_int1)
18667WHERE MOD(f_int1,3) = 0
18668AND f_int1 BETWEEN @max_row_div2 AND @max_row;
18669SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
18670INSERT INTO t1
18671SET f_int1 = @cur_value , f_int2 = @cur_value,
18672f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
18673f_charbig = '#SINGLE#';
18674
18675# check single-1 success: 	1
18676SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
18677INSERT INTO t1
18678SET f_int1 = @cur_value , f_int2 = @cur_value,
18679f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
18680f_charbig = '#SINGLE#';
18681
18682# check single-2 success: 	1
18683SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
18684SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
18685UPDATE t1 SET f_int1 = @cur_value2
18686WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
18687
18688# check single-3 success: 	1
18689SET @cur_value1= -1;
18690SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
18691UPDATE t1 SET f_int1 = @cur_value1
18692WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
18693
18694# check single-4 success: 	1
18695SELECT MAX(f_int1) INTO @cur_value FROM t1;
18696DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
18697
18698# check single-5 success: 	1
18699DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
18700
18701# check single-6 success: 	1
18702INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
18703
18704# check single-7 success: 	1
18705DELETE FROM t1 WHERE f_charbig = '#2147483647##';
18706DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
18707INSERT t1 SET f_int1 = 0 , f_int2 = 0,
18708f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
18709f_charbig = '#NULL#';
18710INSERT INTO t1
18711SET f_int1 = NULL , f_int2 = -@max_row,
18712f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
18713f_charbig = '#NULL#';
18714# check null success:    1
18715
18716# check null-1 success: 	1
18717UPDATE t1 SET f_int1 = -@max_row
18718WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
18719AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
18720
18721# check null-2 success: 	1
18722UPDATE t1 SET f_int1 = NULL
18723WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
18724AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
18725
18726# check null-3 success: 	1
18727DELETE FROM t1
18728WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
18729AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
18730
18731# check null-4 success: 	1
18732DELETE FROM t1
18733WHERE f_int1 = 0 AND f_int2 = 0
18734AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
18735AND f_charbig = '#NULL#';
18736INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18737SELECT f_int1, f_int1, '', '', 'was inserted'
18738   FROM t0_template source_tab
18739WHERE MOD(f_int1,3) = 0
18740AND f_int1 BETWEEN @max_row_div2 AND @max_row
18741ON DUPLICATE KEY
18742UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
18743f_int2 = 2 * @max_row + source_tab.f_int1,
18744f_charbig = 'was updated';
18745
18746# check unique-1-a success: 	1
18747
18748# check unique-1-b success: 	1
18749DELETE FROM t1 WHERE f_charbig = 'was inserted';
18750UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18751f_int2 = CAST(f_char1 AS SIGNED INT),
18752f_charbig = CONCAT('===',f_char1,'===')
18753WHERE f_charbig = 'was updated';
18754REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18755SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
18756   FROM t0_template source_tab
18757WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
18758
18759# check replace success: 	1
18760DELETE FROM t1
18761WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
18762DELETE FROM t1
18763WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
18764f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
18765UPDATE t1 SET f_int2 = f_int1,
18766f_char1 = CAST(f_int1 AS CHAR),
18767f_char2 = CAST(f_int1 AS CHAR),
18768f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
18769WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
18770SET AUTOCOMMIT= 0;
18771INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18772SELECT f_int1, f_int1, '', '', 'was inserted'
18773FROM t0_template source_tab
18774WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
18775
18776# check transactions-1 success: 	1
18777COMMIT WORK;
18778
18779# check transactions-2 success: 	1
18780ROLLBACK WORK;
18781
18782# check transactions-3 success: 	1
18783DELETE FROM t1 WHERE f_charbig = 'was inserted';
18784COMMIT WORK;
18785ROLLBACK WORK;
18786
18787# check transactions-4 success: 	1
18788INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18789SELECT f_int1, f_int1, '', '', 'was inserted'
18790FROM t0_template source_tab
18791WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
18792
18793# check transactions-5 success: 	1
18794ROLLBACK WORK;
18795Warnings:
18796Warning	1196	Some non-transactional changed tables couldn't be rolled back
18797
18798# check transactions-6 success: 	1
18799# INFO: Storage engine used for t1 seems to be not transactional.
18800COMMIT;
18801
18802# check transactions-7 success: 	1
18803DELETE FROM t1 WHERE f_charbig = 'was inserted';
18804COMMIT WORK;
18805SET @@session.sql_mode = 'traditional';
18806Warnings:
18807Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
18808SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
18809INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18810SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
18811'', '', 'was inserted' FROM t0_template
18812WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
18813ERROR 22012: Division by 0
18814COMMIT;
18815
18816# check transactions-8 success: 	1
18817# INFO: Storage engine used for t1 seems to be unable to revert
18818#       changes made by the failing statement.
18819SET @@session.sql_mode = '';
18820Warnings:
18821Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
18822SET AUTOCOMMIT= 1;
18823DELETE FROM t1 WHERE f_charbig = 'was inserted';
18824COMMIT WORK;
18825UPDATE t1 SET f_charbig = REPEAT('b', 1000);
18826
18827# check special-1 success: 	1
18828UPDATE t1 SET f_charbig = '';
18829
18830# check special-2 success: 	1
18831UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
18832INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
18833SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
18834WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18835INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18836SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18837'just inserted' FROM t0_template
18838WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18839CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
18840BEGIN
18841UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18842f_charbig = 'updated by trigger'
18843      WHERE f_int1 = new.f_int1;
18844END|
18845INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18846SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
18847WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18848
18849# check trigger-1 success: 	1
18850DROP TRIGGER trg_1;
18851UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18852f_int2 = CAST(f_char1 AS SIGNED INT),
18853f_charbig = 'just inserted'
18854   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18855DELETE FROM t0_aux
18856WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18857INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18858SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18859'just inserted' FROM t0_template
18860WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18861CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
18862BEGIN
18863UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18864f_charbig = 'updated by trigger'
18865      WHERE f_int1 = new.f_int1;
18866END|
18867INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18868SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
18869WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18870
18871# check trigger-2 success: 	1
18872DROP TRIGGER trg_1;
18873UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18874f_int2 = CAST(f_char1 AS SIGNED INT),
18875f_charbig = 'just inserted'
18876   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18877DELETE FROM t0_aux
18878WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18879INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18880SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18881'just inserted' FROM t0_template
18882WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18883CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
18884BEGIN
18885UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18886f_charbig = 'updated by trigger'
18887      WHERE f_int1 = new.f_int1;
18888END|
18889UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
18890WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18891
18892# check trigger-3 success: 	1
18893DROP TRIGGER trg_1;
18894UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18895f_int2 = CAST(f_char1 AS SIGNED INT),
18896f_charbig = 'just inserted'
18897   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18898DELETE FROM t0_aux
18899WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18900INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18901SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18902'just inserted' FROM t0_template
18903WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18904CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
18905BEGIN
18906UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18907f_charbig = 'updated by trigger'
18908      WHERE f_int1 = - old.f_int1;
18909END|
18910UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
18911WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18912
18913# check trigger-4 success: 	1
18914DROP TRIGGER trg_1;
18915UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18916f_int2 = CAST(f_char1 AS SIGNED INT),
18917f_charbig = 'just inserted'
18918   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18919DELETE FROM t0_aux
18920WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18921INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18922SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18923'just inserted' FROM t0_template
18924WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18925CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
18926BEGIN
18927UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18928f_charbig = 'updated by trigger'
18929      WHERE f_int1 = new.f_int1;
18930END|
18931UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
18932WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18933
18934# check trigger-5 success: 	1
18935DROP TRIGGER trg_1;
18936UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18937f_int2 = CAST(f_char1 AS SIGNED INT),
18938f_charbig = 'just inserted'
18939   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18940DELETE FROM t0_aux
18941WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18942INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18943SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18944'just inserted' FROM t0_template
18945WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18946CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
18947BEGIN
18948UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18949f_charbig = 'updated by trigger'
18950      WHERE f_int1 = - old.f_int1;
18951END|
18952UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
18953WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18954
18955# check trigger-6 success: 	1
18956DROP TRIGGER trg_1;
18957UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18958f_int2 = CAST(f_char1 AS SIGNED INT),
18959f_charbig = 'just inserted'
18960   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18961DELETE FROM t0_aux
18962WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18963INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18964SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18965'just inserted' FROM t0_template
18966WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18967CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
18968BEGIN
18969UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18970f_charbig = 'updated by trigger'
18971      WHERE f_int1 = - old.f_int1;
18972END|
18973DELETE FROM t0_aux
18974WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18975
18976# check trigger-7 success: 	1
18977DROP TRIGGER trg_1;
18978UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18979f_int2 = CAST(f_char1 AS SIGNED INT),
18980f_charbig = 'just inserted'
18981   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18982DELETE FROM t0_aux
18983WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18984INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18985SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18986'just inserted' FROM t0_template
18987WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18988CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
18989BEGIN
18990UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18991f_charbig = 'updated by trigger'
18992      WHERE f_int1 = - old.f_int1;
18993END|
18994DELETE FROM t0_aux
18995WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18996
18997# check trigger-8 success: 	1
18998DROP TRIGGER trg_1;
18999UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19000f_int2 = CAST(f_char1 AS SIGNED INT),
19001f_charbig = 'just inserted'
19002   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19003DELETE FROM t0_aux
19004WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19005DELETE FROM t1
19006WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19007CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
19008BEGIN
19009SET new.f_int1 = old.f_int1 + @max_row,
19010new.f_int2 = old.f_int2 - @max_row,
19011new.f_charbig = '####updated per update trigger####';
19012END|
19013UPDATE t1
19014SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
19015f_charbig = '####updated per update statement itself####';
19016Warnings:
19017Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
19018
19019# check trigger-9 success: 	1
19020DROP TRIGGER trg_2;
19021UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19022f_int2 = CAST(f_char1 AS SIGNED INT),
19023f_charbig = CONCAT('===',f_char1,'===');
19024Warnings:
19025Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
19026CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
19027BEGIN
19028SET new.f_int1 = new.f_int1 + @max_row,
19029new.f_int2 = new.f_int2 - @max_row,
19030new.f_charbig = '####updated per update trigger####';
19031END|
19032UPDATE t1
19033SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
19034f_charbig = '####updated per update statement itself####';
19035Warnings:
19036Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
19037
19038# check trigger-10 success: 	1
19039DROP TRIGGER trg_2;
19040UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19041f_int2 = CAST(f_char1 AS SIGNED INT),
19042f_charbig = CONCAT('===',f_char1,'===');
19043Warnings:
19044Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
19045CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
19046BEGIN
19047SET new.f_int1 = @my_max1 + @counter,
19048new.f_int2 = @my_min2 - @counter,
19049new.f_charbig = '####updated per insert trigger####';
19050SET @counter = @counter + 1;
19051END|
19052SET @counter = 1;
19053SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
19054Warnings:
19055Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
19056INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19057SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
19058CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
19059WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
19060ORDER BY f_int1;
19061DROP TRIGGER trg_3;
19062
19063# check trigger-11 success: 	1
19064Warnings:
19065Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
19066DELETE FROM t1
19067WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
19068AND f_int2 <> CAST(f_char1 AS SIGNED INT)
19069AND f_charbig = '####updated per insert trigger####';
19070CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
19071BEGIN
19072SET new.f_int1 = @my_max1 + @counter,
19073new.f_int2 = @my_min2 - @counter,
19074new.f_charbig = '####updated per insert trigger####';
19075SET @counter = @counter + 1;
19076END|
19077SET @counter = 1;
19078SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
19079Warnings:
19080Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
19081INSERT INTO t1 (f_char1, f_char2, f_charbig)
19082SELECT CAST(f_int1 AS CHAR),
19083CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
19084WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
19085ORDER BY f_int1;
19086DROP TRIGGER trg_3;
19087
19088# check trigger-12 success: 	1
19089Warnings:
19090Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
19091DELETE FROM t1
19092WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
19093AND f_int2 <> CAST(f_char1 AS SIGNED INT)
19094AND f_charbig = '####updated per insert trigger####';
19095ANALYZE  TABLE t1;
19096Table	Op	Msg_type	Msg_text
19097test.t1	analyze	status	OK
19098test.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.
19099CHECK    TABLE t1 EXTENDED;
19100Table	Op	Msg_type	Msg_text
19101test.t1	check	status	OK
19102test.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.
19103CHECKSUM TABLE t1 EXTENDED;
19104Table	Checksum
19105test.t1	<some_value>
19106OPTIMIZE TABLE t1;
19107Table	Op	Msg_type	Msg_text
19108test.t1	optimize	status	OK
19109test.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.
19110# check layout success:    1
19111REPAIR   TABLE t1 EXTENDED;
19112Table	Op	Msg_type	Msg_text
19113test.t1	repair	status	OK
19114test.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.
19115# check layout success:    1
19116TRUNCATE t1;
19117Warnings:
19118Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
19119
19120# check TRUNCATE success: 	1
19121# check layout success:    1
19122# End usability test (inc/partition_check.inc)
19123DROP TABLE t1;
19124CREATE TABLE t1 (
19125f_int1 INTEGER,
19126f_int2 INTEGER,
19127f_char1 CHAR(20),
19128f_char2 CHAR(20),
19129f_charbig VARCHAR(1000)
19130, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
19131)
19132PARTITION BY LIST(MOD(f_int1,4))
19133(PARTITION part_3 VALUES IN (-3)
19134INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
19135PARTITION part_2 VALUES IN (-2)
19136DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir',
19137PARTITION part_1 VALUES IN (-1)
19138DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
19139PARTITION part_N VALUES IN (NULL)
19140DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir',
19141PARTITION part0 VALUES IN (0)
19142INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
19143PARTITION part1 VALUES IN (1)
19144,
19145PARTITION part2 VALUES IN (2)
19146DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir',
19147PARTITION part3 VALUES IN (3)
19148DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir');
19149Warnings:
19150Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
19151INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
19152SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
19153Warnings:
19154Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
19155# Start usability test (inc/partition_check.inc)
19156create_command
19157SHOW CREATE TABLE t1;
19158Table	Create Table
19159t1	CREATE TABLE `t1` (
19160  `f_int1` int(11) DEFAULT NULL,
19161  `f_int2` int(11) DEFAULT NULL,
19162  `f_char1` char(20) DEFAULT NULL,
19163  `f_char2` char(20) DEFAULT NULL,
19164  `f_charbig` varchar(1000) DEFAULT NULL,
19165  UNIQUE KEY `uidx1` (`f_int1`,`f_int2`),
19166  UNIQUE KEY `uidx2` (`f_int2`,`f_int1`)
19167) ENGINE=MyISAM DEFAULT CHARSET=latin1
19168/*!50100 PARTITION BY LIST (MOD(f_int1,4))
19169(PARTITION part_3 VALUES IN (-3) INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
19170 PARTITION part_2 VALUES IN (-2) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' ENGINE = MyISAM,
19171 PARTITION part_1 VALUES IN (-1) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
19172 PARTITION part_N VALUES IN (NULL) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' ENGINE = MyISAM,
19173 PARTITION part0 VALUES IN (0) INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
19174 PARTITION part1 VALUES IN (1) ENGINE = MyISAM,
19175 PARTITION part2 VALUES IN (2) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' ENGINE = MyISAM,
19176 PARTITION part3 VALUES IN (3) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM) */
19177
19178unified filelist
19179t1#P#part0.MYD
19180t1#P#part0.MYI
19181t1#P#part1.MYD
19182t1#P#part1.MYI
19183t1#P#part2.MYD
19184t1#P#part2.MYI
19185t1#P#part3.MYD
19186t1#P#part3.MYI
19187t1#P#part_1.MYD
19188t1#P#part_1.MYI
19189t1#P#part_2.MYD
19190t1#P#part_2.MYI
19191t1#P#part_3.MYD
19192t1#P#part_3.MYI
19193t1#P#part_N.MYD
19194t1#P#part_N.MYI
19195t1.frm
19196t1.par
19197t1#P#part2.MYD
19198t1#P#part3.MYD
19199t1#P#part_1.MYD
19200t1#P#part_2.MYD
19201t1#P#part_N.MYD
19202t1#P#part0.MYI
19203t1#P#part3.MYI
19204t1#P#part_1.MYI
19205t1#P#part_3.MYI
19206
19207# check prerequisites-1 success:    1
19208# check COUNT(*) success:    1
19209# check MIN/MAX(f_int1) success:    1
19210# check MIN/MAX(f_int2) success:    1
19211INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19212SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
19213CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
19214WHERE f_int1 IN (2,3);
19215ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
19216# check prerequisites-3 success:    1
19217# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
19218INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19219SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
19220CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
19221WHERE f_int1 IN (2,3);
19222DELETE FROM t1 WHERE f_charbig = 'delete me';
19223INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19224SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
19225CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
19226WHERE f_int1 IN (2,3);
19227DELETE FROM t1 WHERE f_charbig = 'delete me';
19228# check read via f_int1 success: 1
19229# check read via f_int2 success: 1
19230
19231# check multiple-1 success: 	1
19232DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
19233
19234# check multiple-2 success: 	1
19235INSERT INTO t1 SELECT * FROM t0_template
19236WHERE MOD(f_int1,3) = 0;
19237
19238# check multiple-3 success: 	1
19239UPDATE t1 SET f_int1 = f_int1 + @max_row
19240WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
19241AND @max_row_div2 + @max_row_div4;
19242
19243# check multiple-4 success: 	1
19244DELETE FROM t1
19245WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
19246AND @max_row_div2 + @max_row_div4 + @max_row;
19247
19248# check multiple-5 success: 	1
19249SELECT COUNT(*) INTO @try_count FROM t0_template
19250WHERE MOD(f_int1,3) = 0
19251AND f_int1 BETWEEN @max_row_div2 AND @max_row;
19252SELECT COUNT(*) INTO @clash_count
19253FROM t1 INNER JOIN t0_template USING(f_int1)
19254WHERE MOD(f_int1,3) = 0
19255AND f_int1 BETWEEN @max_row_div2 AND @max_row;
19256SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
19257INSERT INTO t1
19258SET f_int1 = @cur_value , f_int2 = @cur_value,
19259f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
19260f_charbig = '#SINGLE#';
19261
19262# check single-1 success: 	1
19263SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
19264INSERT INTO t1
19265SET f_int1 = @cur_value , f_int2 = @cur_value,
19266f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
19267f_charbig = '#SINGLE#';
19268
19269# check single-2 success: 	1
19270SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
19271SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
19272UPDATE t1 SET f_int1 = @cur_value2
19273WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
19274
19275# check single-3 success: 	1
19276SET @cur_value1= -1;
19277SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
19278UPDATE t1 SET f_int1 = @cur_value1
19279WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
19280
19281# check single-4 success: 	1
19282SELECT MAX(f_int1) INTO @cur_value FROM t1;
19283DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
19284
19285# check single-5 success: 	1
19286DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
19287
19288# check single-6 success: 	1
19289INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
19290
19291# check single-7 success: 	1
19292DELETE FROM t1 WHERE f_charbig = '#2147483647##';
19293DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
19294INSERT t1 SET f_int1 = 0 , f_int2 = 0,
19295f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
19296f_charbig = '#NULL#';
19297INSERT INTO t1
19298SET f_int1 = NULL , f_int2 = -@max_row,
19299f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
19300f_charbig = '#NULL#';
19301# check null success:    1
19302
19303# check null-1 success: 	1
19304UPDATE t1 SET f_int1 = -@max_row
19305WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
19306AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
19307
19308# check null-2 success: 	1
19309UPDATE t1 SET f_int1 = NULL
19310WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
19311AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
19312
19313# check null-3 success: 	1
19314DELETE FROM t1
19315WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
19316AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
19317
19318# check null-4 success: 	1
19319DELETE FROM t1
19320WHERE f_int1 = 0 AND f_int2 = 0
19321AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
19322AND f_charbig = '#NULL#';
19323INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19324SELECT f_int1, f_int1, '', '', 'was inserted'
19325   FROM t0_template source_tab
19326WHERE MOD(f_int1,3) = 0
19327AND f_int1 BETWEEN @max_row_div2 AND @max_row
19328ON DUPLICATE KEY
19329UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
19330f_int2 = 2 * @max_row + source_tab.f_int1,
19331f_charbig = 'was updated';
19332
19333# check unique-1-a success: 	1
19334
19335# check unique-1-b success: 	1
19336DELETE FROM t1 WHERE f_charbig = 'was inserted';
19337UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19338f_int2 = CAST(f_char1 AS SIGNED INT),
19339f_charbig = CONCAT('===',f_char1,'===')
19340WHERE f_charbig = 'was updated';
19341REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19342SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
19343   FROM t0_template source_tab
19344WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
19345
19346# check replace success: 	1
19347DELETE FROM t1
19348WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
19349DELETE FROM t1
19350WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
19351f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
19352UPDATE t1 SET f_int2 = f_int1,
19353f_char1 = CAST(f_int1 AS CHAR),
19354f_char2 = CAST(f_int1 AS CHAR),
19355f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
19356WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
19357SET AUTOCOMMIT= 0;
19358INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19359SELECT f_int1, f_int1, '', '', 'was inserted'
19360FROM t0_template source_tab
19361WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
19362
19363# check transactions-1 success: 	1
19364COMMIT WORK;
19365
19366# check transactions-2 success: 	1
19367ROLLBACK WORK;
19368
19369# check transactions-3 success: 	1
19370DELETE FROM t1 WHERE f_charbig = 'was inserted';
19371COMMIT WORK;
19372ROLLBACK WORK;
19373
19374# check transactions-4 success: 	1
19375INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19376SELECT f_int1, f_int1, '', '', 'was inserted'
19377FROM t0_template source_tab
19378WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
19379
19380# check transactions-5 success: 	1
19381ROLLBACK WORK;
19382Warnings:
19383Warning	1196	Some non-transactional changed tables couldn't be rolled back
19384
19385# check transactions-6 success: 	1
19386# INFO: Storage engine used for t1 seems to be not transactional.
19387COMMIT;
19388
19389# check transactions-7 success: 	1
19390DELETE FROM t1 WHERE f_charbig = 'was inserted';
19391COMMIT WORK;
19392SET @@session.sql_mode = 'traditional';
19393Warnings:
19394Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
19395SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
19396INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19397SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
19398'', '', 'was inserted' FROM t0_template
19399WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
19400ERROR 22012: Division by 0
19401COMMIT;
19402
19403# check transactions-8 success: 	1
19404# INFO: Storage engine used for t1 seems to be unable to revert
19405#       changes made by the failing statement.
19406SET @@session.sql_mode = '';
19407Warnings:
19408Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
19409SET AUTOCOMMIT= 1;
19410DELETE FROM t1 WHERE f_charbig = 'was inserted';
19411COMMIT WORK;
19412UPDATE t1 SET f_charbig = REPEAT('b', 1000);
19413
19414# check special-1 success: 	1
19415UPDATE t1 SET f_charbig = '';
19416
19417# check special-2 success: 	1
19418UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
19419INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
19420SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
19421WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19422INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19423SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19424'just inserted' FROM t0_template
19425WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19426CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
19427BEGIN
19428UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19429f_charbig = 'updated by trigger'
19430      WHERE f_int1 = new.f_int1;
19431END|
19432INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19433SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
19434WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19435
19436# check trigger-1 success: 	1
19437DROP TRIGGER trg_1;
19438UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19439f_int2 = CAST(f_char1 AS SIGNED INT),
19440f_charbig = 'just inserted'
19441   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19442DELETE FROM t0_aux
19443WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19444INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19445SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19446'just inserted' FROM t0_template
19447WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19448CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
19449BEGIN
19450UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19451f_charbig = 'updated by trigger'
19452      WHERE f_int1 = new.f_int1;
19453END|
19454INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19455SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
19456WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19457
19458# check trigger-2 success: 	1
19459DROP TRIGGER trg_1;
19460UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19461f_int2 = CAST(f_char1 AS SIGNED INT),
19462f_charbig = 'just inserted'
19463   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19464DELETE FROM t0_aux
19465WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19466INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19467SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19468'just inserted' FROM t0_template
19469WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19470CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
19471BEGIN
19472UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19473f_charbig = 'updated by trigger'
19474      WHERE f_int1 = new.f_int1;
19475END|
19476UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
19477WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19478
19479# check trigger-3 success: 	1
19480DROP TRIGGER trg_1;
19481UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19482f_int2 = CAST(f_char1 AS SIGNED INT),
19483f_charbig = 'just inserted'
19484   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19485DELETE FROM t0_aux
19486WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19487INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19488SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19489'just inserted' FROM t0_template
19490WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19491CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
19492BEGIN
19493UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19494f_charbig = 'updated by trigger'
19495      WHERE f_int1 = - old.f_int1;
19496END|
19497UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
19498WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19499
19500# check trigger-4 success: 	1
19501DROP TRIGGER trg_1;
19502UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19503f_int2 = CAST(f_char1 AS SIGNED INT),
19504f_charbig = 'just inserted'
19505   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19506DELETE FROM t0_aux
19507WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19508INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19509SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19510'just inserted' FROM t0_template
19511WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19512CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
19513BEGIN
19514UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19515f_charbig = 'updated by trigger'
19516      WHERE f_int1 = new.f_int1;
19517END|
19518UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
19519WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19520
19521# check trigger-5 success: 	1
19522DROP TRIGGER trg_1;
19523UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19524f_int2 = CAST(f_char1 AS SIGNED INT),
19525f_charbig = 'just inserted'
19526   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19527DELETE FROM t0_aux
19528WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19529INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19530SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19531'just inserted' FROM t0_template
19532WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19533CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
19534BEGIN
19535UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19536f_charbig = 'updated by trigger'
19537      WHERE f_int1 = - old.f_int1;
19538END|
19539UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
19540WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19541
19542# check trigger-6 success: 	1
19543DROP TRIGGER trg_1;
19544UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19545f_int2 = CAST(f_char1 AS SIGNED INT),
19546f_charbig = 'just inserted'
19547   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19548DELETE FROM t0_aux
19549WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19550INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19551SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19552'just inserted' FROM t0_template
19553WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19554CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
19555BEGIN
19556UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19557f_charbig = 'updated by trigger'
19558      WHERE f_int1 = - old.f_int1;
19559END|
19560DELETE FROM t0_aux
19561WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19562
19563# check trigger-7 success: 	1
19564DROP TRIGGER trg_1;
19565UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19566f_int2 = CAST(f_char1 AS SIGNED INT),
19567f_charbig = 'just inserted'
19568   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19569DELETE FROM t0_aux
19570WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19571INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19572SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19573'just inserted' FROM t0_template
19574WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19575CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
19576BEGIN
19577UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19578f_charbig = 'updated by trigger'
19579      WHERE f_int1 = - old.f_int1;
19580END|
19581DELETE FROM t0_aux
19582WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19583
19584# check trigger-8 success: 	1
19585DROP TRIGGER trg_1;
19586UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19587f_int2 = CAST(f_char1 AS SIGNED INT),
19588f_charbig = 'just inserted'
19589   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19590DELETE FROM t0_aux
19591WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19592DELETE FROM t1
19593WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19594CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
19595BEGIN
19596SET new.f_int1 = old.f_int1 + @max_row,
19597new.f_int2 = old.f_int2 - @max_row,
19598new.f_charbig = '####updated per update trigger####';
19599END|
19600UPDATE t1
19601SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
19602f_charbig = '####updated per update statement itself####';
19603Warnings:
19604Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
19605
19606# check trigger-9 success: 	1
19607DROP TRIGGER trg_2;
19608UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19609f_int2 = CAST(f_char1 AS SIGNED INT),
19610f_charbig = CONCAT('===',f_char1,'===');
19611Warnings:
19612Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
19613CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
19614BEGIN
19615SET new.f_int1 = new.f_int1 + @max_row,
19616new.f_int2 = new.f_int2 - @max_row,
19617new.f_charbig = '####updated per update trigger####';
19618END|
19619UPDATE t1
19620SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
19621f_charbig = '####updated per update statement itself####';
19622Warnings:
19623Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
19624
19625# check trigger-10 success: 	1
19626DROP TRIGGER trg_2;
19627UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19628f_int2 = CAST(f_char1 AS SIGNED INT),
19629f_charbig = CONCAT('===',f_char1,'===');
19630Warnings:
19631Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
19632CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
19633BEGIN
19634SET new.f_int1 = @my_max1 + @counter,
19635new.f_int2 = @my_min2 - @counter,
19636new.f_charbig = '####updated per insert trigger####';
19637SET @counter = @counter + 1;
19638END|
19639SET @counter = 1;
19640SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
19641Warnings:
19642Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
19643INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19644SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
19645CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
19646WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
19647ORDER BY f_int1;
19648DROP TRIGGER trg_3;
19649
19650# check trigger-11 success: 	1
19651Warnings:
19652Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
19653DELETE FROM t1
19654WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
19655AND f_int2 <> CAST(f_char1 AS SIGNED INT)
19656AND f_charbig = '####updated per insert trigger####';
19657CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
19658BEGIN
19659SET new.f_int1 = @my_max1 + @counter,
19660new.f_int2 = @my_min2 - @counter,
19661new.f_charbig = '####updated per insert trigger####';
19662SET @counter = @counter + 1;
19663END|
19664SET @counter = 1;
19665SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
19666Warnings:
19667Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
19668INSERT INTO t1 (f_char1, f_char2, f_charbig)
19669SELECT CAST(f_int1 AS CHAR),
19670CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
19671WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
19672ORDER BY f_int1;
19673DROP TRIGGER trg_3;
19674
19675# check trigger-12 success: 	1
19676Warnings:
19677Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
19678DELETE FROM t1
19679WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
19680AND f_int2 <> CAST(f_char1 AS SIGNED INT)
19681AND f_charbig = '####updated per insert trigger####';
19682ANALYZE  TABLE t1;
19683Table	Op	Msg_type	Msg_text
19684test.t1	analyze	status	OK
19685test.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.
19686CHECK    TABLE t1 EXTENDED;
19687Table	Op	Msg_type	Msg_text
19688test.t1	check	status	OK
19689test.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.
19690CHECKSUM TABLE t1 EXTENDED;
19691Table	Checksum
19692test.t1	<some_value>
19693OPTIMIZE TABLE t1;
19694Table	Op	Msg_type	Msg_text
19695test.t1	optimize	status	OK
19696test.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.
19697# check layout success:    1
19698REPAIR   TABLE t1 EXTENDED;
19699Table	Op	Msg_type	Msg_text
19700test.t1	repair	status	OK
19701test.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.
19702# check layout success:    1
19703TRUNCATE t1;
19704Warnings:
19705Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
19706
19707# check TRUNCATE success: 	1
19708# check layout success:    1
19709# End usability test (inc/partition_check.inc)
19710DROP TABLE t1;
19711CREATE TABLE t1 (
19712f_int1 INTEGER,
19713f_int2 INTEGER,
19714f_char1 CHAR(20),
19715f_char2 CHAR(20),
19716f_charbig VARCHAR(1000)
19717, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
19718)
19719PARTITION BY RANGE(f_int1)
19720(PARTITION parta VALUES LESS THAN (0)
19721INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
19722PARTITION partb VALUES LESS THAN (5)
19723DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir',
19724PARTITION partc VALUES LESS THAN (10)
19725DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
19726INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
19727PARTITION partd VALUES LESS THAN (10 + 5),
19728PARTITION parte VALUES LESS THAN (20)
19729DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir',
19730PARTITION partf VALUES LESS THAN (2147483646)
19731INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir');
19732Warnings:
19733Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
19734INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
19735SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
19736Warnings:
19737Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
19738# Start usability test (inc/partition_check.inc)
19739create_command
19740SHOW CREATE TABLE t1;
19741Table	Create Table
19742t1	CREATE TABLE `t1` (
19743  `f_int1` int(11) DEFAULT NULL,
19744  `f_int2` int(11) DEFAULT NULL,
19745  `f_char1` char(20) DEFAULT NULL,
19746  `f_char2` char(20) DEFAULT NULL,
19747  `f_charbig` varchar(1000) DEFAULT NULL,
19748  UNIQUE KEY `uidx1` (`f_int1`,`f_int2`),
19749  UNIQUE KEY `uidx2` (`f_int2`,`f_int1`)
19750) ENGINE=MyISAM DEFAULT CHARSET=latin1
19751/*!50100 PARTITION BY RANGE (f_int1)
19752(PARTITION parta VALUES LESS THAN (0) INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
19753 PARTITION partb VALUES LESS THAN (5) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' ENGINE = MyISAM,
19754 PARTITION partc VALUES LESS THAN (10) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
19755 PARTITION partd VALUES LESS THAN (15) ENGINE = MyISAM,
19756 PARTITION parte VALUES LESS THAN (20) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' ENGINE = MyISAM,
19757 PARTITION partf VALUES LESS THAN (2147483646) INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM) */
19758
19759unified filelist
19760t1#P#parta.MYD
19761t1#P#parta.MYI
19762t1#P#partb.MYD
19763t1#P#partb.MYI
19764t1#P#partc.MYD
19765t1#P#partc.MYI
19766t1#P#partd.MYD
19767t1#P#partd.MYI
19768t1#P#parte.MYD
19769t1#P#parte.MYI
19770t1#P#partf.MYD
19771t1#P#partf.MYI
19772t1.frm
19773t1.par
19774t1#P#partb.MYD
19775t1#P#partc.MYD
19776t1#P#parte.MYD
19777t1#P#parta.MYI
19778t1#P#partc.MYI
19779t1#P#partf.MYI
19780
19781# check prerequisites-1 success:    1
19782# check COUNT(*) success:    1
19783# check MIN/MAX(f_int1) success:    1
19784# check MIN/MAX(f_int2) success:    1
19785INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19786SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
19787CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
19788WHERE f_int1 IN (2,3);
19789ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
19790# check prerequisites-3 success:    1
19791# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
19792INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19793SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
19794CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
19795WHERE f_int1 IN (2,3);
19796DELETE FROM t1 WHERE f_charbig = 'delete me';
19797INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19798SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
19799CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
19800WHERE f_int1 IN (2,3);
19801DELETE FROM t1 WHERE f_charbig = 'delete me';
19802# check read via f_int1 success: 1
19803# check read via f_int2 success: 1
19804
19805# check multiple-1 success: 	1
19806DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
19807
19808# check multiple-2 success: 	1
19809INSERT INTO t1 SELECT * FROM t0_template
19810WHERE MOD(f_int1,3) = 0;
19811
19812# check multiple-3 success: 	1
19813UPDATE t1 SET f_int1 = f_int1 + @max_row
19814WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
19815AND @max_row_div2 + @max_row_div4;
19816
19817# check multiple-4 success: 	1
19818DELETE FROM t1
19819WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
19820AND @max_row_div2 + @max_row_div4 + @max_row;
19821
19822# check multiple-5 success: 	1
19823SELECT COUNT(*) INTO @try_count FROM t0_template
19824WHERE MOD(f_int1,3) = 0
19825AND f_int1 BETWEEN @max_row_div2 AND @max_row;
19826SELECT COUNT(*) INTO @clash_count
19827FROM t1 INNER JOIN t0_template USING(f_int1)
19828WHERE MOD(f_int1,3) = 0
19829AND f_int1 BETWEEN @max_row_div2 AND @max_row;
19830SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
19831INSERT INTO t1
19832SET f_int1 = @cur_value , f_int2 = @cur_value,
19833f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
19834f_charbig = '#SINGLE#';
19835
19836# check single-1 success: 	1
19837SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
19838INSERT INTO t1
19839SET f_int1 = @cur_value , f_int2 = @cur_value,
19840f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
19841f_charbig = '#SINGLE#';
19842
19843# check single-2 success: 	1
19844SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
19845SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
19846UPDATE t1 SET f_int1 = @cur_value2
19847WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
19848
19849# check single-3 success: 	1
19850SET @cur_value1= -1;
19851SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
19852UPDATE t1 SET f_int1 = @cur_value1
19853WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
19854
19855# check single-4 success: 	1
19856SELECT MAX(f_int1) INTO @cur_value FROM t1;
19857DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
19858
19859# check single-5 success: 	1
19860DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
19861
19862# check single-6 success: 	1
19863INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
19864ERROR HY000: Table has no partition for value 2147483647
19865DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
19866INSERT t1 SET f_int1 = 0 , f_int2 = 0,
19867f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
19868f_charbig = '#NULL#';
19869INSERT INTO t1
19870SET f_int1 = NULL , f_int2 = -@max_row,
19871f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
19872f_charbig = '#NULL#';
19873# check null success:    1
19874
19875# check null-1 success: 	1
19876UPDATE t1 SET f_int1 = -@max_row
19877WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
19878AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
19879
19880# check null-2 success: 	1
19881UPDATE t1 SET f_int1 = NULL
19882WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
19883AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
19884
19885# check null-3 success: 	1
19886DELETE FROM t1
19887WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
19888AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
19889
19890# check null-4 success: 	1
19891DELETE FROM t1
19892WHERE f_int1 = 0 AND f_int2 = 0
19893AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
19894AND f_charbig = '#NULL#';
19895INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19896SELECT f_int1, f_int1, '', '', 'was inserted'
19897   FROM t0_template source_tab
19898WHERE MOD(f_int1,3) = 0
19899AND f_int1 BETWEEN @max_row_div2 AND @max_row
19900ON DUPLICATE KEY
19901UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
19902f_int2 = 2 * @max_row + source_tab.f_int1,
19903f_charbig = 'was updated';
19904
19905# check unique-1-a success: 	1
19906
19907# check unique-1-b success: 	1
19908DELETE FROM t1 WHERE f_charbig = 'was inserted';
19909UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19910f_int2 = CAST(f_char1 AS SIGNED INT),
19911f_charbig = CONCAT('===',f_char1,'===')
19912WHERE f_charbig = 'was updated';
19913REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19914SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
19915   FROM t0_template source_tab
19916WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
19917
19918# check replace success: 	1
19919DELETE FROM t1
19920WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
19921DELETE FROM t1
19922WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
19923f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
19924UPDATE t1 SET f_int2 = f_int1,
19925f_char1 = CAST(f_int1 AS CHAR),
19926f_char2 = CAST(f_int1 AS CHAR),
19927f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
19928WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
19929SET AUTOCOMMIT= 0;
19930INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19931SELECT f_int1, f_int1, '', '', 'was inserted'
19932FROM t0_template source_tab
19933WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
19934
19935# check transactions-1 success: 	1
19936COMMIT WORK;
19937
19938# check transactions-2 success: 	1
19939ROLLBACK WORK;
19940
19941# check transactions-3 success: 	1
19942DELETE FROM t1 WHERE f_charbig = 'was inserted';
19943COMMIT WORK;
19944ROLLBACK WORK;
19945
19946# check transactions-4 success: 	1
19947INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19948SELECT f_int1, f_int1, '', '', 'was inserted'
19949FROM t0_template source_tab
19950WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
19951
19952# check transactions-5 success: 	1
19953ROLLBACK WORK;
19954Warnings:
19955Warning	1196	Some non-transactional changed tables couldn't be rolled back
19956
19957# check transactions-6 success: 	1
19958# INFO: Storage engine used for t1 seems to be not transactional.
19959COMMIT;
19960
19961# check transactions-7 success: 	1
19962DELETE FROM t1 WHERE f_charbig = 'was inserted';
19963COMMIT WORK;
19964SET @@session.sql_mode = 'traditional';
19965Warnings:
19966Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
19967SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
19968INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19969SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
19970'', '', 'was inserted' FROM t0_template
19971WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
19972ERROR 22012: Division by 0
19973COMMIT;
19974
19975# check transactions-8 success: 	1
19976# INFO: Storage engine used for t1 seems to be unable to revert
19977#       changes made by the failing statement.
19978SET @@session.sql_mode = '';
19979Warnings:
19980Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
19981SET AUTOCOMMIT= 1;
19982DELETE FROM t1 WHERE f_charbig = 'was inserted';
19983COMMIT WORK;
19984UPDATE t1 SET f_charbig = REPEAT('b', 1000);
19985
19986# check special-1 success: 	1
19987UPDATE t1 SET f_charbig = '';
19988
19989# check special-2 success: 	1
19990UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
19991INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
19992SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
19993WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19994INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19995SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19996'just inserted' FROM t0_template
19997WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19998CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
19999BEGIN
20000UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20001f_charbig = 'updated by trigger'
20002      WHERE f_int1 = new.f_int1;
20003END|
20004INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20005SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
20006WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20007
20008# check trigger-1 success: 	1
20009DROP TRIGGER trg_1;
20010UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20011f_int2 = CAST(f_char1 AS SIGNED INT),
20012f_charbig = 'just inserted'
20013   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20014DELETE FROM t0_aux
20015WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20016INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20017SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20018'just inserted' FROM t0_template
20019WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20020CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
20021BEGIN
20022UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20023f_charbig = 'updated by trigger'
20024      WHERE f_int1 = new.f_int1;
20025END|
20026INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20027SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
20028WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20029
20030# check trigger-2 success: 	1
20031DROP TRIGGER trg_1;
20032UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20033f_int2 = CAST(f_char1 AS SIGNED INT),
20034f_charbig = 'just inserted'
20035   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20036DELETE FROM t0_aux
20037WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20038INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20039SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20040'just inserted' FROM t0_template
20041WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20042CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
20043BEGIN
20044UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20045f_charbig = 'updated by trigger'
20046      WHERE f_int1 = new.f_int1;
20047END|
20048UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
20049WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20050
20051# check trigger-3 success: 	1
20052DROP TRIGGER trg_1;
20053UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20054f_int2 = CAST(f_char1 AS SIGNED INT),
20055f_charbig = 'just inserted'
20056   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20057DELETE FROM t0_aux
20058WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20059INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20060SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20061'just inserted' FROM t0_template
20062WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20063CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
20064BEGIN
20065UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20066f_charbig = 'updated by trigger'
20067      WHERE f_int1 = - old.f_int1;
20068END|
20069UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
20070WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20071
20072# check trigger-4 success: 	1
20073DROP TRIGGER trg_1;
20074UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20075f_int2 = CAST(f_char1 AS SIGNED INT),
20076f_charbig = 'just inserted'
20077   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20078DELETE FROM t0_aux
20079WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20080INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20081SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20082'just inserted' FROM t0_template
20083WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20084CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
20085BEGIN
20086UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20087f_charbig = 'updated by trigger'
20088      WHERE f_int1 = new.f_int1;
20089END|
20090UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
20091WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20092
20093# check trigger-5 success: 	1
20094DROP TRIGGER trg_1;
20095UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20096f_int2 = CAST(f_char1 AS SIGNED INT),
20097f_charbig = 'just inserted'
20098   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20099DELETE FROM t0_aux
20100WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20101INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20102SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20103'just inserted' FROM t0_template
20104WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20105CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
20106BEGIN
20107UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20108f_charbig = 'updated by trigger'
20109      WHERE f_int1 = - old.f_int1;
20110END|
20111UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
20112WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20113
20114# check trigger-6 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 BEFORE DELETE 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 = - old.f_int1;
20131END|
20132DELETE FROM t0_aux
20133WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20134
20135# check trigger-7 success: 	1
20136DROP TRIGGER trg_1;
20137UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20138f_int2 = CAST(f_char1 AS SIGNED INT),
20139f_charbig = 'just inserted'
20140   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20141DELETE FROM t0_aux
20142WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20143INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20144SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20145'just inserted' FROM t0_template
20146WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20147CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
20148BEGIN
20149UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20150f_charbig = 'updated by trigger'
20151      WHERE f_int1 = - old.f_int1;
20152END|
20153DELETE FROM t0_aux
20154WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20155
20156# check trigger-8 success: 	1
20157DROP TRIGGER trg_1;
20158UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20159f_int2 = CAST(f_char1 AS SIGNED INT),
20160f_charbig = 'just inserted'
20161   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20162DELETE FROM t0_aux
20163WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20164DELETE FROM t1
20165WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20166CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
20167BEGIN
20168SET new.f_int1 = old.f_int1 + @max_row,
20169new.f_int2 = old.f_int2 - @max_row,
20170new.f_charbig = '####updated per update trigger####';
20171END|
20172UPDATE t1
20173SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
20174f_charbig = '####updated per update statement itself####';
20175Warnings:
20176Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
20177
20178# check trigger-9 success: 	1
20179DROP TRIGGER trg_2;
20180UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20181f_int2 = CAST(f_char1 AS SIGNED INT),
20182f_charbig = CONCAT('===',f_char1,'===');
20183Warnings:
20184Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
20185CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
20186BEGIN
20187SET new.f_int1 = new.f_int1 + @max_row,
20188new.f_int2 = new.f_int2 - @max_row,
20189new.f_charbig = '####updated per update trigger####';
20190END|
20191UPDATE t1
20192SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
20193f_charbig = '####updated per update statement itself####';
20194Warnings:
20195Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
20196
20197# check trigger-10 success: 	1
20198DROP TRIGGER trg_2;
20199UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20200f_int2 = CAST(f_char1 AS SIGNED INT),
20201f_charbig = CONCAT('===',f_char1,'===');
20202Warnings:
20203Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
20204CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
20205BEGIN
20206SET new.f_int1 = @my_max1 + @counter,
20207new.f_int2 = @my_min2 - @counter,
20208new.f_charbig = '####updated per insert trigger####';
20209SET @counter = @counter + 1;
20210END|
20211SET @counter = 1;
20212SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
20213Warnings:
20214Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
20215INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20216SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
20217CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
20218WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
20219ORDER BY f_int1;
20220DROP TRIGGER trg_3;
20221
20222# check trigger-11 success: 	1
20223Warnings:
20224Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
20225DELETE FROM t1
20226WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
20227AND f_int2 <> CAST(f_char1 AS SIGNED INT)
20228AND f_charbig = '####updated per insert trigger####';
20229CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
20230BEGIN
20231SET new.f_int1 = @my_max1 + @counter,
20232new.f_int2 = @my_min2 - @counter,
20233new.f_charbig = '####updated per insert trigger####';
20234SET @counter = @counter + 1;
20235END|
20236SET @counter = 1;
20237SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
20238Warnings:
20239Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
20240INSERT INTO t1 (f_char1, f_char2, f_charbig)
20241SELECT CAST(f_int1 AS CHAR),
20242CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
20243WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
20244ORDER BY f_int1;
20245DROP TRIGGER trg_3;
20246
20247# check trigger-12 success: 	1
20248Warnings:
20249Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
20250DELETE FROM t1
20251WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
20252AND f_int2 <> CAST(f_char1 AS SIGNED INT)
20253AND f_charbig = '####updated per insert trigger####';
20254ANALYZE  TABLE t1;
20255Table	Op	Msg_type	Msg_text
20256test.t1	analyze	status	OK
20257test.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.
20258CHECK    TABLE t1 EXTENDED;
20259Table	Op	Msg_type	Msg_text
20260test.t1	check	status	OK
20261test.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.
20262CHECKSUM TABLE t1 EXTENDED;
20263Table	Checksum
20264test.t1	<some_value>
20265OPTIMIZE TABLE t1;
20266Table	Op	Msg_type	Msg_text
20267test.t1	optimize	status	OK
20268test.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.
20269# check layout success:    1
20270REPAIR   TABLE t1 EXTENDED;
20271Table	Op	Msg_type	Msg_text
20272test.t1	repair	status	OK
20273test.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.
20274# check layout success:    1
20275TRUNCATE t1;
20276Warnings:
20277Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
20278
20279# check TRUNCATE success: 	1
20280# check layout success:    1
20281# End usability test (inc/partition_check.inc)
20282DROP TABLE t1;
20283CREATE TABLE t1 (
20284f_int1 INTEGER,
20285f_int2 INTEGER,
20286f_char1 CHAR(20),
20287f_char2 CHAR(20),
20288f_charbig VARCHAR(1000)
20289, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
20290)
20291PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
20292(PARTITION parta VALUES LESS THAN (0)
20293INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
20294PARTITION partb VALUES LESS THAN (5)
20295DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir',
20296PARTITION partc VALUES LESS THAN (10),
20297PARTITION partd VALUES LESS THAN (2147483646)
20298DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
20299INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir');
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.
20302INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
20303SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
20304Warnings:
20305Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
20306# Start usability test (inc/partition_check.inc)
20307create_command
20308SHOW CREATE TABLE t1;
20309Table	Create Table
20310t1	CREATE TABLE `t1` (
20311  `f_int1` int(11) DEFAULT NULL,
20312  `f_int2` int(11) DEFAULT NULL,
20313  `f_char1` char(20) DEFAULT NULL,
20314  `f_char2` char(20) DEFAULT NULL,
20315  `f_charbig` varchar(1000) DEFAULT NULL,
20316  UNIQUE KEY `uidx1` (`f_int1`,`f_int2`),
20317  UNIQUE KEY `uidx2` (`f_int2`,`f_int1`)
20318) ENGINE=MyISAM DEFAULT CHARSET=latin1
20319/*!50100 PARTITION BY RANGE (f_int1 DIV 2)
20320SUBPARTITION BY HASH (f_int1)
20321SUBPARTITIONS 2
20322(PARTITION parta VALUES LESS THAN (0) INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
20323 PARTITION partb VALUES LESS THAN (5) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' ENGINE = MyISAM,
20324 PARTITION partc VALUES LESS THAN (10) ENGINE = MyISAM,
20325 PARTITION partd VALUES LESS THAN (2147483646) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM) */
20326
20327unified filelist
20328t1#P#parta#SP#partasp0.MYD
20329t1#P#parta#SP#partasp0.MYI
20330t1#P#parta#SP#partasp1.MYD
20331t1#P#parta#SP#partasp1.MYI
20332t1#P#partb#SP#partbsp0.MYD
20333t1#P#partb#SP#partbsp0.MYI
20334t1#P#partb#SP#partbsp1.MYD
20335t1#P#partb#SP#partbsp1.MYI
20336t1#P#partc#SP#partcsp0.MYD
20337t1#P#partc#SP#partcsp0.MYI
20338t1#P#partc#SP#partcsp1.MYD
20339t1#P#partc#SP#partcsp1.MYI
20340t1#P#partd#SP#partdsp0.MYD
20341t1#P#partd#SP#partdsp0.MYI
20342t1#P#partd#SP#partdsp1.MYD
20343t1#P#partd#SP#partdsp1.MYI
20344t1.frm
20345t1.par
20346t1#P#partb#SP#partbsp0.MYD
20347t1#P#partb#SP#partbsp1.MYD
20348t1#P#partd#SP#partdsp0.MYD
20349t1#P#partd#SP#partdsp1.MYD
20350t1#P#parta#SP#partasp0.MYI
20351t1#P#parta#SP#partasp1.MYI
20352t1#P#partd#SP#partdsp0.MYI
20353t1#P#partd#SP#partdsp1.MYI
20354
20355# check prerequisites-1 success:    1
20356# check COUNT(*) success:    1
20357# check MIN/MAX(f_int1) success:    1
20358# check MIN/MAX(f_int2) success:    1
20359INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20360SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
20361CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
20362WHERE f_int1 IN (2,3);
20363ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
20364# check prerequisites-3 success:    1
20365# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
20366INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20367SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
20368CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
20369WHERE f_int1 IN (2,3);
20370DELETE FROM t1 WHERE f_charbig = 'delete me';
20371INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20372SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
20373CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
20374WHERE f_int1 IN (2,3);
20375DELETE FROM t1 WHERE f_charbig = 'delete me';
20376# check read via f_int1 success: 1
20377# check read via f_int2 success: 1
20378
20379# check multiple-1 success: 	1
20380DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
20381
20382# check multiple-2 success: 	1
20383INSERT INTO t1 SELECT * FROM t0_template
20384WHERE MOD(f_int1,3) = 0;
20385
20386# check multiple-3 success: 	1
20387UPDATE t1 SET f_int1 = f_int1 + @max_row
20388WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
20389AND @max_row_div2 + @max_row_div4;
20390
20391# check multiple-4 success: 	1
20392DELETE FROM t1
20393WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
20394AND @max_row_div2 + @max_row_div4 + @max_row;
20395
20396# check multiple-5 success: 	1
20397SELECT COUNT(*) INTO @try_count FROM t0_template
20398WHERE MOD(f_int1,3) = 0
20399AND f_int1 BETWEEN @max_row_div2 AND @max_row;
20400SELECT COUNT(*) INTO @clash_count
20401FROM t1 INNER JOIN t0_template USING(f_int1)
20402WHERE MOD(f_int1,3) = 0
20403AND f_int1 BETWEEN @max_row_div2 AND @max_row;
20404SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
20405INSERT INTO t1
20406SET f_int1 = @cur_value , f_int2 = @cur_value,
20407f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
20408f_charbig = '#SINGLE#';
20409
20410# check single-1 success: 	1
20411SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
20412INSERT INTO t1
20413SET f_int1 = @cur_value , f_int2 = @cur_value,
20414f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
20415f_charbig = '#SINGLE#';
20416
20417# check single-2 success: 	1
20418SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
20419SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
20420UPDATE t1 SET f_int1 = @cur_value2
20421WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
20422
20423# check single-3 success: 	1
20424SET @cur_value1= -1;
20425SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
20426UPDATE t1 SET f_int1 = @cur_value1
20427WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
20428
20429# check single-4 success: 	1
20430SELECT MAX(f_int1) INTO @cur_value FROM t1;
20431DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
20432
20433# check single-5 success: 	1
20434DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
20435
20436# check single-6 success: 	1
20437INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
20438
20439# check single-7 success: 	1
20440DELETE FROM t1 WHERE f_charbig = '#2147483647##';
20441DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
20442INSERT t1 SET f_int1 = 0 , f_int2 = 0,
20443f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
20444f_charbig = '#NULL#';
20445INSERT INTO t1
20446SET f_int1 = NULL , f_int2 = -@max_row,
20447f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
20448f_charbig = '#NULL#';
20449# check null success:    1
20450
20451# check null-1 success: 	1
20452UPDATE t1 SET f_int1 = -@max_row
20453WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
20454AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
20455
20456# check null-2 success: 	1
20457UPDATE t1 SET f_int1 = NULL
20458WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
20459AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
20460
20461# check null-3 success: 	1
20462DELETE FROM t1
20463WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
20464AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
20465
20466# check null-4 success: 	1
20467DELETE FROM t1
20468WHERE f_int1 = 0 AND f_int2 = 0
20469AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
20470AND f_charbig = '#NULL#';
20471INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20472SELECT f_int1, f_int1, '', '', 'was inserted'
20473   FROM t0_template source_tab
20474WHERE MOD(f_int1,3) = 0
20475AND f_int1 BETWEEN @max_row_div2 AND @max_row
20476ON DUPLICATE KEY
20477UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
20478f_int2 = 2 * @max_row + source_tab.f_int1,
20479f_charbig = 'was updated';
20480
20481# check unique-1-a success: 	1
20482
20483# check unique-1-b success: 	1
20484DELETE FROM t1 WHERE f_charbig = 'was inserted';
20485UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20486f_int2 = CAST(f_char1 AS SIGNED INT),
20487f_charbig = CONCAT('===',f_char1,'===')
20488WHERE f_charbig = 'was updated';
20489REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20490SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
20491   FROM t0_template source_tab
20492WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
20493
20494# check replace success: 	1
20495DELETE FROM t1
20496WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
20497DELETE FROM t1
20498WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
20499f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
20500UPDATE t1 SET f_int2 = f_int1,
20501f_char1 = CAST(f_int1 AS CHAR),
20502f_char2 = CAST(f_int1 AS CHAR),
20503f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
20504WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
20505SET AUTOCOMMIT= 0;
20506INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20507SELECT f_int1, f_int1, '', '', 'was inserted'
20508FROM t0_template source_tab
20509WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
20510
20511# check transactions-1 success: 	1
20512COMMIT WORK;
20513
20514# check transactions-2 success: 	1
20515ROLLBACK WORK;
20516
20517# check transactions-3 success: 	1
20518DELETE FROM t1 WHERE f_charbig = 'was inserted';
20519COMMIT WORK;
20520ROLLBACK WORK;
20521
20522# check transactions-4 success: 	1
20523INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20524SELECT f_int1, f_int1, '', '', 'was inserted'
20525FROM t0_template source_tab
20526WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
20527
20528# check transactions-5 success: 	1
20529ROLLBACK WORK;
20530Warnings:
20531Warning	1196	Some non-transactional changed tables couldn't be rolled back
20532
20533# check transactions-6 success: 	1
20534# INFO: Storage engine used for t1 seems to be not transactional.
20535COMMIT;
20536
20537# check transactions-7 success: 	1
20538DELETE FROM t1 WHERE f_charbig = 'was inserted';
20539COMMIT WORK;
20540SET @@session.sql_mode = 'traditional';
20541Warnings:
20542Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
20543SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
20544INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20545SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
20546'', '', 'was inserted' FROM t0_template
20547WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
20548ERROR 22012: Division by 0
20549COMMIT;
20550
20551# check transactions-8 success: 	1
20552# INFO: Storage engine used for t1 seems to be unable to revert
20553#       changes made by the failing statement.
20554SET @@session.sql_mode = '';
20555Warnings:
20556Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
20557SET AUTOCOMMIT= 1;
20558DELETE FROM t1 WHERE f_charbig = 'was inserted';
20559COMMIT WORK;
20560UPDATE t1 SET f_charbig = REPEAT('b', 1000);
20561
20562# check special-1 success: 	1
20563UPDATE t1 SET f_charbig = '';
20564
20565# check special-2 success: 	1
20566UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
20567INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
20568SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
20569WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20570INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20571SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20572'just inserted' FROM t0_template
20573WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20574CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
20575BEGIN
20576UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20577f_charbig = 'updated by trigger'
20578      WHERE f_int1 = new.f_int1;
20579END|
20580INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20581SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
20582WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20583
20584# check trigger-1 success: 	1
20585DROP TRIGGER trg_1;
20586UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20587f_int2 = CAST(f_char1 AS SIGNED INT),
20588f_charbig = 'just inserted'
20589   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20590DELETE FROM t0_aux
20591WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20592INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20593SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20594'just inserted' FROM t0_template
20595WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20596CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
20597BEGIN
20598UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20599f_charbig = 'updated by trigger'
20600      WHERE f_int1 = new.f_int1;
20601END|
20602INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20603SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
20604WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20605
20606# check trigger-2 success: 	1
20607DROP TRIGGER trg_1;
20608UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20609f_int2 = CAST(f_char1 AS SIGNED INT),
20610f_charbig = 'just inserted'
20611   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20612DELETE FROM t0_aux
20613WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20614INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20615SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20616'just inserted' FROM t0_template
20617WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20618CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
20619BEGIN
20620UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20621f_charbig = 'updated by trigger'
20622      WHERE f_int1 = new.f_int1;
20623END|
20624UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
20625WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20626
20627# check trigger-3 success: 	1
20628DROP TRIGGER trg_1;
20629UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20630f_int2 = CAST(f_char1 AS SIGNED INT),
20631f_charbig = 'just inserted'
20632   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20633DELETE FROM t0_aux
20634WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20635INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20636SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20637'just inserted' FROM t0_template
20638WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20639CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
20640BEGIN
20641UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20642f_charbig = 'updated by trigger'
20643      WHERE f_int1 = - old.f_int1;
20644END|
20645UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
20646WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20647
20648# check trigger-4 success: 	1
20649DROP TRIGGER trg_1;
20650UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20651f_int2 = CAST(f_char1 AS SIGNED INT),
20652f_charbig = 'just inserted'
20653   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20654DELETE FROM t0_aux
20655WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20656INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20657SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20658'just inserted' FROM t0_template
20659WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20660CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
20661BEGIN
20662UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20663f_charbig = 'updated by trigger'
20664      WHERE f_int1 = new.f_int1;
20665END|
20666UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
20667WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20668
20669# check trigger-5 success: 	1
20670DROP TRIGGER trg_1;
20671UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20672f_int2 = CAST(f_char1 AS SIGNED INT),
20673f_charbig = 'just inserted'
20674   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20675DELETE FROM t0_aux
20676WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20677INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20678SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20679'just inserted' FROM t0_template
20680WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20681CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
20682BEGIN
20683UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20684f_charbig = 'updated by trigger'
20685      WHERE f_int1 = - old.f_int1;
20686END|
20687UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
20688WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20689
20690# check trigger-6 success: 	1
20691DROP TRIGGER trg_1;
20692UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20693f_int2 = CAST(f_char1 AS SIGNED INT),
20694f_charbig = 'just inserted'
20695   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20696DELETE FROM t0_aux
20697WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20698INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20699SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20700'just inserted' FROM t0_template
20701WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20702CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
20703BEGIN
20704UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20705f_charbig = 'updated by trigger'
20706      WHERE f_int1 = - old.f_int1;
20707END|
20708DELETE FROM t0_aux
20709WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20710
20711# check trigger-7 success: 	1
20712DROP TRIGGER trg_1;
20713UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20714f_int2 = CAST(f_char1 AS SIGNED INT),
20715f_charbig = 'just inserted'
20716   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20717DELETE FROM t0_aux
20718WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20719INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20720SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20721'just inserted' FROM t0_template
20722WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20723CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
20724BEGIN
20725UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20726f_charbig = 'updated by trigger'
20727      WHERE f_int1 = - old.f_int1;
20728END|
20729DELETE FROM t0_aux
20730WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20731
20732# check trigger-8 success: 	1
20733DROP TRIGGER trg_1;
20734UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20735f_int2 = CAST(f_char1 AS SIGNED INT),
20736f_charbig = 'just inserted'
20737   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20738DELETE FROM t0_aux
20739WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20740DELETE FROM t1
20741WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20742CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
20743BEGIN
20744SET new.f_int1 = old.f_int1 + @max_row,
20745new.f_int2 = old.f_int2 - @max_row,
20746new.f_charbig = '####updated per update trigger####';
20747END|
20748UPDATE t1
20749SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
20750f_charbig = '####updated per update statement itself####';
20751Warnings:
20752Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
20753
20754# check trigger-9 success: 	1
20755DROP TRIGGER trg_2;
20756UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20757f_int2 = CAST(f_char1 AS SIGNED INT),
20758f_charbig = CONCAT('===',f_char1,'===');
20759Warnings:
20760Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
20761CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
20762BEGIN
20763SET new.f_int1 = new.f_int1 + @max_row,
20764new.f_int2 = new.f_int2 - @max_row,
20765new.f_charbig = '####updated per update trigger####';
20766END|
20767UPDATE t1
20768SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
20769f_charbig = '####updated per update statement itself####';
20770Warnings:
20771Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
20772
20773# check trigger-10 success: 	1
20774DROP TRIGGER trg_2;
20775UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20776f_int2 = CAST(f_char1 AS SIGNED INT),
20777f_charbig = CONCAT('===',f_char1,'===');
20778Warnings:
20779Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
20780CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
20781BEGIN
20782SET new.f_int1 = @my_max1 + @counter,
20783new.f_int2 = @my_min2 - @counter,
20784new.f_charbig = '####updated per insert trigger####';
20785SET @counter = @counter + 1;
20786END|
20787SET @counter = 1;
20788SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
20789Warnings:
20790Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
20791INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20792SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
20793CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
20794WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
20795ORDER BY f_int1;
20796DROP TRIGGER trg_3;
20797
20798# check trigger-11 success: 	1
20799Warnings:
20800Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
20801DELETE FROM t1
20802WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
20803AND f_int2 <> CAST(f_char1 AS SIGNED INT)
20804AND f_charbig = '####updated per insert trigger####';
20805CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
20806BEGIN
20807SET new.f_int1 = @my_max1 + @counter,
20808new.f_int2 = @my_min2 - @counter,
20809new.f_charbig = '####updated per insert trigger####';
20810SET @counter = @counter + 1;
20811END|
20812SET @counter = 1;
20813SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
20814Warnings:
20815Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
20816INSERT INTO t1 (f_char1, f_char2, f_charbig)
20817SELECT CAST(f_int1 AS CHAR),
20818CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
20819WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
20820ORDER BY f_int1;
20821DROP TRIGGER trg_3;
20822
20823# check trigger-12 success: 	1
20824Warnings:
20825Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
20826DELETE FROM t1
20827WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
20828AND f_int2 <> CAST(f_char1 AS SIGNED INT)
20829AND f_charbig = '####updated per insert trigger####';
20830ANALYZE  TABLE t1;
20831Table	Op	Msg_type	Msg_text
20832test.t1	analyze	status	OK
20833test.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.
20834CHECK    TABLE t1 EXTENDED;
20835Table	Op	Msg_type	Msg_text
20836test.t1	check	status	OK
20837test.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.
20838CHECKSUM TABLE t1 EXTENDED;
20839Table	Checksum
20840test.t1	<some_value>
20841OPTIMIZE TABLE t1;
20842Table	Op	Msg_type	Msg_text
20843test.t1	optimize	status	OK
20844test.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.
20845# check layout success:    1
20846REPAIR   TABLE t1 EXTENDED;
20847Table	Op	Msg_type	Msg_text
20848test.t1	repair	status	OK
20849test.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.
20850# check layout success:    1
20851TRUNCATE t1;
20852Warnings:
20853Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
20854
20855# check TRUNCATE success: 	1
20856# check layout success:    1
20857# End usability test (inc/partition_check.inc)
20858DROP TABLE t1;
20859CREATE TABLE t1 (
20860f_int1 INTEGER,
20861f_int2 INTEGER,
20862f_char1 CHAR(20),
20863f_char2 CHAR(20),
20864f_charbig VARCHAR(1000)
20865, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
20866)
20867/*!50100 PARTITION BY RANGE(f_int1)
20868SUBPARTITION BY KEY(f_int1)
20869(PARTITION part1 VALUES LESS THAN (0) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
20870(SUBPARTITION subpart11,
20871SUBPARTITION subpart12),
20872PARTITION part2 VALUES LESS THAN (5) INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'
20873(SUBPARTITION subpart21,
20874SUBPARTITION subpart22),
20875PARTITION part3 VALUES LESS THAN (10) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'
20876(SUBPARTITION subpart31,
20877SUBPARTITION subpart32),
20878PARTITION part4 VALUES LESS THAN (2147483646)
20879(SUBPARTITION subpart41,
20880SUBPARTITION subpart42)) */;
20881Warnings:
20882Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
20883INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
20884SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
20885Warnings:
20886Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
20887# Start usability test (inc/partition_check.inc)
20888create_command
20889SHOW CREATE TABLE t1;
20890Table	Create Table
20891t1	CREATE TABLE `t1` (
20892  `f_int1` int(11) DEFAULT NULL,
20893  `f_int2` int(11) DEFAULT NULL,
20894  `f_char1` char(20) DEFAULT NULL,
20895  `f_char2` char(20) DEFAULT NULL,
20896  `f_charbig` varchar(1000) DEFAULT NULL,
20897  UNIQUE KEY `uidx1` (`f_int1`,`f_int2`),
20898  UNIQUE KEY `uidx2` (`f_int2`,`f_int1`)
20899) ENGINE=MyISAM DEFAULT CHARSET=latin1
20900/*!50100 PARTITION BY RANGE (f_int1)
20901SUBPARTITION BY KEY (f_int1)
20902(PARTITION part1 VALUES LESS THAN (0)
20903 (SUBPARTITION subpart11 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' ENGINE = MyISAM,
20904  SUBPARTITION subpart12 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' ENGINE = MyISAM),
20905 PARTITION part2 VALUES LESS THAN (5)
20906 (SUBPARTITION subpart21 INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
20907  SUBPARTITION subpart22 INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM),
20908 PARTITION part3 VALUES LESS THAN (10)
20909 (SUBPARTITION subpart31 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
20910  SUBPARTITION subpart32 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM),
20911 PARTITION part4 VALUES LESS THAN (2147483646)
20912 (SUBPARTITION subpart41 ENGINE = MyISAM,
20913  SUBPARTITION subpart42 ENGINE = MyISAM)) */
20914
20915unified filelist
20916t1#P#part1#SP#subpart11.MYD
20917t1#P#part1#SP#subpart11.MYI
20918t1#P#part1#SP#subpart12.MYD
20919t1#P#part1#SP#subpart12.MYI
20920t1#P#part2#SP#subpart21.MYD
20921t1#P#part2#SP#subpart21.MYI
20922t1#P#part2#SP#subpart22.MYD
20923t1#P#part2#SP#subpart22.MYI
20924t1#P#part3#SP#subpart31.MYD
20925t1#P#part3#SP#subpart31.MYI
20926t1#P#part3#SP#subpart32.MYD
20927t1#P#part3#SP#subpart32.MYI
20928t1#P#part4#SP#subpart41.MYD
20929t1#P#part4#SP#subpart41.MYI
20930t1#P#part4#SP#subpart42.MYD
20931t1#P#part4#SP#subpart42.MYI
20932t1.frm
20933t1.par
20934t1#P#part1#SP#subpart11.MYD
20935t1#P#part1#SP#subpart12.MYD
20936t1#P#part3#SP#subpart31.MYD
20937t1#P#part3#SP#subpart32.MYD
20938t1#P#part2#SP#subpart21.MYI
20939t1#P#part2#SP#subpart22.MYI
20940t1#P#part3#SP#subpart31.MYI
20941t1#P#part3#SP#subpart32.MYI
20942
20943# check prerequisites-1 success:    1
20944# check COUNT(*) success:    1
20945# check MIN/MAX(f_int1) success:    1
20946# check MIN/MAX(f_int2) success:    1
20947INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20948SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
20949CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
20950WHERE f_int1 IN (2,3);
20951ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
20952# check prerequisites-3 success:    1
20953# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
20954INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20955SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
20956CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
20957WHERE f_int1 IN (2,3);
20958DELETE FROM t1 WHERE f_charbig = 'delete me';
20959INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20960SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
20961CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
20962WHERE f_int1 IN (2,3);
20963DELETE FROM t1 WHERE f_charbig = 'delete me';
20964# check read via f_int1 success: 1
20965# check read via f_int2 success: 1
20966
20967# check multiple-1 success: 	1
20968DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
20969
20970# check multiple-2 success: 	1
20971INSERT INTO t1 SELECT * FROM t0_template
20972WHERE MOD(f_int1,3) = 0;
20973
20974# check multiple-3 success: 	1
20975UPDATE t1 SET f_int1 = f_int1 + @max_row
20976WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
20977AND @max_row_div2 + @max_row_div4;
20978
20979# check multiple-4 success: 	1
20980DELETE FROM t1
20981WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
20982AND @max_row_div2 + @max_row_div4 + @max_row;
20983
20984# check multiple-5 success: 	1
20985SELECT COUNT(*) INTO @try_count FROM t0_template
20986WHERE MOD(f_int1,3) = 0
20987AND f_int1 BETWEEN @max_row_div2 AND @max_row;
20988SELECT COUNT(*) INTO @clash_count
20989FROM t1 INNER JOIN t0_template USING(f_int1)
20990WHERE MOD(f_int1,3) = 0
20991AND f_int1 BETWEEN @max_row_div2 AND @max_row;
20992SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
20993INSERT INTO t1
20994SET f_int1 = @cur_value , f_int2 = @cur_value,
20995f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
20996f_charbig = '#SINGLE#';
20997
20998# check single-1 success: 	1
20999SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
21000INSERT INTO t1
21001SET f_int1 = @cur_value , f_int2 = @cur_value,
21002f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
21003f_charbig = '#SINGLE#';
21004
21005# check single-2 success: 	1
21006SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
21007SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
21008UPDATE t1 SET f_int1 = @cur_value2
21009WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
21010
21011# check single-3 success: 	1
21012SET @cur_value1= -1;
21013SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
21014UPDATE t1 SET f_int1 = @cur_value1
21015WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
21016
21017# check single-4 success: 	1
21018SELECT MAX(f_int1) INTO @cur_value FROM t1;
21019DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
21020
21021# check single-5 success: 	1
21022DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
21023
21024# check single-6 success: 	1
21025INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
21026ERROR HY000: Table has no partition for value 2147483647
21027DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
21028INSERT t1 SET f_int1 = 0 , f_int2 = 0,
21029f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
21030f_charbig = '#NULL#';
21031INSERT INTO t1
21032SET f_int1 = NULL , f_int2 = -@max_row,
21033f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
21034f_charbig = '#NULL#';
21035# check null success:    1
21036
21037# check null-1 success: 	1
21038UPDATE t1 SET f_int1 = -@max_row
21039WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
21040AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
21041
21042# check null-2 success: 	1
21043UPDATE t1 SET f_int1 = NULL
21044WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
21045AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
21046
21047# check null-3 success: 	1
21048DELETE FROM t1
21049WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
21050AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
21051
21052# check null-4 success: 	1
21053DELETE FROM t1
21054WHERE f_int1 = 0 AND f_int2 = 0
21055AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
21056AND f_charbig = '#NULL#';
21057INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21058SELECT f_int1, f_int1, '', '', 'was inserted'
21059   FROM t0_template source_tab
21060WHERE MOD(f_int1,3) = 0
21061AND f_int1 BETWEEN @max_row_div2 AND @max_row
21062ON DUPLICATE KEY
21063UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
21064f_int2 = 2 * @max_row + source_tab.f_int1,
21065f_charbig = 'was updated';
21066
21067# check unique-1-a success: 	1
21068
21069# check unique-1-b success: 	1
21070DELETE FROM t1 WHERE f_charbig = 'was inserted';
21071UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21072f_int2 = CAST(f_char1 AS SIGNED INT),
21073f_charbig = CONCAT('===',f_char1,'===')
21074WHERE f_charbig = 'was updated';
21075REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21076SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
21077   FROM t0_template source_tab
21078WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
21079
21080# check replace success: 	1
21081DELETE FROM t1
21082WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
21083DELETE FROM t1
21084WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
21085f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
21086UPDATE t1 SET f_int2 = f_int1,
21087f_char1 = CAST(f_int1 AS CHAR),
21088f_char2 = CAST(f_int1 AS CHAR),
21089f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
21090WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
21091SET AUTOCOMMIT= 0;
21092INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21093SELECT f_int1, f_int1, '', '', 'was inserted'
21094FROM t0_template source_tab
21095WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
21096
21097# check transactions-1 success: 	1
21098COMMIT WORK;
21099
21100# check transactions-2 success: 	1
21101ROLLBACK WORK;
21102
21103# check transactions-3 success: 	1
21104DELETE FROM t1 WHERE f_charbig = 'was inserted';
21105COMMIT WORK;
21106ROLLBACK WORK;
21107
21108# check transactions-4 success: 	1
21109INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21110SELECT f_int1, f_int1, '', '', 'was inserted'
21111FROM t0_template source_tab
21112WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
21113
21114# check transactions-5 success: 	1
21115ROLLBACK WORK;
21116Warnings:
21117Warning	1196	Some non-transactional changed tables couldn't be rolled back
21118
21119# check transactions-6 success: 	1
21120# INFO: Storage engine used for t1 seems to be not transactional.
21121COMMIT;
21122
21123# check transactions-7 success: 	1
21124DELETE FROM t1 WHERE f_charbig = 'was inserted';
21125COMMIT WORK;
21126SET @@session.sql_mode = 'traditional';
21127Warnings:
21128Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
21129SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
21130INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21131SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
21132'', '', 'was inserted' FROM t0_template
21133WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
21134ERROR 22012: Division by 0
21135COMMIT;
21136
21137# check transactions-8 success: 	1
21138# INFO: Storage engine used for t1 seems to be unable to revert
21139#       changes made by the failing statement.
21140SET @@session.sql_mode = '';
21141Warnings:
21142Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
21143SET AUTOCOMMIT= 1;
21144DELETE FROM t1 WHERE f_charbig = 'was inserted';
21145COMMIT WORK;
21146UPDATE t1 SET f_charbig = REPEAT('b', 1000);
21147
21148# check special-1 success: 	1
21149UPDATE t1 SET f_charbig = '';
21150
21151# check special-2 success: 	1
21152UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
21153INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
21154SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
21155WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21156INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21157SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21158'just inserted' FROM t0_template
21159WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21160CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
21161BEGIN
21162UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21163f_charbig = 'updated by trigger'
21164      WHERE f_int1 = new.f_int1;
21165END|
21166INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21167SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
21168WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21169
21170# check trigger-1 success: 	1
21171DROP TRIGGER trg_1;
21172UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21173f_int2 = CAST(f_char1 AS SIGNED INT),
21174f_charbig = 'just inserted'
21175   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21176DELETE FROM t0_aux
21177WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21178INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21179SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21180'just inserted' FROM t0_template
21181WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21182CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
21183BEGIN
21184UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21185f_charbig = 'updated by trigger'
21186      WHERE f_int1 = new.f_int1;
21187END|
21188INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21189SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
21190WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21191
21192# check trigger-2 success: 	1
21193DROP TRIGGER trg_1;
21194UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21195f_int2 = CAST(f_char1 AS SIGNED INT),
21196f_charbig = 'just inserted'
21197   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21198DELETE FROM t0_aux
21199WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21200INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21201SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21202'just inserted' FROM t0_template
21203WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21204CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
21205BEGIN
21206UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21207f_charbig = 'updated by trigger'
21208      WHERE f_int1 = new.f_int1;
21209END|
21210UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
21211WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21212
21213# check trigger-3 success: 	1
21214DROP TRIGGER trg_1;
21215UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21216f_int2 = CAST(f_char1 AS SIGNED INT),
21217f_charbig = 'just inserted'
21218   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21219DELETE FROM t0_aux
21220WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21221INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21222SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21223'just inserted' FROM t0_template
21224WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21225CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
21226BEGIN
21227UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21228f_charbig = 'updated by trigger'
21229      WHERE f_int1 = - old.f_int1;
21230END|
21231UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
21232WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21233
21234# check trigger-4 success: 	1
21235DROP TRIGGER trg_1;
21236UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21237f_int2 = CAST(f_char1 AS SIGNED INT),
21238f_charbig = 'just inserted'
21239   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21240DELETE FROM t0_aux
21241WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21242INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21243SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21244'just inserted' FROM t0_template
21245WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21246CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
21247BEGIN
21248UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21249f_charbig = 'updated by trigger'
21250      WHERE f_int1 = new.f_int1;
21251END|
21252UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
21253WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21254
21255# check trigger-5 success: 	1
21256DROP TRIGGER trg_1;
21257UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21258f_int2 = CAST(f_char1 AS SIGNED INT),
21259f_charbig = 'just inserted'
21260   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21261DELETE FROM t0_aux
21262WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21263INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21264SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21265'just inserted' FROM t0_template
21266WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21267CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
21268BEGIN
21269UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21270f_charbig = 'updated by trigger'
21271      WHERE f_int1 = - old.f_int1;
21272END|
21273UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
21274WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21275
21276# check trigger-6 success: 	1
21277DROP TRIGGER trg_1;
21278UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21279f_int2 = CAST(f_char1 AS SIGNED INT),
21280f_charbig = 'just inserted'
21281   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21282DELETE FROM t0_aux
21283WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21284INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21285SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21286'just inserted' FROM t0_template
21287WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21288CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
21289BEGIN
21290UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21291f_charbig = 'updated by trigger'
21292      WHERE f_int1 = - old.f_int1;
21293END|
21294DELETE FROM t0_aux
21295WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21296
21297# check trigger-7 success: 	1
21298DROP TRIGGER trg_1;
21299UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21300f_int2 = CAST(f_char1 AS SIGNED INT),
21301f_charbig = 'just inserted'
21302   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21303DELETE FROM t0_aux
21304WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21305INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21306SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21307'just inserted' FROM t0_template
21308WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21309CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
21310BEGIN
21311UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21312f_charbig = 'updated by trigger'
21313      WHERE f_int1 = - old.f_int1;
21314END|
21315DELETE FROM t0_aux
21316WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21317
21318# check trigger-8 success: 	1
21319DROP TRIGGER trg_1;
21320UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21321f_int2 = CAST(f_char1 AS SIGNED INT),
21322f_charbig = 'just inserted'
21323   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21324DELETE FROM t0_aux
21325WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21326DELETE FROM t1
21327WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21328CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
21329BEGIN
21330SET new.f_int1 = old.f_int1 + @max_row,
21331new.f_int2 = old.f_int2 - @max_row,
21332new.f_charbig = '####updated per update trigger####';
21333END|
21334UPDATE t1
21335SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
21336f_charbig = '####updated per update statement itself####';
21337Warnings:
21338Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
21339
21340# check trigger-9 success: 	1
21341DROP TRIGGER trg_2;
21342UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21343f_int2 = CAST(f_char1 AS SIGNED INT),
21344f_charbig = CONCAT('===',f_char1,'===');
21345Warnings:
21346Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
21347CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
21348BEGIN
21349SET new.f_int1 = new.f_int1 + @max_row,
21350new.f_int2 = new.f_int2 - @max_row,
21351new.f_charbig = '####updated per update trigger####';
21352END|
21353UPDATE t1
21354SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
21355f_charbig = '####updated per update statement itself####';
21356Warnings:
21357Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
21358
21359# check trigger-10 success: 	1
21360DROP TRIGGER trg_2;
21361UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21362f_int2 = CAST(f_char1 AS SIGNED INT),
21363f_charbig = CONCAT('===',f_char1,'===');
21364Warnings:
21365Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
21366CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
21367BEGIN
21368SET new.f_int1 = @my_max1 + @counter,
21369new.f_int2 = @my_min2 - @counter,
21370new.f_charbig = '####updated per insert trigger####';
21371SET @counter = @counter + 1;
21372END|
21373SET @counter = 1;
21374SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
21375Warnings:
21376Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
21377INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21378SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
21379CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
21380WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
21381ORDER BY f_int1;
21382DROP TRIGGER trg_3;
21383
21384# check trigger-11 success: 	1
21385Warnings:
21386Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
21387DELETE FROM t1
21388WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
21389AND f_int2 <> CAST(f_char1 AS SIGNED INT)
21390AND f_charbig = '####updated per insert trigger####';
21391CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
21392BEGIN
21393SET new.f_int1 = @my_max1 + @counter,
21394new.f_int2 = @my_min2 - @counter,
21395new.f_charbig = '####updated per insert trigger####';
21396SET @counter = @counter + 1;
21397END|
21398SET @counter = 1;
21399SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
21400Warnings:
21401Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
21402INSERT INTO t1 (f_char1, f_char2, f_charbig)
21403SELECT CAST(f_int1 AS CHAR),
21404CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
21405WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
21406ORDER BY f_int1;
21407DROP TRIGGER trg_3;
21408
21409# check trigger-12 success: 	1
21410Warnings:
21411Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
21412DELETE FROM t1
21413WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
21414AND f_int2 <> CAST(f_char1 AS SIGNED INT)
21415AND f_charbig = '####updated per insert trigger####';
21416ANALYZE  TABLE t1;
21417Table	Op	Msg_type	Msg_text
21418test.t1	analyze	status	OK
21419test.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.
21420CHECK    TABLE t1 EXTENDED;
21421Table	Op	Msg_type	Msg_text
21422test.t1	check	status	OK
21423test.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.
21424CHECKSUM TABLE t1 EXTENDED;
21425Table	Checksum
21426test.t1	<some_value>
21427OPTIMIZE TABLE t1;
21428Table	Op	Msg_type	Msg_text
21429test.t1	optimize	status	OK
21430test.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.
21431# check layout success:    1
21432REPAIR   TABLE t1 EXTENDED;
21433Table	Op	Msg_type	Msg_text
21434test.t1	repair	status	OK
21435test.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.
21436# check layout success:    1
21437TRUNCATE t1;
21438Warnings:
21439Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
21440
21441# check TRUNCATE success: 	1
21442# check layout success:    1
21443# End usability test (inc/partition_check.inc)
21444DROP TABLE t1;
21445CREATE TABLE t1 (
21446f_int1 INTEGER,
21447f_int2 INTEGER,
21448f_char1 CHAR(20),
21449f_char2 CHAR(20),
21450f_charbig VARCHAR(1000)
21451, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
21452)
21453/*!50100 PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1) (PARTITION part1 VALUES IN (0) INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' (SUBPARTITION sp11 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir', SUBPARTITION sp12 INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'), PARTITION part2 VALUES IN (1) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' (SUBPARTITION sp21 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir', SUBPARTITION sp22 INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'), PARTITION part3 VALUES IN (2) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' (SUBPARTITION sp31, SUBPARTITION sp32), PARTITION part4 VALUES IN (NULL) (SUBPARTITION sp41 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir', SUBPARTITION sp42 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir')) */;
21454Warnings:
21455Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
21456INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
21457SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
21458Warnings:
21459Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
21460# Start usability test (inc/partition_check.inc)
21461create_command
21462SHOW CREATE TABLE t1;
21463Table	Create Table
21464t1	CREATE TABLE `t1` (
21465  `f_int1` int(11) DEFAULT NULL,
21466  `f_int2` int(11) DEFAULT NULL,
21467  `f_char1` char(20) DEFAULT NULL,
21468  `f_char2` char(20) DEFAULT NULL,
21469  `f_charbig` varchar(1000) DEFAULT NULL,
21470  UNIQUE KEY `uidx1` (`f_int1`,`f_int2`),
21471  UNIQUE KEY `uidx2` (`f_int2`,`f_int1`)
21472) ENGINE=MyISAM DEFAULT CHARSET=latin1
21473/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
21474SUBPARTITION BY HASH (f_int1 + 1)
21475(PARTITION part1 VALUES IN (0)
21476 (SUBPARTITION sp11 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
21477  SUBPARTITION sp12 INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM),
21478 PARTITION part2 VALUES IN (1)
21479 (SUBPARTITION sp21 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' ENGINE = MyISAM,
21480  SUBPARTITION sp22 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM),
21481 PARTITION part3 VALUES IN (2)
21482 (SUBPARTITION sp31 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
21483  SUBPARTITION sp32 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM),
21484 PARTITION part4 VALUES IN (NULL)
21485 (SUBPARTITION sp41 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
21486  SUBPARTITION sp42 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM)) */
21487
21488unified filelist
21489t1#P#part1#SP#sp11.MYD
21490t1#P#part1#SP#sp11.MYI
21491t1#P#part1#SP#sp12.MYD
21492t1#P#part1#SP#sp12.MYI
21493t1#P#part2#SP#sp21.MYD
21494t1#P#part2#SP#sp21.MYI
21495t1#P#part2#SP#sp22.MYD
21496t1#P#part2#SP#sp22.MYI
21497t1#P#part3#SP#sp31.MYD
21498t1#P#part3#SP#sp31.MYI
21499t1#P#part3#SP#sp32.MYD
21500t1#P#part3#SP#sp32.MYI
21501t1#P#part4#SP#sp41.MYD
21502t1#P#part4#SP#sp41.MYI
21503t1#P#part4#SP#sp42.MYD
21504t1#P#part4#SP#sp42.MYI
21505t1.frm
21506t1.par
21507t1#P#part1#SP#sp11.MYD
21508t1#P#part2#SP#sp21.MYD
21509t1#P#part2#SP#sp22.MYD
21510t1#P#part3#SP#sp31.MYD
21511t1#P#part3#SP#sp32.MYD
21512t1#P#part4#SP#sp41.MYD
21513t1#P#part4#SP#sp42.MYD
21514t1#P#part1#SP#sp11.MYI
21515t1#P#part1#SP#sp12.MYI
21516t1#P#part2#SP#sp22.MYI
21517t1#P#part3#SP#sp31.MYI
21518t1#P#part3#SP#sp32.MYI
21519t1#P#part4#SP#sp41.MYI
21520t1#P#part4#SP#sp42.MYI
21521
21522# check prerequisites-1 success:    1
21523# check COUNT(*) success:    1
21524# check MIN/MAX(f_int1) success:    1
21525# check MIN/MAX(f_int2) success:    1
21526INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21527SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
21528CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
21529WHERE f_int1 IN (2,3);
21530ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
21531# check prerequisites-3 success:    1
21532# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
21533INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21534SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
21535CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
21536WHERE f_int1 IN (2,3);
21537DELETE FROM t1 WHERE f_charbig = 'delete me';
21538INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21539SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
21540CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
21541WHERE f_int1 IN (2,3);
21542DELETE FROM t1 WHERE f_charbig = 'delete me';
21543# check read via f_int1 success: 1
21544# check read via f_int2 success: 1
21545
21546# check multiple-1 success: 	1
21547DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
21548
21549# check multiple-2 success: 	1
21550INSERT INTO t1 SELECT * FROM t0_template
21551WHERE MOD(f_int1,3) = 0;
21552
21553# check multiple-3 success: 	1
21554UPDATE t1 SET f_int1 = f_int1 + @max_row
21555WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
21556AND @max_row_div2 + @max_row_div4;
21557
21558# check multiple-4 success: 	1
21559DELETE FROM t1
21560WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
21561AND @max_row_div2 + @max_row_div4 + @max_row;
21562
21563# check multiple-5 success: 	1
21564SELECT COUNT(*) INTO @try_count FROM t0_template
21565WHERE MOD(f_int1,3) = 0
21566AND f_int1 BETWEEN @max_row_div2 AND @max_row;
21567SELECT COUNT(*) INTO @clash_count
21568FROM t1 INNER JOIN t0_template USING(f_int1)
21569WHERE MOD(f_int1,3) = 0
21570AND f_int1 BETWEEN @max_row_div2 AND @max_row;
21571SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
21572INSERT INTO t1
21573SET f_int1 = @cur_value , f_int2 = @cur_value,
21574f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
21575f_charbig = '#SINGLE#';
21576
21577# check single-1 success: 	1
21578SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
21579INSERT INTO t1
21580SET f_int1 = @cur_value , f_int2 = @cur_value,
21581f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
21582f_charbig = '#SINGLE#';
21583
21584# check single-2 success: 	1
21585SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
21586SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
21587UPDATE t1 SET f_int1 = @cur_value2
21588WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
21589
21590# check single-3 success: 	1
21591SET @cur_value1= -1;
21592SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
21593UPDATE t1 SET f_int1 = @cur_value1
21594WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
21595
21596# check single-4 success: 	1
21597SELECT MAX(f_int1) INTO @cur_value FROM t1;
21598DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
21599
21600# check single-5 success: 	1
21601DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
21602
21603# check single-6 success: 	1
21604INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
21605
21606# check single-7 success: 	1
21607DELETE FROM t1 WHERE f_charbig = '#2147483647##';
21608DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
21609INSERT t1 SET f_int1 = 0 , f_int2 = 0,
21610f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
21611f_charbig = '#NULL#';
21612INSERT INTO t1
21613SET f_int1 = NULL , f_int2 = -@max_row,
21614f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
21615f_charbig = '#NULL#';
21616# check null success:    1
21617
21618# check null-1 success: 	1
21619UPDATE t1 SET f_int1 = -@max_row
21620WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
21621AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
21622
21623# check null-2 success: 	1
21624UPDATE t1 SET f_int1 = NULL
21625WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
21626AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
21627
21628# check null-3 success: 	1
21629DELETE FROM t1
21630WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
21631AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
21632
21633# check null-4 success: 	1
21634DELETE FROM t1
21635WHERE f_int1 = 0 AND f_int2 = 0
21636AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
21637AND f_charbig = '#NULL#';
21638INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21639SELECT f_int1, f_int1, '', '', 'was inserted'
21640   FROM t0_template source_tab
21641WHERE MOD(f_int1,3) = 0
21642AND f_int1 BETWEEN @max_row_div2 AND @max_row
21643ON DUPLICATE KEY
21644UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
21645f_int2 = 2 * @max_row + source_tab.f_int1,
21646f_charbig = 'was updated';
21647
21648# check unique-1-a success: 	1
21649
21650# check unique-1-b success: 	1
21651DELETE FROM t1 WHERE f_charbig = 'was inserted';
21652UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21653f_int2 = CAST(f_char1 AS SIGNED INT),
21654f_charbig = CONCAT('===',f_char1,'===')
21655WHERE f_charbig = 'was updated';
21656REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21657SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
21658   FROM t0_template source_tab
21659WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
21660
21661# check replace success: 	1
21662DELETE FROM t1
21663WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
21664DELETE FROM t1
21665WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
21666f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
21667UPDATE t1 SET f_int2 = f_int1,
21668f_char1 = CAST(f_int1 AS CHAR),
21669f_char2 = CAST(f_int1 AS CHAR),
21670f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
21671WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
21672SET AUTOCOMMIT= 0;
21673INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21674SELECT f_int1, f_int1, '', '', 'was inserted'
21675FROM t0_template source_tab
21676WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
21677
21678# check transactions-1 success: 	1
21679COMMIT WORK;
21680
21681# check transactions-2 success: 	1
21682ROLLBACK WORK;
21683
21684# check transactions-3 success: 	1
21685DELETE FROM t1 WHERE f_charbig = 'was inserted';
21686COMMIT WORK;
21687ROLLBACK WORK;
21688
21689# check transactions-4 success: 	1
21690INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21691SELECT f_int1, f_int1, '', '', 'was inserted'
21692FROM t0_template source_tab
21693WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
21694
21695# check transactions-5 success: 	1
21696ROLLBACK WORK;
21697Warnings:
21698Warning	1196	Some non-transactional changed tables couldn't be rolled back
21699
21700# check transactions-6 success: 	1
21701# INFO: Storage engine used for t1 seems to be not transactional.
21702COMMIT;
21703
21704# check transactions-7 success: 	1
21705DELETE FROM t1 WHERE f_charbig = 'was inserted';
21706COMMIT WORK;
21707SET @@session.sql_mode = 'traditional';
21708Warnings:
21709Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
21710SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
21711INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21712SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
21713'', '', 'was inserted' FROM t0_template
21714WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
21715ERROR 22012: Division by 0
21716COMMIT;
21717
21718# check transactions-8 success: 	1
21719# INFO: Storage engine used for t1 seems to be unable to revert
21720#       changes made by the failing statement.
21721SET @@session.sql_mode = '';
21722Warnings:
21723Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.
21724SET AUTOCOMMIT= 1;
21725DELETE FROM t1 WHERE f_charbig = 'was inserted';
21726COMMIT WORK;
21727UPDATE t1 SET f_charbig = REPEAT('b', 1000);
21728
21729# check special-1 success: 	1
21730UPDATE t1 SET f_charbig = '';
21731
21732# check special-2 success: 	1
21733UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
21734INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
21735SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
21736WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21737INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21738SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21739'just inserted' FROM t0_template
21740WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21741CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
21742BEGIN
21743UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21744f_charbig = 'updated by trigger'
21745      WHERE f_int1 = new.f_int1;
21746END|
21747INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21748SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
21749WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21750
21751# check trigger-1 success: 	1
21752DROP TRIGGER trg_1;
21753UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21754f_int2 = CAST(f_char1 AS SIGNED INT),
21755f_charbig = 'just inserted'
21756   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21757DELETE FROM t0_aux
21758WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21759INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21760SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21761'just inserted' FROM t0_template
21762WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21763CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
21764BEGIN
21765UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21766f_charbig = 'updated by trigger'
21767      WHERE f_int1 = new.f_int1;
21768END|
21769INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21770SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
21771WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21772
21773# check trigger-2 success: 	1
21774DROP TRIGGER trg_1;
21775UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21776f_int2 = CAST(f_char1 AS SIGNED INT),
21777f_charbig = 'just inserted'
21778   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21779DELETE FROM t0_aux
21780WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21781INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21782SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21783'just inserted' FROM t0_template
21784WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21785CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
21786BEGIN
21787UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21788f_charbig = 'updated by trigger'
21789      WHERE f_int1 = new.f_int1;
21790END|
21791UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
21792WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21793
21794# check trigger-3 success: 	1
21795DROP TRIGGER trg_1;
21796UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21797f_int2 = CAST(f_char1 AS SIGNED INT),
21798f_charbig = 'just inserted'
21799   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21800DELETE FROM t0_aux
21801WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21802INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21803SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21804'just inserted' FROM t0_template
21805WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21806CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
21807BEGIN
21808UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21809f_charbig = 'updated by trigger'
21810      WHERE f_int1 = - old.f_int1;
21811END|
21812UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
21813WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21814
21815# check trigger-4 success: 	1
21816DROP TRIGGER trg_1;
21817UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21818f_int2 = CAST(f_char1 AS SIGNED INT),
21819f_charbig = 'just inserted'
21820   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21821DELETE FROM t0_aux
21822WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21823INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21824SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21825'just inserted' FROM t0_template
21826WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21827CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
21828BEGIN
21829UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21830f_charbig = 'updated by trigger'
21831      WHERE f_int1 = new.f_int1;
21832END|
21833UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
21834WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21835
21836# check trigger-5 success: 	1
21837DROP TRIGGER trg_1;
21838UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21839f_int2 = CAST(f_char1 AS SIGNED INT),
21840f_charbig = 'just inserted'
21841   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21842DELETE FROM t0_aux
21843WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21844INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21845SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21846'just inserted' FROM t0_template
21847WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21848CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
21849BEGIN
21850UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21851f_charbig = 'updated by trigger'
21852      WHERE f_int1 = - old.f_int1;
21853END|
21854UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
21855WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21856
21857# check trigger-6 success: 	1
21858DROP TRIGGER trg_1;
21859UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21860f_int2 = CAST(f_char1 AS SIGNED INT),
21861f_charbig = 'just inserted'
21862   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21863DELETE FROM t0_aux
21864WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21865INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21866SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21867'just inserted' FROM t0_template
21868WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21869CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
21870BEGIN
21871UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21872f_charbig = 'updated by trigger'
21873      WHERE f_int1 = - old.f_int1;
21874END|
21875DELETE FROM t0_aux
21876WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21877
21878# check trigger-7 success: 	1
21879DROP TRIGGER trg_1;
21880UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21881f_int2 = CAST(f_char1 AS SIGNED INT),
21882f_charbig = 'just inserted'
21883   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21884DELETE FROM t0_aux
21885WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21886INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21887SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21888'just inserted' FROM t0_template
21889WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21890CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
21891BEGIN
21892UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21893f_charbig = 'updated by trigger'
21894      WHERE f_int1 = - old.f_int1;
21895END|
21896DELETE FROM t0_aux
21897WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21898
21899# check trigger-8 success: 	1
21900DROP TRIGGER trg_1;
21901UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21902f_int2 = CAST(f_char1 AS SIGNED INT),
21903f_charbig = 'just inserted'
21904   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21905DELETE FROM t0_aux
21906WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21907DELETE FROM t1
21908WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21909CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
21910BEGIN
21911SET new.f_int1 = old.f_int1 + @max_row,
21912new.f_int2 = old.f_int2 - @max_row,
21913new.f_charbig = '####updated per update trigger####';
21914END|
21915UPDATE t1
21916SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
21917f_charbig = '####updated per update statement itself####';
21918Warnings:
21919Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
21920
21921# check trigger-9 success: 	1
21922DROP TRIGGER trg_2;
21923UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21924f_int2 = CAST(f_char1 AS SIGNED INT),
21925f_charbig = CONCAT('===',f_char1,'===');
21926Warnings:
21927Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
21928CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
21929BEGIN
21930SET new.f_int1 = new.f_int1 + @max_row,
21931new.f_int2 = new.f_int2 - @max_row,
21932new.f_charbig = '####updated per update trigger####';
21933END|
21934UPDATE t1
21935SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
21936f_charbig = '####updated per update statement itself####';
21937Warnings:
21938Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
21939
21940# check trigger-10 success: 	1
21941DROP TRIGGER trg_2;
21942UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21943f_int2 = CAST(f_char1 AS SIGNED INT),
21944f_charbig = CONCAT('===',f_char1,'===');
21945Warnings:
21946Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
21947CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
21948BEGIN
21949SET new.f_int1 = @my_max1 + @counter,
21950new.f_int2 = @my_min2 - @counter,
21951new.f_charbig = '####updated per insert trigger####';
21952SET @counter = @counter + 1;
21953END|
21954SET @counter = 1;
21955SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
21956Warnings:
21957Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
21958INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21959SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
21960CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
21961WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
21962ORDER BY f_int1;
21963DROP TRIGGER trg_3;
21964
21965# check trigger-11 success: 	1
21966Warnings:
21967Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
21968DELETE FROM t1
21969WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
21970AND f_int2 <> CAST(f_char1 AS SIGNED INT)
21971AND f_charbig = '####updated per insert trigger####';
21972CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
21973BEGIN
21974SET new.f_int1 = @my_max1 + @counter,
21975new.f_int2 = @my_min2 - @counter,
21976new.f_charbig = '####updated per insert trigger####';
21977SET @counter = @counter + 1;
21978END|
21979SET @counter = 1;
21980SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
21981Warnings:
21982Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
21983INSERT INTO t1 (f_char1, f_char2, f_charbig)
21984SELECT CAST(f_int1 AS CHAR),
21985CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
21986WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
21987ORDER BY f_int1;
21988DROP TRIGGER trg_3;
21989
21990# check trigger-12 success: 	1
21991Warnings:
21992Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
21993DELETE FROM t1
21994WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
21995AND f_int2 <> CAST(f_char1 AS SIGNED INT)
21996AND f_charbig = '####updated per insert trigger####';
21997ANALYZE  TABLE t1;
21998Table	Op	Msg_type	Msg_text
21999test.t1	analyze	status	OK
22000test.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.
22001CHECK    TABLE t1 EXTENDED;
22002Table	Op	Msg_type	Msg_text
22003test.t1	check	status	OK
22004test.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.
22005CHECKSUM TABLE t1 EXTENDED;
22006Table	Checksum
22007test.t1	<some_value>
22008OPTIMIZE TABLE t1;
22009Table	Op	Msg_type	Msg_text
22010test.t1	optimize	status	OK
22011test.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.
22012# check layout success:    1
22013REPAIR   TABLE t1 EXTENDED;
22014Table	Op	Msg_type	Msg_text
22015test.t1	repair	status	OK
22016test.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.
22017# check layout success:    1
22018TRUNCATE t1;
22019Warnings:
22020Warning	1287	The partition engine, used by table 'test.t1', is deprecated and will be removed in a future release. Please use native partitioning instead.
22021
22022# check TRUNCATE success: 	1
22023# check layout success:    1
22024# End usability test (inc/partition_check.inc)
22025DROP TABLE t1;
22026DROP VIEW  IF EXISTS v1;
22027DROP TABLE IF EXISTS t1;
22028DROP TABLE IF EXISTS t0_aux;
22029DROP TABLE IF EXISTS t0_definition;
22030DROP TABLE IF EXISTS t0_template;
22031