mirror of
				https://github.com/MariaDB/server.git
				synced 2025-11-04 04:46:15 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			20897 lines
		
	
	
	
		
			758 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			20897 lines
		
	
	
	
		
			758 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
SET @max_row = 20;
 | 
						|
SET @@session.default_storage_engine = 'MyISAM';
 | 
						|
 | 
						|
#------------------------------------------------------------------------
 | 
						|
#  0. Setting of auxiliary variables + Creation of an auxiliary tables
 | 
						|
#     needed in many testcases
 | 
						|
#------------------------------------------------------------------------
 | 
						|
SELECT @max_row DIV 2 INTO @max_row_div2;
 | 
						|
SELECT @max_row DIV 3 INTO @max_row_div3;
 | 
						|
SELECT @max_row DIV 4 INTO @max_row_div4;
 | 
						|
SET @max_int_4 = 2147483647;
 | 
						|
DROP TABLE IF EXISTS t0_template;
 | 
						|
CREATE TABLE t0_template (
 | 
						|
f_int1 INTEGER DEFAULT 0,
 | 
						|
f_int2 INTEGER DEFAULT 0,
 | 
						|
f_char1 CHAR(20),
 | 
						|
f_char2 CHAR(20),
 | 
						|
f_charbig VARCHAR(1000) ,
 | 
						|
PRIMARY KEY(f_int1))
 | 
						|
ENGINE = MEMORY;
 | 
						|
#     Logging of <max_row> INSERTs into t0_template suppressed
 | 
						|
DROP TABLE IF EXISTS t0_definition;
 | 
						|
CREATE TABLE t0_definition (
 | 
						|
state CHAR(3),
 | 
						|
create_command VARBINARY(5000),
 | 
						|
file_list      VARBINARY(10000),
 | 
						|
PRIMARY KEY (state)
 | 
						|
) ENGINE = MEMORY;
 | 
						|
DROP TABLE IF EXISTS t0_aux;
 | 
						|
CREATE TABLE t0_aux ( f_int1 INTEGER DEFAULT 0,
 | 
						|
f_int2 INTEGER DEFAULT 0,
 | 
						|
f_char1 CHAR(20),
 | 
						|
f_char2 CHAR(20),
 | 
						|
f_charbig VARCHAR(1000) )
 | 
						|
ENGINE = MEMORY;
 | 
						|
SET AUTOCOMMIT= 1;
 | 
						|
SET @@session.sql_mode= '';
 | 
						|
# End of basic preparations needed for all tests
 | 
						|
#-----------------------------------------------
 | 
						|
 | 
						|
#========================================================================
 | 
						|
# 0.5 use partition_basic with DATA/INDEX DIRECTORY
 | 
						|
#========================================================================
 | 
						|
 | 
						|
#========================================================================
 | 
						|
#  Check partitioning methods on just created tables
 | 
						|
#  The tables should be defined without/with PRIMARY KEY and
 | 
						|
#  UNIQUE INDEXes.
 | 
						|
#  Every test round has to check
 | 
						|
#        PARTITION BY HASH/KEY/LIST/RANGE
 | 
						|
#        PARTITION BY RANGE/LIST ... SUBPARTITION BY HASH/KEY ...
 | 
						|
#========================================================================
 | 
						|
#------------------------------------------------------------------------
 | 
						|
#  1   Tables without PRIMARY KEY or UNIQUE INDEXes
 | 
						|
#------------------------------------------------------------------------
 | 
						|
#  1.1 The partitioning function contains one column.
 | 
						|
DROP TABLE IF EXISTS t1;
 | 
						|
CREATE TABLE t1 (
 | 
						|
f_int1 INTEGER DEFAULT 0,
 | 
						|
f_int2 INTEGER DEFAULT 0,
 | 
						|
f_char1 CHAR(20),
 | 
						|
f_char2 CHAR(20),
 | 
						|
f_charbig VARCHAR(1000)
 | 
						|
 | 
						|
)
 | 
						|
PARTITION BY HASH(f_int1) PARTITIONS 2
 | 
						|
(PARTITION p1 
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION p2 
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir');
 | 
						|
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
 | 
						|
# Start usability test (inc/partition_check.inc)
 | 
						|
create_command
 | 
						|
SHOW CREATE TABLE t1;
 | 
						|
Table	Create Table
 | 
						|
t1	CREATE TABLE `t1` (
 | 
						|
  `f_int1` int(11) DEFAULT 0,
 | 
						|
  `f_int2` int(11) DEFAULT 0,
 | 
						|
  `f_char1` char(20) DEFAULT NULL,
 | 
						|
  `f_char2` char(20) DEFAULT NULL,
 | 
						|
  `f_charbig` varchar(1000) DEFAULT NULL
 | 
						|
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | 
						|
 PARTITION BY HASH (`f_int1`)
 | 
						|
(PARTITION `p1` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `p2` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM)
 | 
						|
 | 
						|
unified filelist
 | 
						|
t1#P#p1.MYD
 | 
						|
t1#P#p1.MYI
 | 
						|
t1#P#p2.MYD
 | 
						|
t1#P#p2.MYI
 | 
						|
t1.frm
 | 
						|
t1.par
 | 
						|
t1#P#p1.MYD
 | 
						|
t1#P#p2.MYD
 | 
						|
t1#P#p1.MYI
 | 
						|
t1#P#p2.MYI
 | 
						|
 | 
						|
# check prerequisites-1 success:    1
 | 
						|
# check COUNT(*) success:    1
 | 
						|
# check MIN/MAX(f_int1) success:    1
 | 
						|
# check MIN/MAX(f_int2) success:    1
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
 | 
						|
WHERE f_int1 IN (2,3);
 | 
						|
# check prerequisites-3 success:    1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'delete me';
 | 
						|
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
 | 
						|
# check read via f_int1 success: 1
 | 
						|
# check read via f_int2 success: 1
 | 
						|
	
 | 
						|
# check multiple-1 success: 	1
 | 
						|
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
 | 
						|
	
 | 
						|
# check multiple-2 success: 	1
 | 
						|
INSERT INTO t1 SELECT * FROM t0_template
 | 
						|
WHERE MOD(f_int1,3) = 0;
 | 
						|
	
 | 
						|
# check multiple-3 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = f_int1 + @max_row
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
 | 
						|
AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check multiple-4 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
 | 
						|
AND @max_row_div2 + @max_row_div4 + @max_row;
 | 
						|
	
 | 
						|
# check multiple-5 success: 	1
 | 
						|
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = @cur_value , f_int2 = @cur_value,
 | 
						|
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
 | 
						|
f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-1 success: 	1
 | 
						|
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = @cur_value , f_int2 = @cur_value,
 | 
						|
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
 | 
						|
f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-2 success: 	1
 | 
						|
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
 | 
						|
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
 | 
						|
UPDATE t1 SET f_int1 = @cur_value2
 | 
						|
WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-3 success: 	1
 | 
						|
SET @cur_value1= -1;
 | 
						|
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
 | 
						|
UPDATE t1 SET f_int1 = @cur_value1
 | 
						|
WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-4 success: 	1
 | 
						|
SELECT MAX(f_int1) INTO @cur_value FROM t1;
 | 
						|
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-5 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-6 success: 	1
 | 
						|
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
 | 
						|
	
 | 
						|
# check single-7 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
 | 
						|
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
 | 
						|
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
 | 
						|
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
 | 
						|
f_charbig = '#NULL#';
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = NULL , f_int2 = -@max_row,
 | 
						|
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
 | 
						|
f_charbig = '#NULL#';
 | 
						|
# check null success:    1
 | 
						|
	
 | 
						|
# check null-1 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = -@max_row
 | 
						|
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-2 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = NULL
 | 
						|
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-3 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-4 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 = 0 AND f_int2 = 0
 | 
						|
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
 | 
						|
AND f_charbig = '#NULL#';
 | 
						|
SET AUTOCOMMIT= 0;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
FROM t0_template source_tab
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check transactions-1 success: 	1
 | 
						|
COMMIT WORK;
 | 
						|
	
 | 
						|
# check transactions-2 success: 	1
 | 
						|
ROLLBACK WORK;
 | 
						|
	
 | 
						|
# check transactions-3 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
ROLLBACK WORK;
 | 
						|
	
 | 
						|
# check transactions-4 success: 	1
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
FROM t0_template source_tab
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check transactions-5 success: 	1
 | 
						|
ROLLBACK WORK;
 | 
						|
Warnings:
 | 
						|
Warning	1196	Some non-transactional changed tables couldn't be rolled back
 | 
						|
	
 | 
						|
# check transactions-6 success: 	1
 | 
						|
# INFO: Storage engine used for t1 seems to be not transactional.
 | 
						|
COMMIT;
 | 
						|
	
 | 
						|
# check transactions-7 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
SET @@session.sql_mode = 'traditional';
 | 
						|
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
 | 
						|
'', '', 'was inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
ERROR 22012: Division by 0
 | 
						|
COMMIT;
 | 
						|
	
 | 
						|
# check transactions-8 success: 	1
 | 
						|
# INFO: Storage engine used for t1 seems to be unable to revert
 | 
						|
#       changes made by the failing statement.
 | 
						|
SET @@session.sql_mode = '';
 | 
						|
SET AUTOCOMMIT= 1;
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
 | 
						|
	
 | 
						|
# check special-1 success: 	1
 | 
						|
UPDATE t1 SET f_charbig = '';
 | 
						|
	
 | 
						|
# check special-2 success: 	1
 | 
						|
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
 | 
						|
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
	
 | 
						|
# check trigger-1 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
	
 | 
						|
# check trigger-2 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-3 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-4 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-5 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-6 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-7 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-8 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = old.f_int1 + @max_row,
 | 
						|
new.f_int2 = old.f_int2 - @max_row,
 | 
						|
new.f_charbig = '####updated per update trigger####';
 | 
						|
END|
 | 
						|
UPDATE t1
 | 
						|
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
 | 
						|
f_charbig = '####updated per update statement itself####';
 | 
						|
	
 | 
						|
# check trigger-9 success: 	1
 | 
						|
DROP TRIGGER trg_2;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===');
 | 
						|
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = new.f_int1 + @max_row,
 | 
						|
new.f_int2 = new.f_int2 - @max_row,
 | 
						|
new.f_charbig = '####updated per update trigger####';
 | 
						|
END|
 | 
						|
UPDATE t1
 | 
						|
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
 | 
						|
f_charbig = '####updated per update statement itself####';
 | 
						|
	
 | 
						|
# check trigger-10 success: 	1
 | 
						|
DROP TRIGGER trg_2;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===');
 | 
						|
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = @my_max1 + @counter,
 | 
						|
new.f_int2 = @my_min2 - @counter,
 | 
						|
new.f_charbig = '####updated per insert trigger####';
 | 
						|
SET @counter = @counter + 1;
 | 
						|
END|
 | 
						|
SET @counter = 1;
 | 
						|
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
 | 
						|
ORDER BY f_int1;
 | 
						|
DROP TRIGGER trg_3;
 | 
						|
	
 | 
						|
# check trigger-11 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_charbig = '####updated per insert trigger####';
 | 
						|
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = @my_max1 + @counter,
 | 
						|
new.f_int2 = @my_min2 - @counter,
 | 
						|
new.f_charbig = '####updated per insert trigger####';
 | 
						|
SET @counter = @counter + 1;
 | 
						|
END|
 | 
						|
SET @counter = 1;
 | 
						|
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
 | 
						|
INSERT INTO t1 (f_char1, f_char2, f_charbig)
 | 
						|
SELECT CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
 | 
						|
ORDER BY f_int1;
 | 
						|
DROP TRIGGER trg_3;
 | 
						|
	
 | 
						|
# check trigger-12 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_charbig = '####updated per insert trigger####';
 | 
						|
ANALYZE  TABLE t1;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	analyze	status	Engine-independent statistics collected
 | 
						|
test.t1	analyze	status	OK
 | 
						|
CHECK    TABLE t1 EXTENDED;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	check	status	OK
 | 
						|
CHECKSUM TABLE t1 EXTENDED;
 | 
						|
Table	Checksum
 | 
						|
test.t1	<some_value>
 | 
						|
OPTIMIZE TABLE t1;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	optimize	status	OK
 | 
						|
# check layout success:    1
 | 
						|
REPAIR   TABLE t1 EXTENDED;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	repair	status	OK
 | 
						|
# check layout success:    1
 | 
						|
TRUNCATE t1;
 | 
						|
	
 | 
						|
# check TRUNCATE success: 	1
 | 
						|
# check layout success:    1
 | 
						|
# End usability test (inc/partition_check.inc)
 | 
						|
DROP TABLE t1;
 | 
						|
CREATE TABLE t1 (
 | 
						|
f_int1 INTEGER DEFAULT 0,
 | 
						|
f_int2 INTEGER DEFAULT 0,
 | 
						|
f_char1 CHAR(20),
 | 
						|
f_char2 CHAR(20),
 | 
						|
f_charbig VARCHAR(1000)
 | 
						|
 | 
						|
)
 | 
						|
PARTITION BY KEY(f_int1) PARTITIONS 5
 | 
						|
(PARTITION p1
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION p2
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION p3
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION p4
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION p5
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir');
 | 
						|
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
 | 
						|
# Start usability test (inc/partition_check.inc)
 | 
						|
create_command
 | 
						|
SHOW CREATE TABLE t1;
 | 
						|
Table	Create Table
 | 
						|
t1	CREATE TABLE `t1` (
 | 
						|
  `f_int1` int(11) DEFAULT 0,
 | 
						|
  `f_int2` int(11) DEFAULT 0,
 | 
						|
  `f_char1` char(20) DEFAULT NULL,
 | 
						|
  `f_char2` char(20) DEFAULT NULL,
 | 
						|
  `f_charbig` varchar(1000) DEFAULT NULL
 | 
						|
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | 
						|
 PARTITION BY KEY (`f_int1`)
 | 
						|
(PARTITION `p1` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `p2` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `p3` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `p4` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `p5` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM)
 | 
						|
 | 
						|
unified filelist
 | 
						|
t1#P#p1.MYD
 | 
						|
t1#P#p1.MYI
 | 
						|
t1#P#p2.MYD
 | 
						|
t1#P#p2.MYI
 | 
						|
t1#P#p3.MYD
 | 
						|
t1#P#p3.MYI
 | 
						|
t1#P#p4.MYD
 | 
						|
t1#P#p4.MYI
 | 
						|
t1#P#p5.MYD
 | 
						|
t1#P#p5.MYI
 | 
						|
t1.frm
 | 
						|
t1.par
 | 
						|
t1#P#p1.MYD
 | 
						|
t1#P#p2.MYD
 | 
						|
t1#P#p3.MYD
 | 
						|
t1#P#p4.MYD
 | 
						|
t1#P#p5.MYD
 | 
						|
t1#P#p1.MYI
 | 
						|
t1#P#p2.MYI
 | 
						|
t1#P#p3.MYI
 | 
						|
t1#P#p4.MYI
 | 
						|
t1#P#p5.MYI
 | 
						|
 | 
						|
# check prerequisites-1 success:    1
 | 
						|
# check COUNT(*) success:    1
 | 
						|
# check MIN/MAX(f_int1) success:    1
 | 
						|
# check MIN/MAX(f_int2) success:    1
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
 | 
						|
WHERE f_int1 IN (2,3);
 | 
						|
# check prerequisites-3 success:    1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'delete me';
 | 
						|
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
 | 
						|
# check read via f_int1 success: 1
 | 
						|
# check read via f_int2 success: 1
 | 
						|
	
 | 
						|
# check multiple-1 success: 	1
 | 
						|
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
 | 
						|
	
 | 
						|
# check multiple-2 success: 	1
 | 
						|
INSERT INTO t1 SELECT * FROM t0_template
 | 
						|
WHERE MOD(f_int1,3) = 0;
 | 
						|
	
 | 
						|
# check multiple-3 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = f_int1 + @max_row
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
 | 
						|
AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check multiple-4 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
 | 
						|
AND @max_row_div2 + @max_row_div4 + @max_row;
 | 
						|
	
 | 
						|
# check multiple-5 success: 	1
 | 
						|
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = @cur_value , f_int2 = @cur_value,
 | 
						|
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
 | 
						|
f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-1 success: 	1
 | 
						|
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = @cur_value , f_int2 = @cur_value,
 | 
						|
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
 | 
						|
f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-2 success: 	1
 | 
						|
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
 | 
						|
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
 | 
						|
UPDATE t1 SET f_int1 = @cur_value2
 | 
						|
WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-3 success: 	1
 | 
						|
SET @cur_value1= -1;
 | 
						|
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
 | 
						|
UPDATE t1 SET f_int1 = @cur_value1
 | 
						|
WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-4 success: 	1
 | 
						|
SELECT MAX(f_int1) INTO @cur_value FROM t1;
 | 
						|
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-5 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-6 success: 	1
 | 
						|
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
 | 
						|
	
 | 
						|
# check single-7 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
 | 
						|
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
 | 
						|
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
 | 
						|
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
 | 
						|
f_charbig = '#NULL#';
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = NULL , f_int2 = -@max_row,
 | 
						|
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
 | 
						|
f_charbig = '#NULL#';
 | 
						|
# check null success:    1
 | 
						|
	
 | 
						|
# check null-1 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = -@max_row
 | 
						|
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-2 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = NULL
 | 
						|
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-3 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-4 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 = 0 AND f_int2 = 0
 | 
						|
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
 | 
						|
AND f_charbig = '#NULL#';
 | 
						|
SET AUTOCOMMIT= 0;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
FROM t0_template source_tab
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check transactions-1 success: 	1
 | 
						|
COMMIT WORK;
 | 
						|
	
 | 
						|
# check transactions-2 success: 	1
 | 
						|
ROLLBACK WORK;
 | 
						|
	
 | 
						|
# check transactions-3 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
ROLLBACK WORK;
 | 
						|
	
 | 
						|
# check transactions-4 success: 	1
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
FROM t0_template source_tab
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check transactions-5 success: 	1
 | 
						|
ROLLBACK WORK;
 | 
						|
Warnings:
 | 
						|
Warning	1196	Some non-transactional changed tables couldn't be rolled back
 | 
						|
	
 | 
						|
# check transactions-6 success: 	1
 | 
						|
# INFO: Storage engine used for t1 seems to be not transactional.
 | 
						|
COMMIT;
 | 
						|
	
 | 
						|
# check transactions-7 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
SET @@session.sql_mode = 'traditional';
 | 
						|
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
 | 
						|
'', '', 'was inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
ERROR 22012: Division by 0
 | 
						|
COMMIT;
 | 
						|
	
 | 
						|
# check transactions-8 success: 	1
 | 
						|
# INFO: Storage engine used for t1 seems to be unable to revert
 | 
						|
#       changes made by the failing statement.
 | 
						|
SET @@session.sql_mode = '';
 | 
						|
SET AUTOCOMMIT= 1;
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
 | 
						|
	
 | 
						|
# check special-1 success: 	1
 | 
						|
UPDATE t1 SET f_charbig = '';
 | 
						|
	
 | 
						|
# check special-2 success: 	1
 | 
						|
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
 | 
						|
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
	
 | 
						|
# check trigger-1 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
	
 | 
						|
# check trigger-2 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-3 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-4 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-5 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-6 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-7 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-8 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = old.f_int1 + @max_row,
 | 
						|
new.f_int2 = old.f_int2 - @max_row,
 | 
						|
new.f_charbig = '####updated per update trigger####';
 | 
						|
END|
 | 
						|
UPDATE t1
 | 
						|
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
 | 
						|
f_charbig = '####updated per update statement itself####';
 | 
						|
	
 | 
						|
# check trigger-9 success: 	1
 | 
						|
DROP TRIGGER trg_2;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===');
 | 
						|
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = new.f_int1 + @max_row,
 | 
						|
new.f_int2 = new.f_int2 - @max_row,
 | 
						|
new.f_charbig = '####updated per update trigger####';
 | 
						|
END|
 | 
						|
UPDATE t1
 | 
						|
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
 | 
						|
f_charbig = '####updated per update statement itself####';
 | 
						|
	
 | 
						|
# check trigger-10 success: 	1
 | 
						|
DROP TRIGGER trg_2;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===');
 | 
						|
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = @my_max1 + @counter,
 | 
						|
new.f_int2 = @my_min2 - @counter,
 | 
						|
new.f_charbig = '####updated per insert trigger####';
 | 
						|
SET @counter = @counter + 1;
 | 
						|
END|
 | 
						|
SET @counter = 1;
 | 
						|
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
 | 
						|
ORDER BY f_int1;
 | 
						|
DROP TRIGGER trg_3;
 | 
						|
	
 | 
						|
# check trigger-11 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_charbig = '####updated per insert trigger####';
 | 
						|
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = @my_max1 + @counter,
 | 
						|
new.f_int2 = @my_min2 - @counter,
 | 
						|
new.f_charbig = '####updated per insert trigger####';
 | 
						|
SET @counter = @counter + 1;
 | 
						|
END|
 | 
						|
SET @counter = 1;
 | 
						|
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
 | 
						|
INSERT INTO t1 (f_char1, f_char2, f_charbig)
 | 
						|
SELECT CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
 | 
						|
ORDER BY f_int1;
 | 
						|
DROP TRIGGER trg_3;
 | 
						|
	
 | 
						|
# check trigger-12 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_charbig = '####updated per insert trigger####';
 | 
						|
ANALYZE  TABLE t1;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	analyze	status	Engine-independent statistics collected
 | 
						|
test.t1	analyze	status	OK
 | 
						|
CHECK    TABLE t1 EXTENDED;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	check	status	OK
 | 
						|
CHECKSUM TABLE t1 EXTENDED;
 | 
						|
Table	Checksum
 | 
						|
test.t1	<some_value>
 | 
						|
OPTIMIZE TABLE t1;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	optimize	status	OK
 | 
						|
# check layout success:    1
 | 
						|
REPAIR   TABLE t1 EXTENDED;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	repair	status	OK
 | 
						|
# check layout success:    1
 | 
						|
TRUNCATE t1;
 | 
						|
	
 | 
						|
# check TRUNCATE success: 	1
 | 
						|
# check layout success:    1
 | 
						|
# End usability test (inc/partition_check.inc)
 | 
						|
DROP TABLE t1;
 | 
						|
CREATE TABLE t1 (
 | 
						|
f_int1 INTEGER DEFAULT 0,
 | 
						|
f_int2 INTEGER DEFAULT 0,
 | 
						|
f_char1 CHAR(20),
 | 
						|
f_char2 CHAR(20),
 | 
						|
f_charbig VARCHAR(1000)
 | 
						|
 | 
						|
)
 | 
						|
PARTITION BY LIST(MOD(f_int1,4))
 | 
						|
(PARTITION part_3 VALUES IN (-3)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION part_2 VALUES IN (-2)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION part_1 VALUES IN (-1)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION part_N VALUES IN (NULL)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION part0 VALUES IN (0)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION part1 VALUES IN (1)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION part2 VALUES IN (2)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION part3 VALUES IN (3)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir');
 | 
						|
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
 | 
						|
# Start usability test (inc/partition_check.inc)
 | 
						|
create_command
 | 
						|
SHOW CREATE TABLE t1;
 | 
						|
Table	Create Table
 | 
						|
t1	CREATE TABLE `t1` (
 | 
						|
  `f_int1` int(11) DEFAULT 0,
 | 
						|
  `f_int2` int(11) DEFAULT 0,
 | 
						|
  `f_char1` char(20) DEFAULT NULL,
 | 
						|
  `f_char2` char(20) DEFAULT NULL,
 | 
						|
  `f_charbig` varchar(1000) DEFAULT NULL
 | 
						|
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | 
						|
 PARTITION BY LIST (`f_int1` MOD 4)
 | 
						|
(PARTITION `part_3` VALUES IN (-3) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `part_2` VALUES IN (-2) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `part_1` VALUES IN (-1) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `part_N` VALUES IN (NULL) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `part0` VALUES IN (0) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `part1` VALUES IN (1) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `part2` VALUES IN (2) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `part3` VALUES IN (3) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM)
 | 
						|
 | 
						|
unified filelist
 | 
						|
t1#P#part0.MYD
 | 
						|
t1#P#part0.MYI
 | 
						|
t1#P#part1.MYD
 | 
						|
t1#P#part1.MYI
 | 
						|
t1#P#part2.MYD
 | 
						|
t1#P#part2.MYI
 | 
						|
t1#P#part3.MYD
 | 
						|
t1#P#part3.MYI
 | 
						|
t1#P#part_1.MYD
 | 
						|
t1#P#part_1.MYI
 | 
						|
t1#P#part_2.MYD
 | 
						|
t1#P#part_2.MYI
 | 
						|
t1#P#part_3.MYD
 | 
						|
t1#P#part_3.MYI
 | 
						|
t1#P#part_N.MYD
 | 
						|
t1#P#part_N.MYI
 | 
						|
t1.frm
 | 
						|
t1.par
 | 
						|
t1#P#part0.MYD
 | 
						|
t1#P#part1.MYD
 | 
						|
t1#P#part2.MYD
 | 
						|
t1#P#part3.MYD
 | 
						|
t1#P#part_1.MYD
 | 
						|
t1#P#part_2.MYD
 | 
						|
t1#P#part_3.MYD
 | 
						|
t1#P#part_N.MYD
 | 
						|
t1#P#part0.MYI
 | 
						|
t1#P#part1.MYI
 | 
						|
t1#P#part2.MYI
 | 
						|
t1#P#part3.MYI
 | 
						|
t1#P#part_1.MYI
 | 
						|
t1#P#part_2.MYI
 | 
						|
t1#P#part_3.MYI
 | 
						|
t1#P#part_N.MYI
 | 
						|
 | 
						|
# check prerequisites-1 success:    1
 | 
						|
# check COUNT(*) success:    1
 | 
						|
# check MIN/MAX(f_int1) success:    1
 | 
						|
# check MIN/MAX(f_int2) success:    1
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
 | 
						|
WHERE f_int1 IN (2,3);
 | 
						|
# check prerequisites-3 success:    1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'delete me';
 | 
						|
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
 | 
						|
# check read via f_int1 success: 1
 | 
						|
# check read via f_int2 success: 1
 | 
						|
	
 | 
						|
# check multiple-1 success: 	1
 | 
						|
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
 | 
						|
	
 | 
						|
# check multiple-2 success: 	1
 | 
						|
INSERT INTO t1 SELECT * FROM t0_template
 | 
						|
WHERE MOD(f_int1,3) = 0;
 | 
						|
	
 | 
						|
# check multiple-3 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = f_int1 + @max_row
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
 | 
						|
AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check multiple-4 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
 | 
						|
AND @max_row_div2 + @max_row_div4 + @max_row;
 | 
						|
	
 | 
						|
# check multiple-5 success: 	1
 | 
						|
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = @cur_value , f_int2 = @cur_value,
 | 
						|
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
 | 
						|
f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-1 success: 	1
 | 
						|
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = @cur_value , f_int2 = @cur_value,
 | 
						|
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
 | 
						|
f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-2 success: 	1
 | 
						|
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
 | 
						|
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
 | 
						|
UPDATE t1 SET f_int1 = @cur_value2
 | 
						|
WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-3 success: 	1
 | 
						|
SET @cur_value1= -1;
 | 
						|
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
 | 
						|
UPDATE t1 SET f_int1 = @cur_value1
 | 
						|
WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-4 success: 	1
 | 
						|
SELECT MAX(f_int1) INTO @cur_value FROM t1;
 | 
						|
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-5 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-6 success: 	1
 | 
						|
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
 | 
						|
	
 | 
						|
# check single-7 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
 | 
						|
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
 | 
						|
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
 | 
						|
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
 | 
						|
f_charbig = '#NULL#';
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = NULL , f_int2 = -@max_row,
 | 
						|
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
 | 
						|
f_charbig = '#NULL#';
 | 
						|
# check null success:    1
 | 
						|
	
 | 
						|
# check null-1 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = -@max_row
 | 
						|
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-2 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = NULL
 | 
						|
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-3 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-4 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 = 0 AND f_int2 = 0
 | 
						|
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
 | 
						|
AND f_charbig = '#NULL#';
 | 
						|
SET AUTOCOMMIT= 0;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
FROM t0_template source_tab
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check transactions-1 success: 	1
 | 
						|
COMMIT WORK;
 | 
						|
	
 | 
						|
# check transactions-2 success: 	1
 | 
						|
ROLLBACK WORK;
 | 
						|
	
 | 
						|
# check transactions-3 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
ROLLBACK WORK;
 | 
						|
	
 | 
						|
# check transactions-4 success: 	1
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
FROM t0_template source_tab
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check transactions-5 success: 	1
 | 
						|
ROLLBACK WORK;
 | 
						|
Warnings:
 | 
						|
Warning	1196	Some non-transactional changed tables couldn't be rolled back
 | 
						|
	
 | 
						|
# check transactions-6 success: 	1
 | 
						|
# INFO: Storage engine used for t1 seems to be not transactional.
 | 
						|
COMMIT;
 | 
						|
	
 | 
						|
# check transactions-7 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
SET @@session.sql_mode = 'traditional';
 | 
						|
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
 | 
						|
'', '', 'was inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
ERROR 22012: Division by 0
 | 
						|
COMMIT;
 | 
						|
	
 | 
						|
# check transactions-8 success: 	1
 | 
						|
# INFO: Storage engine used for t1 seems to be unable to revert
 | 
						|
#       changes made by the failing statement.
 | 
						|
SET @@session.sql_mode = '';
 | 
						|
SET AUTOCOMMIT= 1;
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
 | 
						|
	
 | 
						|
# check special-1 success: 	1
 | 
						|
UPDATE t1 SET f_charbig = '';
 | 
						|
	
 | 
						|
# check special-2 success: 	1
 | 
						|
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
 | 
						|
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
	
 | 
						|
# check trigger-1 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
	
 | 
						|
# check trigger-2 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-3 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-4 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-5 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-6 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-7 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-8 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = old.f_int1 + @max_row,
 | 
						|
new.f_int2 = old.f_int2 - @max_row,
 | 
						|
new.f_charbig = '####updated per update trigger####';
 | 
						|
END|
 | 
						|
UPDATE t1
 | 
						|
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
 | 
						|
f_charbig = '####updated per update statement itself####';
 | 
						|
	
 | 
						|
# check trigger-9 success: 	1
 | 
						|
DROP TRIGGER trg_2;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===');
 | 
						|
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = new.f_int1 + @max_row,
 | 
						|
new.f_int2 = new.f_int2 - @max_row,
 | 
						|
new.f_charbig = '####updated per update trigger####';
 | 
						|
END|
 | 
						|
UPDATE t1
 | 
						|
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
 | 
						|
f_charbig = '####updated per update statement itself####';
 | 
						|
	
 | 
						|
# check trigger-10 success: 	1
 | 
						|
DROP TRIGGER trg_2;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===');
 | 
						|
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = @my_max1 + @counter,
 | 
						|
new.f_int2 = @my_min2 - @counter,
 | 
						|
new.f_charbig = '####updated per insert trigger####';
 | 
						|
SET @counter = @counter + 1;
 | 
						|
END|
 | 
						|
SET @counter = 1;
 | 
						|
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
 | 
						|
ORDER BY f_int1;
 | 
						|
DROP TRIGGER trg_3;
 | 
						|
	
 | 
						|
# check trigger-11 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_charbig = '####updated per insert trigger####';
 | 
						|
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = @my_max1 + @counter,
 | 
						|
new.f_int2 = @my_min2 - @counter,
 | 
						|
new.f_charbig = '####updated per insert trigger####';
 | 
						|
SET @counter = @counter + 1;
 | 
						|
END|
 | 
						|
SET @counter = 1;
 | 
						|
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
 | 
						|
INSERT INTO t1 (f_char1, f_char2, f_charbig)
 | 
						|
SELECT CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
 | 
						|
ORDER BY f_int1;
 | 
						|
DROP TRIGGER trg_3;
 | 
						|
	
 | 
						|
# check trigger-12 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_charbig = '####updated per insert trigger####';
 | 
						|
ANALYZE  TABLE t1;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	analyze	status	Engine-independent statistics collected
 | 
						|
test.t1	analyze	status	OK
 | 
						|
CHECK    TABLE t1 EXTENDED;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	check	status	OK
 | 
						|
CHECKSUM TABLE t1 EXTENDED;
 | 
						|
Table	Checksum
 | 
						|
test.t1	<some_value>
 | 
						|
OPTIMIZE TABLE t1;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	optimize	status	OK
 | 
						|
# check layout success:    1
 | 
						|
REPAIR   TABLE t1 EXTENDED;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	repair	status	OK
 | 
						|
# check layout success:    1
 | 
						|
TRUNCATE t1;
 | 
						|
	
 | 
						|
# check TRUNCATE success: 	1
 | 
						|
# check layout success:    1
 | 
						|
# End usability test (inc/partition_check.inc)
 | 
						|
DROP TABLE t1;
 | 
						|
CREATE TABLE t1 (
 | 
						|
f_int1 INTEGER DEFAULT 0,
 | 
						|
f_int2 INTEGER DEFAULT 0,
 | 
						|
f_char1 CHAR(20),
 | 
						|
f_char2 CHAR(20),
 | 
						|
f_charbig VARCHAR(1000)
 | 
						|
 | 
						|
)
 | 
						|
PARTITION BY RANGE(f_int1)
 | 
						|
(PARTITION parta VALUES LESS THAN (0)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION partb VALUES LESS THAN (5)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION partc VALUES LESS THAN (10)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION partd VALUES LESS THAN (10 + 5)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION parte VALUES LESS THAN (20)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION partf VALUES LESS THAN (2147483646)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir');
 | 
						|
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
 | 
						|
# Start usability test (inc/partition_check.inc)
 | 
						|
create_command
 | 
						|
SHOW CREATE TABLE t1;
 | 
						|
Table	Create Table
 | 
						|
t1	CREATE TABLE `t1` (
 | 
						|
  `f_int1` int(11) DEFAULT 0,
 | 
						|
  `f_int2` int(11) DEFAULT 0,
 | 
						|
  `f_char1` char(20) DEFAULT NULL,
 | 
						|
  `f_char2` char(20) DEFAULT NULL,
 | 
						|
  `f_charbig` varchar(1000) DEFAULT NULL
 | 
						|
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | 
						|
 PARTITION BY RANGE (`f_int1`)
 | 
						|
(PARTITION `parta` VALUES LESS THAN (0) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `partb` VALUES LESS THAN (5) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `partc` VALUES LESS THAN (10) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `partd` VALUES LESS THAN (15) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `parte` VALUES LESS THAN (20) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `partf` VALUES LESS THAN (2147483646) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM)
 | 
						|
 | 
						|
unified filelist
 | 
						|
t1#P#parta.MYD
 | 
						|
t1#P#parta.MYI
 | 
						|
t1#P#partb.MYD
 | 
						|
t1#P#partb.MYI
 | 
						|
t1#P#partc.MYD
 | 
						|
t1#P#partc.MYI
 | 
						|
t1#P#partd.MYD
 | 
						|
t1#P#partd.MYI
 | 
						|
t1#P#parte.MYD
 | 
						|
t1#P#parte.MYI
 | 
						|
t1#P#partf.MYD
 | 
						|
t1#P#partf.MYI
 | 
						|
t1.frm
 | 
						|
t1.par
 | 
						|
t1#P#parta.MYD
 | 
						|
t1#P#partb.MYD
 | 
						|
t1#P#partc.MYD
 | 
						|
t1#P#partd.MYD
 | 
						|
t1#P#parte.MYD
 | 
						|
t1#P#partf.MYD
 | 
						|
t1#P#parta.MYI
 | 
						|
t1#P#partb.MYI
 | 
						|
t1#P#partc.MYI
 | 
						|
t1#P#partd.MYI
 | 
						|
t1#P#parte.MYI
 | 
						|
t1#P#partf.MYI
 | 
						|
 | 
						|
# check prerequisites-1 success:    1
 | 
						|
# check COUNT(*) success:    1
 | 
						|
# check MIN/MAX(f_int1) success:    1
 | 
						|
# check MIN/MAX(f_int2) success:    1
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
 | 
						|
WHERE f_int1 IN (2,3);
 | 
						|
# check prerequisites-3 success:    1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'delete me';
 | 
						|
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
 | 
						|
# check read via f_int1 success: 1
 | 
						|
# check read via f_int2 success: 1
 | 
						|
	
 | 
						|
# check multiple-1 success: 	1
 | 
						|
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
 | 
						|
	
 | 
						|
# check multiple-2 success: 	1
 | 
						|
INSERT INTO t1 SELECT * FROM t0_template
 | 
						|
WHERE MOD(f_int1,3) = 0;
 | 
						|
	
 | 
						|
# check multiple-3 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = f_int1 + @max_row
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
 | 
						|
AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check multiple-4 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
 | 
						|
AND @max_row_div2 + @max_row_div4 + @max_row;
 | 
						|
	
 | 
						|
# check multiple-5 success: 	1
 | 
						|
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = @cur_value , f_int2 = @cur_value,
 | 
						|
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
 | 
						|
f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-1 success: 	1
 | 
						|
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = @cur_value , f_int2 = @cur_value,
 | 
						|
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
 | 
						|
f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-2 success: 	1
 | 
						|
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
 | 
						|
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
 | 
						|
UPDATE t1 SET f_int1 = @cur_value2
 | 
						|
WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-3 success: 	1
 | 
						|
SET @cur_value1= -1;
 | 
						|
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
 | 
						|
UPDATE t1 SET f_int1 = @cur_value1
 | 
						|
WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-4 success: 	1
 | 
						|
SELECT MAX(f_int1) INTO @cur_value FROM t1;
 | 
						|
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-5 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-6 success: 	1
 | 
						|
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
 | 
						|
ERROR HY000: Table has no partition for value 2147483647
 | 
						|
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
 | 
						|
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
 | 
						|
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
 | 
						|
f_charbig = '#NULL#';
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = NULL , f_int2 = -@max_row,
 | 
						|
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
 | 
						|
f_charbig = '#NULL#';
 | 
						|
# check null success:    1
 | 
						|
	
 | 
						|
# check null-1 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = -@max_row
 | 
						|
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-2 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = NULL
 | 
						|
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-3 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-4 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 = 0 AND f_int2 = 0
 | 
						|
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
 | 
						|
AND f_charbig = '#NULL#';
 | 
						|
SET AUTOCOMMIT= 0;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
FROM t0_template source_tab
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check transactions-1 success: 	1
 | 
						|
COMMIT WORK;
 | 
						|
	
 | 
						|
# check transactions-2 success: 	1
 | 
						|
ROLLBACK WORK;
 | 
						|
	
 | 
						|
# check transactions-3 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
ROLLBACK WORK;
 | 
						|
	
 | 
						|
# check transactions-4 success: 	1
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
FROM t0_template source_tab
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check transactions-5 success: 	1
 | 
						|
ROLLBACK WORK;
 | 
						|
Warnings:
 | 
						|
Warning	1196	Some non-transactional changed tables couldn't be rolled back
 | 
						|
	
 | 
						|
# check transactions-6 success: 	1
 | 
						|
# INFO: Storage engine used for t1 seems to be not transactional.
 | 
						|
COMMIT;
 | 
						|
	
 | 
						|
# check transactions-7 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
SET @@session.sql_mode = 'traditional';
 | 
						|
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
 | 
						|
'', '', 'was inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
ERROR 22012: Division by 0
 | 
						|
COMMIT;
 | 
						|
	
 | 
						|
# check transactions-8 success: 	1
 | 
						|
# INFO: Storage engine used for t1 seems to be unable to revert
 | 
						|
#       changes made by the failing statement.
 | 
						|
SET @@session.sql_mode = '';
 | 
						|
SET AUTOCOMMIT= 1;
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
 | 
						|
	
 | 
						|
# check special-1 success: 	1
 | 
						|
UPDATE t1 SET f_charbig = '';
 | 
						|
	
 | 
						|
# check special-2 success: 	1
 | 
						|
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
 | 
						|
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
	
 | 
						|
# check trigger-1 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
	
 | 
						|
# check trigger-2 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-3 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-4 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-5 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-6 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-7 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-8 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = old.f_int1 + @max_row,
 | 
						|
new.f_int2 = old.f_int2 - @max_row,
 | 
						|
new.f_charbig = '####updated per update trigger####';
 | 
						|
END|
 | 
						|
UPDATE t1
 | 
						|
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
 | 
						|
f_charbig = '####updated per update statement itself####';
 | 
						|
	
 | 
						|
# check trigger-9 success: 	1
 | 
						|
DROP TRIGGER trg_2;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===');
 | 
						|
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = new.f_int1 + @max_row,
 | 
						|
new.f_int2 = new.f_int2 - @max_row,
 | 
						|
new.f_charbig = '####updated per update trigger####';
 | 
						|
END|
 | 
						|
UPDATE t1
 | 
						|
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
 | 
						|
f_charbig = '####updated per update statement itself####';
 | 
						|
	
 | 
						|
# check trigger-10 success: 	1
 | 
						|
DROP TRIGGER trg_2;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===');
 | 
						|
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = @my_max1 + @counter,
 | 
						|
new.f_int2 = @my_min2 - @counter,
 | 
						|
new.f_charbig = '####updated per insert trigger####';
 | 
						|
SET @counter = @counter + 1;
 | 
						|
END|
 | 
						|
SET @counter = 1;
 | 
						|
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
 | 
						|
ORDER BY f_int1;
 | 
						|
DROP TRIGGER trg_3;
 | 
						|
	
 | 
						|
# check trigger-11 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_charbig = '####updated per insert trigger####';
 | 
						|
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = @my_max1 + @counter,
 | 
						|
new.f_int2 = @my_min2 - @counter,
 | 
						|
new.f_charbig = '####updated per insert trigger####';
 | 
						|
SET @counter = @counter + 1;
 | 
						|
END|
 | 
						|
SET @counter = 1;
 | 
						|
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
 | 
						|
INSERT INTO t1 (f_char1, f_char2, f_charbig)
 | 
						|
SELECT CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
 | 
						|
ORDER BY f_int1;
 | 
						|
DROP TRIGGER trg_3;
 | 
						|
	
 | 
						|
# check trigger-12 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_charbig = '####updated per insert trigger####';
 | 
						|
ANALYZE  TABLE t1;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	analyze	status	Engine-independent statistics collected
 | 
						|
test.t1	analyze	status	OK
 | 
						|
CHECK    TABLE t1 EXTENDED;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	check	status	OK
 | 
						|
CHECKSUM TABLE t1 EXTENDED;
 | 
						|
Table	Checksum
 | 
						|
test.t1	<some_value>
 | 
						|
OPTIMIZE TABLE t1;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	optimize	status	OK
 | 
						|
# check layout success:    1
 | 
						|
REPAIR   TABLE t1 EXTENDED;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	repair	status	OK
 | 
						|
# check layout success:    1
 | 
						|
TRUNCATE t1;
 | 
						|
	
 | 
						|
# check TRUNCATE success: 	1
 | 
						|
# check layout success:    1
 | 
						|
# End usability test (inc/partition_check.inc)
 | 
						|
DROP TABLE t1;
 | 
						|
CREATE TABLE t1 (
 | 
						|
f_int1 INTEGER DEFAULT 0,
 | 
						|
f_int2 INTEGER DEFAULT 0,
 | 
						|
f_char1 CHAR(20),
 | 
						|
f_char2 CHAR(20),
 | 
						|
f_charbig VARCHAR(1000)
 | 
						|
 | 
						|
)
 | 
						|
PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
 | 
						|
(PARTITION parta VALUES LESS THAN (0)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION partb VALUES LESS THAN (5)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION partc VALUES LESS THAN (10)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION partd VALUES LESS THAN (2147483646)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir');
 | 
						|
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
 | 
						|
# Start usability test (inc/partition_check.inc)
 | 
						|
create_command
 | 
						|
SHOW CREATE TABLE t1;
 | 
						|
Table	Create Table
 | 
						|
t1	CREATE TABLE `t1` (
 | 
						|
  `f_int1` int(11) DEFAULT 0,
 | 
						|
  `f_int2` int(11) DEFAULT 0,
 | 
						|
  `f_char1` char(20) DEFAULT NULL,
 | 
						|
  `f_char2` char(20) DEFAULT NULL,
 | 
						|
  `f_charbig` varchar(1000) DEFAULT NULL
 | 
						|
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | 
						|
 PARTITION BY RANGE (`f_int1` DIV 2)
 | 
						|
SUBPARTITION BY HASH (`f_int1`)
 | 
						|
SUBPARTITIONS 2
 | 
						|
(PARTITION `parta` VALUES LESS THAN (0) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `partb` VALUES LESS THAN (5) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `partc` VALUES LESS THAN (10) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `partd` VALUES LESS THAN (2147483646) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM)
 | 
						|
 | 
						|
unified filelist
 | 
						|
t1#P#parta#SP#partasp0.MYD
 | 
						|
t1#P#parta#SP#partasp0.MYI
 | 
						|
t1#P#parta#SP#partasp1.MYD
 | 
						|
t1#P#parta#SP#partasp1.MYI
 | 
						|
t1#P#partb#SP#partbsp0.MYD
 | 
						|
t1#P#partb#SP#partbsp0.MYI
 | 
						|
t1#P#partb#SP#partbsp1.MYD
 | 
						|
t1#P#partb#SP#partbsp1.MYI
 | 
						|
t1#P#partc#SP#partcsp0.MYD
 | 
						|
t1#P#partc#SP#partcsp0.MYI
 | 
						|
t1#P#partc#SP#partcsp1.MYD
 | 
						|
t1#P#partc#SP#partcsp1.MYI
 | 
						|
t1#P#partd#SP#partdsp0.MYD
 | 
						|
t1#P#partd#SP#partdsp0.MYI
 | 
						|
t1#P#partd#SP#partdsp1.MYD
 | 
						|
t1#P#partd#SP#partdsp1.MYI
 | 
						|
t1.frm
 | 
						|
t1.par
 | 
						|
t1#P#parta#SP#partasp0.MYD
 | 
						|
t1#P#parta#SP#partasp1.MYD
 | 
						|
t1#P#partb#SP#partbsp0.MYD
 | 
						|
t1#P#partb#SP#partbsp1.MYD
 | 
						|
t1#P#partc#SP#partcsp0.MYD
 | 
						|
t1#P#partc#SP#partcsp1.MYD
 | 
						|
t1#P#partd#SP#partdsp0.MYD
 | 
						|
t1#P#partd#SP#partdsp1.MYD
 | 
						|
t1#P#parta#SP#partasp0.MYI
 | 
						|
t1#P#parta#SP#partasp1.MYI
 | 
						|
t1#P#partb#SP#partbsp0.MYI
 | 
						|
t1#P#partb#SP#partbsp1.MYI
 | 
						|
t1#P#partc#SP#partcsp0.MYI
 | 
						|
t1#P#partc#SP#partcsp1.MYI
 | 
						|
t1#P#partd#SP#partdsp0.MYI
 | 
						|
t1#P#partd#SP#partdsp1.MYI
 | 
						|
 | 
						|
# check prerequisites-1 success:    1
 | 
						|
# check COUNT(*) success:    1
 | 
						|
# check MIN/MAX(f_int1) success:    1
 | 
						|
# check MIN/MAX(f_int2) success:    1
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
 | 
						|
WHERE f_int1 IN (2,3);
 | 
						|
# check prerequisites-3 success:    1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'delete me';
 | 
						|
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
 | 
						|
# check read via f_int1 success: 1
 | 
						|
# check read via f_int2 success: 1
 | 
						|
	
 | 
						|
# check multiple-1 success: 	1
 | 
						|
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
 | 
						|
	
 | 
						|
# check multiple-2 success: 	1
 | 
						|
INSERT INTO t1 SELECT * FROM t0_template
 | 
						|
WHERE MOD(f_int1,3) = 0;
 | 
						|
	
 | 
						|
# check multiple-3 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = f_int1 + @max_row
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
 | 
						|
AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check multiple-4 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
 | 
						|
AND @max_row_div2 + @max_row_div4 + @max_row;
 | 
						|
	
 | 
						|
# check multiple-5 success: 	1
 | 
						|
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = @cur_value , f_int2 = @cur_value,
 | 
						|
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
 | 
						|
f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-1 success: 	1
 | 
						|
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = @cur_value , f_int2 = @cur_value,
 | 
						|
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
 | 
						|
f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-2 success: 	1
 | 
						|
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
 | 
						|
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
 | 
						|
UPDATE t1 SET f_int1 = @cur_value2
 | 
						|
WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-3 success: 	1
 | 
						|
SET @cur_value1= -1;
 | 
						|
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
 | 
						|
UPDATE t1 SET f_int1 = @cur_value1
 | 
						|
WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-4 success: 	1
 | 
						|
SELECT MAX(f_int1) INTO @cur_value FROM t1;
 | 
						|
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-5 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-6 success: 	1
 | 
						|
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
 | 
						|
	
 | 
						|
# check single-7 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
 | 
						|
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
 | 
						|
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
 | 
						|
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
 | 
						|
f_charbig = '#NULL#';
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = NULL , f_int2 = -@max_row,
 | 
						|
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
 | 
						|
f_charbig = '#NULL#';
 | 
						|
# check null success:    1
 | 
						|
	
 | 
						|
# check null-1 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = -@max_row
 | 
						|
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-2 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = NULL
 | 
						|
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-3 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-4 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 = 0 AND f_int2 = 0
 | 
						|
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
 | 
						|
AND f_charbig = '#NULL#';
 | 
						|
SET AUTOCOMMIT= 0;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
FROM t0_template source_tab
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check transactions-1 success: 	1
 | 
						|
COMMIT WORK;
 | 
						|
	
 | 
						|
# check transactions-2 success: 	1
 | 
						|
ROLLBACK WORK;
 | 
						|
	
 | 
						|
# check transactions-3 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
ROLLBACK WORK;
 | 
						|
	
 | 
						|
# check transactions-4 success: 	1
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
FROM t0_template source_tab
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check transactions-5 success: 	1
 | 
						|
ROLLBACK WORK;
 | 
						|
Warnings:
 | 
						|
Warning	1196	Some non-transactional changed tables couldn't be rolled back
 | 
						|
	
 | 
						|
# check transactions-6 success: 	1
 | 
						|
# INFO: Storage engine used for t1 seems to be not transactional.
 | 
						|
COMMIT;
 | 
						|
	
 | 
						|
# check transactions-7 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
SET @@session.sql_mode = 'traditional';
 | 
						|
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
 | 
						|
'', '', 'was inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
ERROR 22012: Division by 0
 | 
						|
COMMIT;
 | 
						|
	
 | 
						|
# check transactions-8 success: 	1
 | 
						|
# INFO: Storage engine used for t1 seems to be unable to revert
 | 
						|
#       changes made by the failing statement.
 | 
						|
SET @@session.sql_mode = '';
 | 
						|
SET AUTOCOMMIT= 1;
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
 | 
						|
	
 | 
						|
# check special-1 success: 	1
 | 
						|
UPDATE t1 SET f_charbig = '';
 | 
						|
	
 | 
						|
# check special-2 success: 	1
 | 
						|
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
 | 
						|
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
	
 | 
						|
# check trigger-1 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
	
 | 
						|
# check trigger-2 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-3 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-4 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-5 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-6 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-7 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-8 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = old.f_int1 + @max_row,
 | 
						|
new.f_int2 = old.f_int2 - @max_row,
 | 
						|
new.f_charbig = '####updated per update trigger####';
 | 
						|
END|
 | 
						|
UPDATE t1
 | 
						|
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
 | 
						|
f_charbig = '####updated per update statement itself####';
 | 
						|
	
 | 
						|
# check trigger-9 success: 	1
 | 
						|
DROP TRIGGER trg_2;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===');
 | 
						|
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = new.f_int1 + @max_row,
 | 
						|
new.f_int2 = new.f_int2 - @max_row,
 | 
						|
new.f_charbig = '####updated per update trigger####';
 | 
						|
END|
 | 
						|
UPDATE t1
 | 
						|
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
 | 
						|
f_charbig = '####updated per update statement itself####';
 | 
						|
	
 | 
						|
# check trigger-10 success: 	1
 | 
						|
DROP TRIGGER trg_2;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===');
 | 
						|
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = @my_max1 + @counter,
 | 
						|
new.f_int2 = @my_min2 - @counter,
 | 
						|
new.f_charbig = '####updated per insert trigger####';
 | 
						|
SET @counter = @counter + 1;
 | 
						|
END|
 | 
						|
SET @counter = 1;
 | 
						|
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
 | 
						|
ORDER BY f_int1;
 | 
						|
DROP TRIGGER trg_3;
 | 
						|
	
 | 
						|
# check trigger-11 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_charbig = '####updated per insert trigger####';
 | 
						|
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = @my_max1 + @counter,
 | 
						|
new.f_int2 = @my_min2 - @counter,
 | 
						|
new.f_charbig = '####updated per insert trigger####';
 | 
						|
SET @counter = @counter + 1;
 | 
						|
END|
 | 
						|
SET @counter = 1;
 | 
						|
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
 | 
						|
INSERT INTO t1 (f_char1, f_char2, f_charbig)
 | 
						|
SELECT CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
 | 
						|
ORDER BY f_int1;
 | 
						|
DROP TRIGGER trg_3;
 | 
						|
	
 | 
						|
# check trigger-12 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_charbig = '####updated per insert trigger####';
 | 
						|
ANALYZE  TABLE t1;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	analyze	status	Engine-independent statistics collected
 | 
						|
test.t1	analyze	status	OK
 | 
						|
CHECK    TABLE t1 EXTENDED;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	check	status	OK
 | 
						|
CHECKSUM TABLE t1 EXTENDED;
 | 
						|
Table	Checksum
 | 
						|
test.t1	<some_value>
 | 
						|
OPTIMIZE TABLE t1;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	optimize	status	OK
 | 
						|
# check layout success:    1
 | 
						|
REPAIR   TABLE t1 EXTENDED;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	repair	status	OK
 | 
						|
# check layout success:    1
 | 
						|
TRUNCATE t1;
 | 
						|
	
 | 
						|
# check TRUNCATE success: 	1
 | 
						|
# check layout success:    1
 | 
						|
# End usability test (inc/partition_check.inc)
 | 
						|
DROP TABLE t1;
 | 
						|
CREATE TABLE t1 (
 | 
						|
f_int1 INTEGER DEFAULT 0,
 | 
						|
f_int2 INTEGER DEFAULT 0,
 | 
						|
f_char1 CHAR(20),
 | 
						|
f_char2 CHAR(20),
 | 
						|
f_charbig VARCHAR(1000)
 | 
						|
 | 
						|
)
 | 
						|
PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
 | 
						|
(PARTITION part1 VALUES LESS THAN (0)
 | 
						|
(SUBPARTITION subpart11 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
SUBPARTITION subpart12 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'),
 | 
						|
PARTITION part2 VALUES LESS THAN (5)
 | 
						|
(SUBPARTITION subpart21 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
SUBPARTITION subpart22 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'),
 | 
						|
PARTITION part3 VALUES LESS THAN (10)
 | 
						|
(SUBPARTITION subpart31 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
SUBPARTITION subpart32 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'),
 | 
						|
PARTITION part4 VALUES LESS THAN (2147483646)
 | 
						|
(SUBPARTITION subpart41 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
SUBPARTITION subpart42 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'));
 | 
						|
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
 | 
						|
# Start usability test (inc/partition_check.inc)
 | 
						|
create_command
 | 
						|
SHOW CREATE TABLE t1;
 | 
						|
Table	Create Table
 | 
						|
t1	CREATE TABLE `t1` (
 | 
						|
  `f_int1` int(11) DEFAULT 0,
 | 
						|
  `f_int2` int(11) DEFAULT 0,
 | 
						|
  `f_char1` char(20) DEFAULT NULL,
 | 
						|
  `f_char2` char(20) DEFAULT NULL,
 | 
						|
  `f_charbig` varchar(1000) DEFAULT NULL
 | 
						|
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | 
						|
 PARTITION BY RANGE (`f_int1`)
 | 
						|
SUBPARTITION BY KEY (`f_int1`)
 | 
						|
(PARTITION `part1` VALUES LESS THAN (0)
 | 
						|
 (SUBPARTITION `subpart11` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
  SUBPARTITION `subpart12` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM),
 | 
						|
 PARTITION `part2` VALUES LESS THAN (5)
 | 
						|
 (SUBPARTITION `subpart21` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
  SUBPARTITION `subpart22` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM),
 | 
						|
 PARTITION `part3` VALUES LESS THAN (10)
 | 
						|
 (SUBPARTITION `subpart31` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
  SUBPARTITION `subpart32` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM),
 | 
						|
 PARTITION `part4` VALUES LESS THAN (2147483646)
 | 
						|
 (SUBPARTITION `subpart41` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
  SUBPARTITION `subpart42` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM))
 | 
						|
 | 
						|
unified filelist
 | 
						|
t1#P#part1#SP#subpart11.MYD
 | 
						|
t1#P#part1#SP#subpart11.MYI
 | 
						|
t1#P#part1#SP#subpart12.MYD
 | 
						|
t1#P#part1#SP#subpart12.MYI
 | 
						|
t1#P#part2#SP#subpart21.MYD
 | 
						|
t1#P#part2#SP#subpart21.MYI
 | 
						|
t1#P#part2#SP#subpart22.MYD
 | 
						|
t1#P#part2#SP#subpart22.MYI
 | 
						|
t1#P#part3#SP#subpart31.MYD
 | 
						|
t1#P#part3#SP#subpart31.MYI
 | 
						|
t1#P#part3#SP#subpart32.MYD
 | 
						|
t1#P#part3#SP#subpart32.MYI
 | 
						|
t1#P#part4#SP#subpart41.MYD
 | 
						|
t1#P#part4#SP#subpart41.MYI
 | 
						|
t1#P#part4#SP#subpart42.MYD
 | 
						|
t1#P#part4#SP#subpart42.MYI
 | 
						|
t1.frm
 | 
						|
t1.par
 | 
						|
t1#P#part1#SP#subpart11.MYD
 | 
						|
t1#P#part1#SP#subpart12.MYD
 | 
						|
t1#P#part2#SP#subpart21.MYD
 | 
						|
t1#P#part2#SP#subpart22.MYD
 | 
						|
t1#P#part3#SP#subpart31.MYD
 | 
						|
t1#P#part3#SP#subpart32.MYD
 | 
						|
t1#P#part4#SP#subpart41.MYD
 | 
						|
t1#P#part4#SP#subpart42.MYD
 | 
						|
t1#P#part1#SP#subpart11.MYI
 | 
						|
t1#P#part1#SP#subpart12.MYI
 | 
						|
t1#P#part2#SP#subpart21.MYI
 | 
						|
t1#P#part2#SP#subpart22.MYI
 | 
						|
t1#P#part3#SP#subpart31.MYI
 | 
						|
t1#P#part3#SP#subpart32.MYI
 | 
						|
t1#P#part4#SP#subpart41.MYI
 | 
						|
t1#P#part4#SP#subpart42.MYI
 | 
						|
 | 
						|
# check prerequisites-1 success:    1
 | 
						|
# check COUNT(*) success:    1
 | 
						|
# check MIN/MAX(f_int1) success:    1
 | 
						|
# check MIN/MAX(f_int2) success:    1
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
 | 
						|
WHERE f_int1 IN (2,3);
 | 
						|
# check prerequisites-3 success:    1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'delete me';
 | 
						|
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
 | 
						|
# check read via f_int1 success: 1
 | 
						|
# check read via f_int2 success: 1
 | 
						|
	
 | 
						|
# check multiple-1 success: 	1
 | 
						|
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
 | 
						|
	
 | 
						|
# check multiple-2 success: 	1
 | 
						|
INSERT INTO t1 SELECT * FROM t0_template
 | 
						|
WHERE MOD(f_int1,3) = 0;
 | 
						|
	
 | 
						|
# check multiple-3 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = f_int1 + @max_row
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
 | 
						|
AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check multiple-4 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
 | 
						|
AND @max_row_div2 + @max_row_div4 + @max_row;
 | 
						|
	
 | 
						|
# check multiple-5 success: 	1
 | 
						|
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = @cur_value , f_int2 = @cur_value,
 | 
						|
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
 | 
						|
f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-1 success: 	1
 | 
						|
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = @cur_value , f_int2 = @cur_value,
 | 
						|
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
 | 
						|
f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-2 success: 	1
 | 
						|
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
 | 
						|
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
 | 
						|
UPDATE t1 SET f_int1 = @cur_value2
 | 
						|
WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-3 success: 	1
 | 
						|
SET @cur_value1= -1;
 | 
						|
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
 | 
						|
UPDATE t1 SET f_int1 = @cur_value1
 | 
						|
WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-4 success: 	1
 | 
						|
SELECT MAX(f_int1) INTO @cur_value FROM t1;
 | 
						|
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-5 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-6 success: 	1
 | 
						|
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
 | 
						|
ERROR HY000: Table has no partition for value 2147483647
 | 
						|
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
 | 
						|
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
 | 
						|
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
 | 
						|
f_charbig = '#NULL#';
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = NULL , f_int2 = -@max_row,
 | 
						|
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
 | 
						|
f_charbig = '#NULL#';
 | 
						|
# check null success:    1
 | 
						|
	
 | 
						|
# check null-1 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = -@max_row
 | 
						|
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-2 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = NULL
 | 
						|
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-3 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-4 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 = 0 AND f_int2 = 0
 | 
						|
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
 | 
						|
AND f_charbig = '#NULL#';
 | 
						|
SET AUTOCOMMIT= 0;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
FROM t0_template source_tab
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check transactions-1 success: 	1
 | 
						|
COMMIT WORK;
 | 
						|
	
 | 
						|
# check transactions-2 success: 	1
 | 
						|
ROLLBACK WORK;
 | 
						|
	
 | 
						|
# check transactions-3 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
ROLLBACK WORK;
 | 
						|
	
 | 
						|
# check transactions-4 success: 	1
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
FROM t0_template source_tab
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check transactions-5 success: 	1
 | 
						|
ROLLBACK WORK;
 | 
						|
Warnings:
 | 
						|
Warning	1196	Some non-transactional changed tables couldn't be rolled back
 | 
						|
	
 | 
						|
# check transactions-6 success: 	1
 | 
						|
# INFO: Storage engine used for t1 seems to be not transactional.
 | 
						|
COMMIT;
 | 
						|
	
 | 
						|
# check transactions-7 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
SET @@session.sql_mode = 'traditional';
 | 
						|
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
 | 
						|
'', '', 'was inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
ERROR 22012: Division by 0
 | 
						|
COMMIT;
 | 
						|
	
 | 
						|
# check transactions-8 success: 	1
 | 
						|
# INFO: Storage engine used for t1 seems to be unable to revert
 | 
						|
#       changes made by the failing statement.
 | 
						|
SET @@session.sql_mode = '';
 | 
						|
SET AUTOCOMMIT= 1;
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
 | 
						|
	
 | 
						|
# check special-1 success: 	1
 | 
						|
UPDATE t1 SET f_charbig = '';
 | 
						|
	
 | 
						|
# check special-2 success: 	1
 | 
						|
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
 | 
						|
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
	
 | 
						|
# check trigger-1 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
	
 | 
						|
# check trigger-2 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-3 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-4 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-5 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-6 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-7 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-8 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = old.f_int1 + @max_row,
 | 
						|
new.f_int2 = old.f_int2 - @max_row,
 | 
						|
new.f_charbig = '####updated per update trigger####';
 | 
						|
END|
 | 
						|
UPDATE t1
 | 
						|
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
 | 
						|
f_charbig = '####updated per update statement itself####';
 | 
						|
	
 | 
						|
# check trigger-9 success: 	1
 | 
						|
DROP TRIGGER trg_2;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===');
 | 
						|
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = new.f_int1 + @max_row,
 | 
						|
new.f_int2 = new.f_int2 - @max_row,
 | 
						|
new.f_charbig = '####updated per update trigger####';
 | 
						|
END|
 | 
						|
UPDATE t1
 | 
						|
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
 | 
						|
f_charbig = '####updated per update statement itself####';
 | 
						|
	
 | 
						|
# check trigger-10 success: 	1
 | 
						|
DROP TRIGGER trg_2;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===');
 | 
						|
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = @my_max1 + @counter,
 | 
						|
new.f_int2 = @my_min2 - @counter,
 | 
						|
new.f_charbig = '####updated per insert trigger####';
 | 
						|
SET @counter = @counter + 1;
 | 
						|
END|
 | 
						|
SET @counter = 1;
 | 
						|
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
 | 
						|
ORDER BY f_int1;
 | 
						|
DROP TRIGGER trg_3;
 | 
						|
	
 | 
						|
# check trigger-11 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_charbig = '####updated per insert trigger####';
 | 
						|
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = @my_max1 + @counter,
 | 
						|
new.f_int2 = @my_min2 - @counter,
 | 
						|
new.f_charbig = '####updated per insert trigger####';
 | 
						|
SET @counter = @counter + 1;
 | 
						|
END|
 | 
						|
SET @counter = 1;
 | 
						|
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
 | 
						|
INSERT INTO t1 (f_char1, f_char2, f_charbig)
 | 
						|
SELECT CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
 | 
						|
ORDER BY f_int1;
 | 
						|
DROP TRIGGER trg_3;
 | 
						|
	
 | 
						|
# check trigger-12 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_charbig = '####updated per insert trigger####';
 | 
						|
ANALYZE  TABLE t1;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	analyze	status	Engine-independent statistics collected
 | 
						|
test.t1	analyze	status	OK
 | 
						|
CHECK    TABLE t1 EXTENDED;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	check	status	OK
 | 
						|
CHECKSUM TABLE t1 EXTENDED;
 | 
						|
Table	Checksum
 | 
						|
test.t1	<some_value>
 | 
						|
OPTIMIZE TABLE t1;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	optimize	status	OK
 | 
						|
# check layout success:    1
 | 
						|
REPAIR   TABLE t1 EXTENDED;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	repair	status	OK
 | 
						|
# check layout success:    1
 | 
						|
TRUNCATE t1;
 | 
						|
	
 | 
						|
# check TRUNCATE success: 	1
 | 
						|
# check layout success:    1
 | 
						|
# End usability test (inc/partition_check.inc)
 | 
						|
DROP TABLE t1;
 | 
						|
CREATE TABLE t1 (
 | 
						|
f_int1 INTEGER DEFAULT 0,
 | 
						|
f_int2 INTEGER DEFAULT 0,
 | 
						|
f_char1 CHAR(20),
 | 
						|
f_char2 CHAR(20),
 | 
						|
f_charbig VARCHAR(1000)
 | 
						|
 | 
						|
)
 | 
						|
PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
 | 
						|
(PARTITION part1 VALUES IN (0)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'
 | 
						|
(SUBPARTITION sp11 
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
SUBPARTITION sp12
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'),
 | 
						|
PARTITION part2 VALUES IN (1)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'
 | 
						|
(SUBPARTITION sp21 
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
SUBPARTITION sp22
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
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)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'
 | 
						|
(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'));
 | 
						|
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
 | 
						|
# Start usability test (inc/partition_check.inc)
 | 
						|
create_command
 | 
						|
SHOW CREATE TABLE t1;
 | 
						|
Table	Create Table
 | 
						|
t1	CREATE TABLE `t1` (
 | 
						|
  `f_int1` int(11) DEFAULT 0,
 | 
						|
  `f_int2` int(11) DEFAULT 0,
 | 
						|
  `f_char1` char(20) DEFAULT NULL,
 | 
						|
  `f_char2` char(20) DEFAULT NULL,
 | 
						|
  `f_charbig` varchar(1000) DEFAULT NULL
 | 
						|
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | 
						|
 PARTITION BY LIST (abs(`f_int1` MOD 3))
 | 
						|
SUBPARTITION BY HASH (`f_int1` + 1)
 | 
						|
(PARTITION `part1` VALUES IN (0)
 | 
						|
 (SUBPARTITION `sp11` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
  SUBPARTITION `sp12` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM),
 | 
						|
 PARTITION `part2` VALUES IN (1)
 | 
						|
 (SUBPARTITION `sp21` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
  SUBPARTITION `sp22` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM),
 | 
						|
 PARTITION `part3` VALUES IN (2)
 | 
						|
 (SUBPARTITION `sp31` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
  SUBPARTITION `sp32` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM),
 | 
						|
 PARTITION `part4` VALUES IN (NULL)
 | 
						|
 (SUBPARTITION `sp41` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
  SUBPARTITION `sp42` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM))
 | 
						|
 | 
						|
unified filelist
 | 
						|
t1#P#part1#SP#sp11.MYD
 | 
						|
t1#P#part1#SP#sp11.MYI
 | 
						|
t1#P#part1#SP#sp12.MYD
 | 
						|
t1#P#part1#SP#sp12.MYI
 | 
						|
t1#P#part2#SP#sp21.MYD
 | 
						|
t1#P#part2#SP#sp21.MYI
 | 
						|
t1#P#part2#SP#sp22.MYD
 | 
						|
t1#P#part2#SP#sp22.MYI
 | 
						|
t1#P#part3#SP#sp31.MYD
 | 
						|
t1#P#part3#SP#sp31.MYI
 | 
						|
t1#P#part3#SP#sp32.MYD
 | 
						|
t1#P#part3#SP#sp32.MYI
 | 
						|
t1#P#part4#SP#sp41.MYD
 | 
						|
t1#P#part4#SP#sp41.MYI
 | 
						|
t1#P#part4#SP#sp42.MYD
 | 
						|
t1#P#part4#SP#sp42.MYI
 | 
						|
t1.frm
 | 
						|
t1.par
 | 
						|
t1#P#part1#SP#sp11.MYD
 | 
						|
t1#P#part1#SP#sp12.MYD
 | 
						|
t1#P#part2#SP#sp21.MYD
 | 
						|
t1#P#part2#SP#sp22.MYD
 | 
						|
t1#P#part3#SP#sp31.MYD
 | 
						|
t1#P#part3#SP#sp32.MYD
 | 
						|
t1#P#part4#SP#sp41.MYD
 | 
						|
t1#P#part4#SP#sp42.MYD
 | 
						|
t1#P#part1#SP#sp11.MYI
 | 
						|
t1#P#part1#SP#sp12.MYI
 | 
						|
t1#P#part2#SP#sp21.MYI
 | 
						|
t1#P#part2#SP#sp22.MYI
 | 
						|
t1#P#part3#SP#sp31.MYI
 | 
						|
t1#P#part3#SP#sp32.MYI
 | 
						|
t1#P#part4#SP#sp41.MYI
 | 
						|
t1#P#part4#SP#sp42.MYI
 | 
						|
 | 
						|
# check prerequisites-1 success:    1
 | 
						|
# check COUNT(*) success:    1
 | 
						|
# check MIN/MAX(f_int1) success:    1
 | 
						|
# check MIN/MAX(f_int2) success:    1
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
 | 
						|
WHERE f_int1 IN (2,3);
 | 
						|
# check prerequisites-3 success:    1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'delete me';
 | 
						|
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
 | 
						|
# check read via f_int1 success: 1
 | 
						|
# check read via f_int2 success: 1
 | 
						|
	
 | 
						|
# check multiple-1 success: 	1
 | 
						|
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
 | 
						|
	
 | 
						|
# check multiple-2 success: 	1
 | 
						|
INSERT INTO t1 SELECT * FROM t0_template
 | 
						|
WHERE MOD(f_int1,3) = 0;
 | 
						|
	
 | 
						|
# check multiple-3 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = f_int1 + @max_row
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
 | 
						|
AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check multiple-4 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
 | 
						|
AND @max_row_div2 + @max_row_div4 + @max_row;
 | 
						|
	
 | 
						|
# check multiple-5 success: 	1
 | 
						|
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = @cur_value , f_int2 = @cur_value,
 | 
						|
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
 | 
						|
f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-1 success: 	1
 | 
						|
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = @cur_value , f_int2 = @cur_value,
 | 
						|
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
 | 
						|
f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-2 success: 	1
 | 
						|
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
 | 
						|
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
 | 
						|
UPDATE t1 SET f_int1 = @cur_value2
 | 
						|
WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-3 success: 	1
 | 
						|
SET @cur_value1= -1;
 | 
						|
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
 | 
						|
UPDATE t1 SET f_int1 = @cur_value1
 | 
						|
WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-4 success: 	1
 | 
						|
SELECT MAX(f_int1) INTO @cur_value FROM t1;
 | 
						|
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-5 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-6 success: 	1
 | 
						|
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
 | 
						|
	
 | 
						|
# check single-7 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
 | 
						|
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
 | 
						|
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
 | 
						|
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
 | 
						|
f_charbig = '#NULL#';
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = NULL , f_int2 = -@max_row,
 | 
						|
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
 | 
						|
f_charbig = '#NULL#';
 | 
						|
# check null success:    1
 | 
						|
	
 | 
						|
# check null-1 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = -@max_row
 | 
						|
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-2 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = NULL
 | 
						|
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-3 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-4 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 = 0 AND f_int2 = 0
 | 
						|
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
 | 
						|
AND f_charbig = '#NULL#';
 | 
						|
SET AUTOCOMMIT= 0;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
FROM t0_template source_tab
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check transactions-1 success: 	1
 | 
						|
COMMIT WORK;
 | 
						|
	
 | 
						|
# check transactions-2 success: 	1
 | 
						|
ROLLBACK WORK;
 | 
						|
	
 | 
						|
# check transactions-3 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
ROLLBACK WORK;
 | 
						|
	
 | 
						|
# check transactions-4 success: 	1
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
FROM t0_template source_tab
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check transactions-5 success: 	1
 | 
						|
ROLLBACK WORK;
 | 
						|
Warnings:
 | 
						|
Warning	1196	Some non-transactional changed tables couldn't be rolled back
 | 
						|
	
 | 
						|
# check transactions-6 success: 	1
 | 
						|
# INFO: Storage engine used for t1 seems to be not transactional.
 | 
						|
COMMIT;
 | 
						|
	
 | 
						|
# check transactions-7 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
SET @@session.sql_mode = 'traditional';
 | 
						|
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
 | 
						|
'', '', 'was inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
ERROR 22012: Division by 0
 | 
						|
COMMIT;
 | 
						|
	
 | 
						|
# check transactions-8 success: 	1
 | 
						|
# INFO: Storage engine used for t1 seems to be unable to revert
 | 
						|
#       changes made by the failing statement.
 | 
						|
SET @@session.sql_mode = '';
 | 
						|
SET AUTOCOMMIT= 1;
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
 | 
						|
	
 | 
						|
# check special-1 success: 	1
 | 
						|
UPDATE t1 SET f_charbig = '';
 | 
						|
	
 | 
						|
# check special-2 success: 	1
 | 
						|
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
 | 
						|
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
	
 | 
						|
# check trigger-1 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
	
 | 
						|
# check trigger-2 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-3 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-4 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-5 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-6 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-7 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-8 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = old.f_int1 + @max_row,
 | 
						|
new.f_int2 = old.f_int2 - @max_row,
 | 
						|
new.f_charbig = '####updated per update trigger####';
 | 
						|
END|
 | 
						|
UPDATE t1
 | 
						|
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
 | 
						|
f_charbig = '####updated per update statement itself####';
 | 
						|
	
 | 
						|
# check trigger-9 success: 	1
 | 
						|
DROP TRIGGER trg_2;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===');
 | 
						|
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = new.f_int1 + @max_row,
 | 
						|
new.f_int2 = new.f_int2 - @max_row,
 | 
						|
new.f_charbig = '####updated per update trigger####';
 | 
						|
END|
 | 
						|
UPDATE t1
 | 
						|
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
 | 
						|
f_charbig = '####updated per update statement itself####';
 | 
						|
	
 | 
						|
# check trigger-10 success: 	1
 | 
						|
DROP TRIGGER trg_2;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===');
 | 
						|
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = @my_max1 + @counter,
 | 
						|
new.f_int2 = @my_min2 - @counter,
 | 
						|
new.f_charbig = '####updated per insert trigger####';
 | 
						|
SET @counter = @counter + 1;
 | 
						|
END|
 | 
						|
SET @counter = 1;
 | 
						|
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
 | 
						|
ORDER BY f_int1;
 | 
						|
DROP TRIGGER trg_3;
 | 
						|
	
 | 
						|
# check trigger-11 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_charbig = '####updated per insert trigger####';
 | 
						|
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = @my_max1 + @counter,
 | 
						|
new.f_int2 = @my_min2 - @counter,
 | 
						|
new.f_charbig = '####updated per insert trigger####';
 | 
						|
SET @counter = @counter + 1;
 | 
						|
END|
 | 
						|
SET @counter = 1;
 | 
						|
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
 | 
						|
INSERT INTO t1 (f_char1, f_char2, f_charbig)
 | 
						|
SELECT CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
 | 
						|
ORDER BY f_int1;
 | 
						|
DROP TRIGGER trg_3;
 | 
						|
	
 | 
						|
# check trigger-12 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_charbig = '####updated per insert trigger####';
 | 
						|
ANALYZE  TABLE t1;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	analyze	status	Engine-independent statistics collected
 | 
						|
test.t1	analyze	status	OK
 | 
						|
CHECK    TABLE t1 EXTENDED;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	check	status	OK
 | 
						|
CHECKSUM TABLE t1 EXTENDED;
 | 
						|
Table	Checksum
 | 
						|
test.t1	<some_value>
 | 
						|
OPTIMIZE TABLE t1;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	optimize	status	OK
 | 
						|
# check layout success:    1
 | 
						|
REPAIR   TABLE t1 EXTENDED;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	repair	status	OK
 | 
						|
# check layout success:    1
 | 
						|
TRUNCATE t1;
 | 
						|
	
 | 
						|
# check TRUNCATE success: 	1
 | 
						|
# check layout success:    1
 | 
						|
# End usability test (inc/partition_check.inc)
 | 
						|
DROP TABLE t1;
 | 
						|
CREATE TABLE t1 (
 | 
						|
f_int1 INTEGER DEFAULT 0,
 | 
						|
f_int2 INTEGER DEFAULT 0,
 | 
						|
f_char1 CHAR(20),
 | 
						|
f_char2 CHAR(20),
 | 
						|
f_charbig VARCHAR(1000)
 | 
						|
 | 
						|
)
 | 
						|
PARTITION BY LIST(ABS(MOD(f_int1,2)))
 | 
						|
SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
 | 
						|
(PARTITION part1 VALUES IN (0)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION part2 VALUES IN (1)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION part3 VALUES IN (NULL)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir');
 | 
						|
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
 | 
						|
# Start usability test (inc/partition_check.inc)
 | 
						|
create_command
 | 
						|
SHOW CREATE TABLE t1;
 | 
						|
Table	Create Table
 | 
						|
t1	CREATE TABLE `t1` (
 | 
						|
  `f_int1` int(11) DEFAULT 0,
 | 
						|
  `f_int2` int(11) DEFAULT 0,
 | 
						|
  `f_char1` char(20) DEFAULT NULL,
 | 
						|
  `f_char2` char(20) DEFAULT NULL,
 | 
						|
  `f_charbig` varchar(1000) DEFAULT NULL
 | 
						|
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | 
						|
 PARTITION BY LIST (abs(`f_int1` MOD 2))
 | 
						|
SUBPARTITION BY KEY (`f_int1`)
 | 
						|
SUBPARTITIONS 3
 | 
						|
(PARTITION `part1` VALUES IN (0) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `part2` VALUES IN (1) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `part3` VALUES IN (NULL) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM)
 | 
						|
 | 
						|
unified filelist
 | 
						|
t1#P#part1#SP#part1sp0.MYD
 | 
						|
t1#P#part1#SP#part1sp0.MYI
 | 
						|
t1#P#part1#SP#part1sp1.MYD
 | 
						|
t1#P#part1#SP#part1sp1.MYI
 | 
						|
t1#P#part1#SP#part1sp2.MYD
 | 
						|
t1#P#part1#SP#part1sp2.MYI
 | 
						|
t1#P#part2#SP#part2sp0.MYD
 | 
						|
t1#P#part2#SP#part2sp0.MYI
 | 
						|
t1#P#part2#SP#part2sp1.MYD
 | 
						|
t1#P#part2#SP#part2sp1.MYI
 | 
						|
t1#P#part2#SP#part2sp2.MYD
 | 
						|
t1#P#part2#SP#part2sp2.MYI
 | 
						|
t1#P#part3#SP#part3sp0.MYD
 | 
						|
t1#P#part3#SP#part3sp0.MYI
 | 
						|
t1#P#part3#SP#part3sp1.MYD
 | 
						|
t1#P#part3#SP#part3sp1.MYI
 | 
						|
t1#P#part3#SP#part3sp2.MYD
 | 
						|
t1#P#part3#SP#part3sp2.MYI
 | 
						|
t1.frm
 | 
						|
t1.par
 | 
						|
t1#P#part1#SP#part1sp0.MYD
 | 
						|
t1#P#part1#SP#part1sp1.MYD
 | 
						|
t1#P#part1#SP#part1sp2.MYD
 | 
						|
t1#P#part2#SP#part2sp0.MYD
 | 
						|
t1#P#part2#SP#part2sp1.MYD
 | 
						|
t1#P#part2#SP#part2sp2.MYD
 | 
						|
t1#P#part3#SP#part3sp0.MYD
 | 
						|
t1#P#part3#SP#part3sp1.MYD
 | 
						|
t1#P#part3#SP#part3sp2.MYD
 | 
						|
t1#P#part1#SP#part1sp0.MYI
 | 
						|
t1#P#part1#SP#part1sp1.MYI
 | 
						|
t1#P#part1#SP#part1sp2.MYI
 | 
						|
t1#P#part2#SP#part2sp0.MYI
 | 
						|
t1#P#part2#SP#part2sp1.MYI
 | 
						|
t1#P#part2#SP#part2sp2.MYI
 | 
						|
t1#P#part3#SP#part3sp0.MYI
 | 
						|
t1#P#part3#SP#part3sp1.MYI
 | 
						|
t1#P#part3#SP#part3sp2.MYI
 | 
						|
 | 
						|
# check prerequisites-1 success:    1
 | 
						|
# check COUNT(*) success:    1
 | 
						|
# check MIN/MAX(f_int1) success:    1
 | 
						|
# check MIN/MAX(f_int2) success:    1
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
 | 
						|
WHERE f_int1 IN (2,3);
 | 
						|
# check prerequisites-3 success:    1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'delete me';
 | 
						|
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
 | 
						|
# check read via f_int1 success: 1
 | 
						|
# check read via f_int2 success: 1
 | 
						|
	
 | 
						|
# check multiple-1 success: 	1
 | 
						|
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
 | 
						|
	
 | 
						|
# check multiple-2 success: 	1
 | 
						|
INSERT INTO t1 SELECT * FROM t0_template
 | 
						|
WHERE MOD(f_int1,3) = 0;
 | 
						|
	
 | 
						|
# check multiple-3 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = f_int1 + @max_row
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
 | 
						|
AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check multiple-4 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
 | 
						|
AND @max_row_div2 + @max_row_div4 + @max_row;
 | 
						|
	
 | 
						|
# check multiple-5 success: 	1
 | 
						|
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = @cur_value , f_int2 = @cur_value,
 | 
						|
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
 | 
						|
f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-1 success: 	1
 | 
						|
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = @cur_value , f_int2 = @cur_value,
 | 
						|
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
 | 
						|
f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-2 success: 	1
 | 
						|
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
 | 
						|
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
 | 
						|
UPDATE t1 SET f_int1 = @cur_value2
 | 
						|
WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-3 success: 	1
 | 
						|
SET @cur_value1= -1;
 | 
						|
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
 | 
						|
UPDATE t1 SET f_int1 = @cur_value1
 | 
						|
WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-4 success: 	1
 | 
						|
SELECT MAX(f_int1) INTO @cur_value FROM t1;
 | 
						|
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-5 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-6 success: 	1
 | 
						|
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
 | 
						|
	
 | 
						|
# check single-7 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
 | 
						|
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
 | 
						|
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
 | 
						|
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
 | 
						|
f_charbig = '#NULL#';
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = NULL , f_int2 = -@max_row,
 | 
						|
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
 | 
						|
f_charbig = '#NULL#';
 | 
						|
# check null success:    1
 | 
						|
	
 | 
						|
# check null-1 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = -@max_row
 | 
						|
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-2 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = NULL
 | 
						|
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-3 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-4 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 = 0 AND f_int2 = 0
 | 
						|
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
 | 
						|
AND f_charbig = '#NULL#';
 | 
						|
SET AUTOCOMMIT= 0;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
FROM t0_template source_tab
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check transactions-1 success: 	1
 | 
						|
COMMIT WORK;
 | 
						|
	
 | 
						|
# check transactions-2 success: 	1
 | 
						|
ROLLBACK WORK;
 | 
						|
	
 | 
						|
# check transactions-3 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
ROLLBACK WORK;
 | 
						|
	
 | 
						|
# check transactions-4 success: 	1
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
FROM t0_template source_tab
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check transactions-5 success: 	1
 | 
						|
ROLLBACK WORK;
 | 
						|
Warnings:
 | 
						|
Warning	1196	Some non-transactional changed tables couldn't be rolled back
 | 
						|
	
 | 
						|
# check transactions-6 success: 	1
 | 
						|
# INFO: Storage engine used for t1 seems to be not transactional.
 | 
						|
COMMIT;
 | 
						|
	
 | 
						|
# check transactions-7 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
SET @@session.sql_mode = 'traditional';
 | 
						|
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
 | 
						|
'', '', 'was inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
ERROR 22012: Division by 0
 | 
						|
COMMIT;
 | 
						|
	
 | 
						|
# check transactions-8 success: 	1
 | 
						|
# INFO: Storage engine used for t1 seems to be unable to revert
 | 
						|
#       changes made by the failing statement.
 | 
						|
SET @@session.sql_mode = '';
 | 
						|
SET AUTOCOMMIT= 1;
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
 | 
						|
	
 | 
						|
# check special-1 success: 	1
 | 
						|
UPDATE t1 SET f_charbig = '';
 | 
						|
	
 | 
						|
# check special-2 success: 	1
 | 
						|
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
 | 
						|
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
	
 | 
						|
# check trigger-1 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
	
 | 
						|
# check trigger-2 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-3 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-4 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-5 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-6 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-7 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-8 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = old.f_int1 + @max_row,
 | 
						|
new.f_int2 = old.f_int2 - @max_row,
 | 
						|
new.f_charbig = '####updated per update trigger####';
 | 
						|
END|
 | 
						|
UPDATE t1
 | 
						|
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
 | 
						|
f_charbig = '####updated per update statement itself####';
 | 
						|
	
 | 
						|
# check trigger-9 success: 	1
 | 
						|
DROP TRIGGER trg_2;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===');
 | 
						|
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = new.f_int1 + @max_row,
 | 
						|
new.f_int2 = new.f_int2 - @max_row,
 | 
						|
new.f_charbig = '####updated per update trigger####';
 | 
						|
END|
 | 
						|
UPDATE t1
 | 
						|
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
 | 
						|
f_charbig = '####updated per update statement itself####';
 | 
						|
	
 | 
						|
# check trigger-10 success: 	1
 | 
						|
DROP TRIGGER trg_2;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===');
 | 
						|
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = @my_max1 + @counter,
 | 
						|
new.f_int2 = @my_min2 - @counter,
 | 
						|
new.f_charbig = '####updated per insert trigger####';
 | 
						|
SET @counter = @counter + 1;
 | 
						|
END|
 | 
						|
SET @counter = 1;
 | 
						|
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
 | 
						|
ORDER BY f_int1;
 | 
						|
DROP TRIGGER trg_3;
 | 
						|
	
 | 
						|
# check trigger-11 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_charbig = '####updated per insert trigger####';
 | 
						|
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = @my_max1 + @counter,
 | 
						|
new.f_int2 = @my_min2 - @counter,
 | 
						|
new.f_charbig = '####updated per insert trigger####';
 | 
						|
SET @counter = @counter + 1;
 | 
						|
END|
 | 
						|
SET @counter = 1;
 | 
						|
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
 | 
						|
INSERT INTO t1 (f_char1, f_char2, f_charbig)
 | 
						|
SELECT CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
 | 
						|
ORDER BY f_int1;
 | 
						|
DROP TRIGGER trg_3;
 | 
						|
	
 | 
						|
# check trigger-12 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_charbig = '####updated per insert trigger####';
 | 
						|
ANALYZE  TABLE t1;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	analyze	status	Engine-independent statistics collected
 | 
						|
test.t1	analyze	status	OK
 | 
						|
CHECK    TABLE t1 EXTENDED;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	check	status	OK
 | 
						|
CHECKSUM TABLE t1 EXTENDED;
 | 
						|
Table	Checksum
 | 
						|
test.t1	<some_value>
 | 
						|
OPTIMIZE TABLE t1;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	optimize	status	OK
 | 
						|
# check layout success:    1
 | 
						|
REPAIR   TABLE t1 EXTENDED;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	repair	status	OK
 | 
						|
# check layout success:    1
 | 
						|
TRUNCATE t1;
 | 
						|
	
 | 
						|
# check TRUNCATE success: 	1
 | 
						|
# check layout success:    1
 | 
						|
# End usability test (inc/partition_check.inc)
 | 
						|
DROP TABLE t1;
 | 
						|
#  1.2 The partitioning function contains two columns.
 | 
						|
DROP TABLE IF EXISTS t1;
 | 
						|
CREATE TABLE t1 (
 | 
						|
f_int1 INTEGER DEFAULT 0,
 | 
						|
f_int2 INTEGER DEFAULT 0,
 | 
						|
f_char1 CHAR(20),
 | 
						|
f_char2 CHAR(20),
 | 
						|
f_charbig VARCHAR(1000)
 | 
						|
 | 
						|
)
 | 
						|
PARTITION BY HASH(f_int1 + f_int2) PARTITIONS 2
 | 
						|
(PARTITION p1 
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION p2 
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir');
 | 
						|
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
 | 
						|
# Start usability test (inc/partition_check.inc)
 | 
						|
create_command
 | 
						|
SHOW CREATE TABLE t1;
 | 
						|
Table	Create Table
 | 
						|
t1	CREATE TABLE `t1` (
 | 
						|
  `f_int1` int(11) DEFAULT 0,
 | 
						|
  `f_int2` int(11) DEFAULT 0,
 | 
						|
  `f_char1` char(20) DEFAULT NULL,
 | 
						|
  `f_char2` char(20) DEFAULT NULL,
 | 
						|
  `f_charbig` varchar(1000) DEFAULT NULL
 | 
						|
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | 
						|
 PARTITION BY HASH (`f_int1` + `f_int2`)
 | 
						|
(PARTITION `p1` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `p2` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM)
 | 
						|
 | 
						|
unified filelist
 | 
						|
t1#P#p1.MYD
 | 
						|
t1#P#p1.MYI
 | 
						|
t1#P#p2.MYD
 | 
						|
t1#P#p2.MYI
 | 
						|
t1.frm
 | 
						|
t1.par
 | 
						|
t1#P#p1.MYD
 | 
						|
t1#P#p2.MYD
 | 
						|
t1#P#p1.MYI
 | 
						|
t1#P#p2.MYI
 | 
						|
 | 
						|
# check prerequisites-1 success:    1
 | 
						|
# check COUNT(*) success:    1
 | 
						|
# check MIN/MAX(f_int1) success:    1
 | 
						|
# check MIN/MAX(f_int2) success:    1
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
 | 
						|
WHERE f_int1 IN (2,3);
 | 
						|
# check prerequisites-3 success:    1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'delete me';
 | 
						|
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
 | 
						|
# check read via f_int1 success: 1
 | 
						|
# check read via f_int2 success: 1
 | 
						|
	
 | 
						|
# check multiple-1 success: 	1
 | 
						|
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
 | 
						|
	
 | 
						|
# check multiple-2 success: 	1
 | 
						|
INSERT INTO t1 SELECT * FROM t0_template
 | 
						|
WHERE MOD(f_int1,3) = 0;
 | 
						|
	
 | 
						|
# check multiple-3 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = f_int1 + @max_row
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
 | 
						|
AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check multiple-4 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
 | 
						|
AND @max_row_div2 + @max_row_div4 + @max_row;
 | 
						|
	
 | 
						|
# check multiple-5 success: 	1
 | 
						|
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = @cur_value , f_int2 = @cur_value,
 | 
						|
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
 | 
						|
f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-1 success: 	1
 | 
						|
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = @cur_value , f_int2 = @cur_value,
 | 
						|
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
 | 
						|
f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-2 success: 	1
 | 
						|
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
 | 
						|
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
 | 
						|
UPDATE t1 SET f_int1 = @cur_value2
 | 
						|
WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-3 success: 	1
 | 
						|
SET @cur_value1= -1;
 | 
						|
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
 | 
						|
UPDATE t1 SET f_int1 = @cur_value1
 | 
						|
WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-4 success: 	1
 | 
						|
SELECT MAX(f_int1) INTO @cur_value FROM t1;
 | 
						|
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-5 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-6 success: 	1
 | 
						|
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
 | 
						|
	
 | 
						|
# check single-7 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
 | 
						|
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
 | 
						|
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
 | 
						|
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
 | 
						|
f_charbig = '#NULL#';
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = NULL , f_int2 = -@max_row,
 | 
						|
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
 | 
						|
f_charbig = '#NULL#';
 | 
						|
# check null success:    1
 | 
						|
	
 | 
						|
# check null-1 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = -@max_row
 | 
						|
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-2 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = NULL
 | 
						|
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-3 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-4 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 = 0 AND f_int2 = 0
 | 
						|
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
 | 
						|
AND f_charbig = '#NULL#';
 | 
						|
SET AUTOCOMMIT= 0;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
FROM t0_template source_tab
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check transactions-1 success: 	1
 | 
						|
COMMIT WORK;
 | 
						|
	
 | 
						|
# check transactions-2 success: 	1
 | 
						|
ROLLBACK WORK;
 | 
						|
	
 | 
						|
# check transactions-3 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
ROLLBACK WORK;
 | 
						|
	
 | 
						|
# check transactions-4 success: 	1
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
FROM t0_template source_tab
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check transactions-5 success: 	1
 | 
						|
ROLLBACK WORK;
 | 
						|
Warnings:
 | 
						|
Warning	1196	Some non-transactional changed tables couldn't be rolled back
 | 
						|
	
 | 
						|
# check transactions-6 success: 	1
 | 
						|
# INFO: Storage engine used for t1 seems to be not transactional.
 | 
						|
COMMIT;
 | 
						|
	
 | 
						|
# check transactions-7 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
SET @@session.sql_mode = 'traditional';
 | 
						|
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
 | 
						|
'', '', 'was inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
ERROR 22012: Division by 0
 | 
						|
COMMIT;
 | 
						|
	
 | 
						|
# check transactions-8 success: 	1
 | 
						|
# INFO: Storage engine used for t1 seems to be unable to revert
 | 
						|
#       changes made by the failing statement.
 | 
						|
SET @@session.sql_mode = '';
 | 
						|
SET AUTOCOMMIT= 1;
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
 | 
						|
	
 | 
						|
# check special-1 success: 	1
 | 
						|
UPDATE t1 SET f_charbig = '';
 | 
						|
	
 | 
						|
# check special-2 success: 	1
 | 
						|
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
 | 
						|
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
	
 | 
						|
# check trigger-1 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
	
 | 
						|
# check trigger-2 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-3 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-4 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-5 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-6 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-7 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-8 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = old.f_int1 + @max_row,
 | 
						|
new.f_int2 = old.f_int2 - @max_row,
 | 
						|
new.f_charbig = '####updated per update trigger####';
 | 
						|
END|
 | 
						|
UPDATE t1
 | 
						|
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
 | 
						|
f_charbig = '####updated per update statement itself####';
 | 
						|
	
 | 
						|
# check trigger-9 success: 	1
 | 
						|
DROP TRIGGER trg_2;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===');
 | 
						|
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = new.f_int1 + @max_row,
 | 
						|
new.f_int2 = new.f_int2 - @max_row,
 | 
						|
new.f_charbig = '####updated per update trigger####';
 | 
						|
END|
 | 
						|
UPDATE t1
 | 
						|
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
 | 
						|
f_charbig = '####updated per update statement itself####';
 | 
						|
	
 | 
						|
# check trigger-10 success: 	1
 | 
						|
DROP TRIGGER trg_2;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===');
 | 
						|
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = @my_max1 + @counter,
 | 
						|
new.f_int2 = @my_min2 - @counter,
 | 
						|
new.f_charbig = '####updated per insert trigger####';
 | 
						|
SET @counter = @counter + 1;
 | 
						|
END|
 | 
						|
SET @counter = 1;
 | 
						|
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
 | 
						|
ORDER BY f_int1;
 | 
						|
DROP TRIGGER trg_3;
 | 
						|
	
 | 
						|
# check trigger-11 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_charbig = '####updated per insert trigger####';
 | 
						|
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = @my_max1 + @counter,
 | 
						|
new.f_int2 = @my_min2 - @counter,
 | 
						|
new.f_charbig = '####updated per insert trigger####';
 | 
						|
SET @counter = @counter + 1;
 | 
						|
END|
 | 
						|
SET @counter = 1;
 | 
						|
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
 | 
						|
INSERT INTO t1 (f_char1, f_char2, f_charbig)
 | 
						|
SELECT CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
 | 
						|
ORDER BY f_int1;
 | 
						|
DROP TRIGGER trg_3;
 | 
						|
	
 | 
						|
# check trigger-12 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_charbig = '####updated per insert trigger####';
 | 
						|
ANALYZE  TABLE t1;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	analyze	status	Engine-independent statistics collected
 | 
						|
test.t1	analyze	status	OK
 | 
						|
CHECK    TABLE t1 EXTENDED;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	check	status	OK
 | 
						|
CHECKSUM TABLE t1 EXTENDED;
 | 
						|
Table	Checksum
 | 
						|
test.t1	<some_value>
 | 
						|
OPTIMIZE TABLE t1;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	optimize	status	OK
 | 
						|
# check layout success:    1
 | 
						|
REPAIR   TABLE t1 EXTENDED;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	repair	status	OK
 | 
						|
# check layout success:    1
 | 
						|
TRUNCATE t1;
 | 
						|
	
 | 
						|
# check TRUNCATE success: 	1
 | 
						|
# check layout success:    1
 | 
						|
# End usability test (inc/partition_check.inc)
 | 
						|
DROP TABLE t1;
 | 
						|
CREATE TABLE t1 (
 | 
						|
f_int1 INTEGER DEFAULT 0,
 | 
						|
f_int2 INTEGER DEFAULT 0,
 | 
						|
f_char1 CHAR(20),
 | 
						|
f_char2 CHAR(20),
 | 
						|
f_charbig VARCHAR(1000)
 | 
						|
 | 
						|
)
 | 
						|
PARTITION BY KEY(f_int1,f_int2) PARTITIONS 5
 | 
						|
(PARTITION p1
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION p2
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION p3
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION p4
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION p5
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir');
 | 
						|
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
 | 
						|
# Start usability test (inc/partition_check.inc)
 | 
						|
create_command
 | 
						|
SHOW CREATE TABLE t1;
 | 
						|
Table	Create Table
 | 
						|
t1	CREATE TABLE `t1` (
 | 
						|
  `f_int1` int(11) DEFAULT 0,
 | 
						|
  `f_int2` int(11) DEFAULT 0,
 | 
						|
  `f_char1` char(20) DEFAULT NULL,
 | 
						|
  `f_char2` char(20) DEFAULT NULL,
 | 
						|
  `f_charbig` varchar(1000) DEFAULT NULL
 | 
						|
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | 
						|
 PARTITION BY KEY (`f_int1`,`f_int2`)
 | 
						|
(PARTITION `p1` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `p2` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `p3` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `p4` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `p5` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM)
 | 
						|
 | 
						|
unified filelist
 | 
						|
t1#P#p1.MYD
 | 
						|
t1#P#p1.MYI
 | 
						|
t1#P#p2.MYD
 | 
						|
t1#P#p2.MYI
 | 
						|
t1#P#p3.MYD
 | 
						|
t1#P#p3.MYI
 | 
						|
t1#P#p4.MYD
 | 
						|
t1#P#p4.MYI
 | 
						|
t1#P#p5.MYD
 | 
						|
t1#P#p5.MYI
 | 
						|
t1.frm
 | 
						|
t1.par
 | 
						|
t1#P#p1.MYD
 | 
						|
t1#P#p2.MYD
 | 
						|
t1#P#p3.MYD
 | 
						|
t1#P#p4.MYD
 | 
						|
t1#P#p5.MYD
 | 
						|
t1#P#p1.MYI
 | 
						|
t1#P#p2.MYI
 | 
						|
t1#P#p3.MYI
 | 
						|
t1#P#p4.MYI
 | 
						|
t1#P#p5.MYI
 | 
						|
 | 
						|
# check prerequisites-1 success:    1
 | 
						|
# check COUNT(*) success:    1
 | 
						|
# check MIN/MAX(f_int1) success:    1
 | 
						|
# check MIN/MAX(f_int2) success:    1
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
 | 
						|
WHERE f_int1 IN (2,3);
 | 
						|
# check prerequisites-3 success:    1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'delete me';
 | 
						|
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
 | 
						|
# check read via f_int1 success: 1
 | 
						|
# check read via f_int2 success: 1
 | 
						|
	
 | 
						|
# check multiple-1 success: 	1
 | 
						|
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
 | 
						|
	
 | 
						|
# check multiple-2 success: 	1
 | 
						|
INSERT INTO t1 SELECT * FROM t0_template
 | 
						|
WHERE MOD(f_int1,3) = 0;
 | 
						|
	
 | 
						|
# check multiple-3 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = f_int1 + @max_row
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
 | 
						|
AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check multiple-4 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
 | 
						|
AND @max_row_div2 + @max_row_div4 + @max_row;
 | 
						|
	
 | 
						|
# check multiple-5 success: 	1
 | 
						|
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = @cur_value , f_int2 = @cur_value,
 | 
						|
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
 | 
						|
f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-1 success: 	1
 | 
						|
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = @cur_value , f_int2 = @cur_value,
 | 
						|
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
 | 
						|
f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-2 success: 	1
 | 
						|
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
 | 
						|
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
 | 
						|
UPDATE t1 SET f_int1 = @cur_value2
 | 
						|
WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-3 success: 	1
 | 
						|
SET @cur_value1= -1;
 | 
						|
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
 | 
						|
UPDATE t1 SET f_int1 = @cur_value1
 | 
						|
WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-4 success: 	1
 | 
						|
SELECT MAX(f_int1) INTO @cur_value FROM t1;
 | 
						|
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-5 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-6 success: 	1
 | 
						|
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
 | 
						|
	
 | 
						|
# check single-7 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
 | 
						|
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
 | 
						|
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
 | 
						|
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
 | 
						|
f_charbig = '#NULL#';
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = NULL , f_int2 = -@max_row,
 | 
						|
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
 | 
						|
f_charbig = '#NULL#';
 | 
						|
# check null success:    1
 | 
						|
	
 | 
						|
# check null-1 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = -@max_row
 | 
						|
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-2 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = NULL
 | 
						|
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-3 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-4 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 = 0 AND f_int2 = 0
 | 
						|
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
 | 
						|
AND f_charbig = '#NULL#';
 | 
						|
SET AUTOCOMMIT= 0;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
FROM t0_template source_tab
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check transactions-1 success: 	1
 | 
						|
COMMIT WORK;
 | 
						|
	
 | 
						|
# check transactions-2 success: 	1
 | 
						|
ROLLBACK WORK;
 | 
						|
	
 | 
						|
# check transactions-3 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
ROLLBACK WORK;
 | 
						|
	
 | 
						|
# check transactions-4 success: 	1
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
FROM t0_template source_tab
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check transactions-5 success: 	1
 | 
						|
ROLLBACK WORK;
 | 
						|
Warnings:
 | 
						|
Warning	1196	Some non-transactional changed tables couldn't be rolled back
 | 
						|
	
 | 
						|
# check transactions-6 success: 	1
 | 
						|
# INFO: Storage engine used for t1 seems to be not transactional.
 | 
						|
COMMIT;
 | 
						|
	
 | 
						|
# check transactions-7 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
SET @@session.sql_mode = 'traditional';
 | 
						|
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
 | 
						|
'', '', 'was inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
ERROR 22012: Division by 0
 | 
						|
COMMIT;
 | 
						|
	
 | 
						|
# check transactions-8 success: 	1
 | 
						|
# INFO: Storage engine used for t1 seems to be unable to revert
 | 
						|
#       changes made by the failing statement.
 | 
						|
SET @@session.sql_mode = '';
 | 
						|
SET AUTOCOMMIT= 1;
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
 | 
						|
	
 | 
						|
# check special-1 success: 	1
 | 
						|
UPDATE t1 SET f_charbig = '';
 | 
						|
	
 | 
						|
# check special-2 success: 	1
 | 
						|
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
 | 
						|
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
	
 | 
						|
# check trigger-1 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
	
 | 
						|
# check trigger-2 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-3 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-4 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-5 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-6 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-7 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-8 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = old.f_int1 + @max_row,
 | 
						|
new.f_int2 = old.f_int2 - @max_row,
 | 
						|
new.f_charbig = '####updated per update trigger####';
 | 
						|
END|
 | 
						|
UPDATE t1
 | 
						|
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
 | 
						|
f_charbig = '####updated per update statement itself####';
 | 
						|
	
 | 
						|
# check trigger-9 success: 	1
 | 
						|
DROP TRIGGER trg_2;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===');
 | 
						|
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = new.f_int1 + @max_row,
 | 
						|
new.f_int2 = new.f_int2 - @max_row,
 | 
						|
new.f_charbig = '####updated per update trigger####';
 | 
						|
END|
 | 
						|
UPDATE t1
 | 
						|
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
 | 
						|
f_charbig = '####updated per update statement itself####';
 | 
						|
	
 | 
						|
# check trigger-10 success: 	1
 | 
						|
DROP TRIGGER trg_2;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===');
 | 
						|
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = @my_max1 + @counter,
 | 
						|
new.f_int2 = @my_min2 - @counter,
 | 
						|
new.f_charbig = '####updated per insert trigger####';
 | 
						|
SET @counter = @counter + 1;
 | 
						|
END|
 | 
						|
SET @counter = 1;
 | 
						|
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
 | 
						|
ORDER BY f_int1;
 | 
						|
DROP TRIGGER trg_3;
 | 
						|
	
 | 
						|
# check trigger-11 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_charbig = '####updated per insert trigger####';
 | 
						|
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = @my_max1 + @counter,
 | 
						|
new.f_int2 = @my_min2 - @counter,
 | 
						|
new.f_charbig = '####updated per insert trigger####';
 | 
						|
SET @counter = @counter + 1;
 | 
						|
END|
 | 
						|
SET @counter = 1;
 | 
						|
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
 | 
						|
INSERT INTO t1 (f_char1, f_char2, f_charbig)
 | 
						|
SELECT CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
 | 
						|
ORDER BY f_int1;
 | 
						|
DROP TRIGGER trg_3;
 | 
						|
	
 | 
						|
# check trigger-12 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_charbig = '####updated per insert trigger####';
 | 
						|
ANALYZE  TABLE t1;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	analyze	status	Engine-independent statistics collected
 | 
						|
test.t1	analyze	status	OK
 | 
						|
CHECK    TABLE t1 EXTENDED;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	check	status	OK
 | 
						|
CHECKSUM TABLE t1 EXTENDED;
 | 
						|
Table	Checksum
 | 
						|
test.t1	<some_value>
 | 
						|
OPTIMIZE TABLE t1;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	optimize	status	OK
 | 
						|
# check layout success:    1
 | 
						|
REPAIR   TABLE t1 EXTENDED;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	repair	status	OK
 | 
						|
# check layout success:    1
 | 
						|
TRUNCATE t1;
 | 
						|
	
 | 
						|
# check TRUNCATE success: 	1
 | 
						|
# check layout success:    1
 | 
						|
# End usability test (inc/partition_check.inc)
 | 
						|
DROP TABLE t1;
 | 
						|
CREATE TABLE t1 (
 | 
						|
f_int1 INTEGER DEFAULT 0,
 | 
						|
f_int2 INTEGER DEFAULT 0,
 | 
						|
f_char1 CHAR(20),
 | 
						|
f_char2 CHAR(20),
 | 
						|
f_charbig VARCHAR(1000)
 | 
						|
 | 
						|
)
 | 
						|
PARTITION BY LIST(MOD(f_int1 + f_int2,4))
 | 
						|
(PARTITION part_3 VALUES IN (-3)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION part_2 VALUES IN (-2)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION part_1 VALUES IN (-1)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION part_N VALUES IN (NULL)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION part0 VALUES IN (0)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION part1 VALUES IN (1)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION part2 VALUES IN (2)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION part3 VALUES IN (3)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir');
 | 
						|
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
 | 
						|
# Start usability test (inc/partition_check.inc)
 | 
						|
create_command
 | 
						|
SHOW CREATE TABLE t1;
 | 
						|
Table	Create Table
 | 
						|
t1	CREATE TABLE `t1` (
 | 
						|
  `f_int1` int(11) DEFAULT 0,
 | 
						|
  `f_int2` int(11) DEFAULT 0,
 | 
						|
  `f_char1` char(20) DEFAULT NULL,
 | 
						|
  `f_char2` char(20) DEFAULT NULL,
 | 
						|
  `f_charbig` varchar(1000) DEFAULT NULL
 | 
						|
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | 
						|
 PARTITION BY LIST ((`f_int1` + `f_int2`) MOD 4)
 | 
						|
(PARTITION `part_3` VALUES IN (-3) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `part_2` VALUES IN (-2) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `part_1` VALUES IN (-1) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `part_N` VALUES IN (NULL) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `part0` VALUES IN (0) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `part1` VALUES IN (1) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `part2` VALUES IN (2) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `part3` VALUES IN (3) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM)
 | 
						|
 | 
						|
unified filelist
 | 
						|
t1#P#part0.MYD
 | 
						|
t1#P#part0.MYI
 | 
						|
t1#P#part1.MYD
 | 
						|
t1#P#part1.MYI
 | 
						|
t1#P#part2.MYD
 | 
						|
t1#P#part2.MYI
 | 
						|
t1#P#part3.MYD
 | 
						|
t1#P#part3.MYI
 | 
						|
t1#P#part_1.MYD
 | 
						|
t1#P#part_1.MYI
 | 
						|
t1#P#part_2.MYD
 | 
						|
t1#P#part_2.MYI
 | 
						|
t1#P#part_3.MYD
 | 
						|
t1#P#part_3.MYI
 | 
						|
t1#P#part_N.MYD
 | 
						|
t1#P#part_N.MYI
 | 
						|
t1.frm
 | 
						|
t1.par
 | 
						|
t1#P#part0.MYD
 | 
						|
t1#P#part1.MYD
 | 
						|
t1#P#part2.MYD
 | 
						|
t1#P#part3.MYD
 | 
						|
t1#P#part_1.MYD
 | 
						|
t1#P#part_2.MYD
 | 
						|
t1#P#part_3.MYD
 | 
						|
t1#P#part_N.MYD
 | 
						|
t1#P#part0.MYI
 | 
						|
t1#P#part1.MYI
 | 
						|
t1#P#part2.MYI
 | 
						|
t1#P#part3.MYI
 | 
						|
t1#P#part_1.MYI
 | 
						|
t1#P#part_2.MYI
 | 
						|
t1#P#part_3.MYI
 | 
						|
t1#P#part_N.MYI
 | 
						|
 | 
						|
# check prerequisites-1 success:    1
 | 
						|
# check COUNT(*) success:    1
 | 
						|
# check MIN/MAX(f_int1) success:    1
 | 
						|
# check MIN/MAX(f_int2) success:    1
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
 | 
						|
WHERE f_int1 IN (2,3);
 | 
						|
# check prerequisites-3 success:    1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'delete me';
 | 
						|
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
 | 
						|
# check read via f_int1 success: 1
 | 
						|
# check read via f_int2 success: 1
 | 
						|
	
 | 
						|
# check multiple-1 success: 	1
 | 
						|
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
 | 
						|
	
 | 
						|
# check multiple-2 success: 	1
 | 
						|
INSERT INTO t1 SELECT * FROM t0_template
 | 
						|
WHERE MOD(f_int1,3) = 0;
 | 
						|
	
 | 
						|
# check multiple-3 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = f_int1 + @max_row
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
 | 
						|
AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check multiple-4 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
 | 
						|
AND @max_row_div2 + @max_row_div4 + @max_row;
 | 
						|
	
 | 
						|
# check multiple-5 success: 	1
 | 
						|
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = @cur_value , f_int2 = @cur_value,
 | 
						|
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
 | 
						|
f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-1 success: 	1
 | 
						|
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = @cur_value , f_int2 = @cur_value,
 | 
						|
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
 | 
						|
f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-2 success: 	1
 | 
						|
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
 | 
						|
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
 | 
						|
UPDATE t1 SET f_int1 = @cur_value2
 | 
						|
WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-3 success: 	1
 | 
						|
SET @cur_value1= -1;
 | 
						|
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
 | 
						|
UPDATE t1 SET f_int1 = @cur_value1
 | 
						|
WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-4 success: 	1
 | 
						|
SELECT MAX(f_int1) INTO @cur_value FROM t1;
 | 
						|
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-5 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-6 success: 	1
 | 
						|
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
 | 
						|
	
 | 
						|
# check single-7 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
 | 
						|
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
 | 
						|
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
 | 
						|
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
 | 
						|
f_charbig = '#NULL#';
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = NULL , f_int2 = -@max_row,
 | 
						|
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
 | 
						|
f_charbig = '#NULL#';
 | 
						|
# check null success:    1
 | 
						|
	
 | 
						|
# check null-1 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = -@max_row
 | 
						|
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-2 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = NULL
 | 
						|
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-3 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-4 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 = 0 AND f_int2 = 0
 | 
						|
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
 | 
						|
AND f_charbig = '#NULL#';
 | 
						|
SET AUTOCOMMIT= 0;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
FROM t0_template source_tab
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check transactions-1 success: 	1
 | 
						|
COMMIT WORK;
 | 
						|
	
 | 
						|
# check transactions-2 success: 	1
 | 
						|
ROLLBACK WORK;
 | 
						|
	
 | 
						|
# check transactions-3 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
ROLLBACK WORK;
 | 
						|
	
 | 
						|
# check transactions-4 success: 	1
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
FROM t0_template source_tab
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check transactions-5 success: 	1
 | 
						|
ROLLBACK WORK;
 | 
						|
Warnings:
 | 
						|
Warning	1196	Some non-transactional changed tables couldn't be rolled back
 | 
						|
	
 | 
						|
# check transactions-6 success: 	1
 | 
						|
# INFO: Storage engine used for t1 seems to be not transactional.
 | 
						|
COMMIT;
 | 
						|
	
 | 
						|
# check transactions-7 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
SET @@session.sql_mode = 'traditional';
 | 
						|
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
 | 
						|
'', '', 'was inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
ERROR 22012: Division by 0
 | 
						|
COMMIT;
 | 
						|
	
 | 
						|
# check transactions-8 success: 	1
 | 
						|
# INFO: Storage engine used for t1 seems to be unable to revert
 | 
						|
#       changes made by the failing statement.
 | 
						|
SET @@session.sql_mode = '';
 | 
						|
SET AUTOCOMMIT= 1;
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
 | 
						|
	
 | 
						|
# check special-1 success: 	1
 | 
						|
UPDATE t1 SET f_charbig = '';
 | 
						|
	
 | 
						|
# check special-2 success: 	1
 | 
						|
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
 | 
						|
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
	
 | 
						|
# check trigger-1 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
	
 | 
						|
# check trigger-2 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-3 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-4 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-5 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-6 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-7 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-8 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = old.f_int1 + @max_row,
 | 
						|
new.f_int2 = old.f_int2 - @max_row,
 | 
						|
new.f_charbig = '####updated per update trigger####';
 | 
						|
END|
 | 
						|
UPDATE t1
 | 
						|
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
 | 
						|
f_charbig = '####updated per update statement itself####';
 | 
						|
	
 | 
						|
# check trigger-9 success: 	1
 | 
						|
DROP TRIGGER trg_2;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===');
 | 
						|
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = new.f_int1 + @max_row,
 | 
						|
new.f_int2 = new.f_int2 - @max_row,
 | 
						|
new.f_charbig = '####updated per update trigger####';
 | 
						|
END|
 | 
						|
UPDATE t1
 | 
						|
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
 | 
						|
f_charbig = '####updated per update statement itself####';
 | 
						|
	
 | 
						|
# check trigger-10 success: 	1
 | 
						|
DROP TRIGGER trg_2;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===');
 | 
						|
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = @my_max1 + @counter,
 | 
						|
new.f_int2 = @my_min2 - @counter,
 | 
						|
new.f_charbig = '####updated per insert trigger####';
 | 
						|
SET @counter = @counter + 1;
 | 
						|
END|
 | 
						|
SET @counter = 1;
 | 
						|
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
 | 
						|
ORDER BY f_int1;
 | 
						|
DROP TRIGGER trg_3;
 | 
						|
	
 | 
						|
# check trigger-11 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_charbig = '####updated per insert trigger####';
 | 
						|
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = @my_max1 + @counter,
 | 
						|
new.f_int2 = @my_min2 - @counter,
 | 
						|
new.f_charbig = '####updated per insert trigger####';
 | 
						|
SET @counter = @counter + 1;
 | 
						|
END|
 | 
						|
SET @counter = 1;
 | 
						|
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
 | 
						|
INSERT INTO t1 (f_char1, f_char2, f_charbig)
 | 
						|
SELECT CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
 | 
						|
ORDER BY f_int1;
 | 
						|
DROP TRIGGER trg_3;
 | 
						|
	
 | 
						|
# check trigger-12 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_charbig = '####updated per insert trigger####';
 | 
						|
ANALYZE  TABLE t1;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	analyze	status	Engine-independent statistics collected
 | 
						|
test.t1	analyze	status	OK
 | 
						|
CHECK    TABLE t1 EXTENDED;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	check	status	OK
 | 
						|
CHECKSUM TABLE t1 EXTENDED;
 | 
						|
Table	Checksum
 | 
						|
test.t1	<some_value>
 | 
						|
OPTIMIZE TABLE t1;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	optimize	status	OK
 | 
						|
# check layout success:    1
 | 
						|
REPAIR   TABLE t1 EXTENDED;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	repair	status	OK
 | 
						|
# check layout success:    1
 | 
						|
TRUNCATE t1;
 | 
						|
	
 | 
						|
# check TRUNCATE success: 	1
 | 
						|
# check layout success:    1
 | 
						|
# End usability test (inc/partition_check.inc)
 | 
						|
DROP TABLE t1;
 | 
						|
CREATE TABLE t1 (
 | 
						|
f_int1 INTEGER DEFAULT 0,
 | 
						|
f_int2 INTEGER DEFAULT 0,
 | 
						|
f_char1 CHAR(20),
 | 
						|
f_char2 CHAR(20),
 | 
						|
f_charbig VARCHAR(1000)
 | 
						|
 | 
						|
)
 | 
						|
PARTITION BY RANGE((f_int1 + f_int2) DIV 2)
 | 
						|
(PARTITION parta VALUES LESS THAN (0)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION partb VALUES LESS THAN (5)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION partc VALUES LESS THAN (10)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION partd VALUES LESS THAN (10 + 5)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION parte VALUES LESS THAN (20)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION partf VALUES LESS THAN (2147483646)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir');
 | 
						|
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
 | 
						|
# Start usability test (inc/partition_check.inc)
 | 
						|
create_command
 | 
						|
SHOW CREATE TABLE t1;
 | 
						|
Table	Create Table
 | 
						|
t1	CREATE TABLE `t1` (
 | 
						|
  `f_int1` int(11) DEFAULT 0,
 | 
						|
  `f_int2` int(11) DEFAULT 0,
 | 
						|
  `f_char1` char(20) DEFAULT NULL,
 | 
						|
  `f_char2` char(20) DEFAULT NULL,
 | 
						|
  `f_charbig` varchar(1000) DEFAULT NULL
 | 
						|
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | 
						|
 PARTITION BY RANGE ((`f_int1` + `f_int2`) DIV 2)
 | 
						|
(PARTITION `parta` VALUES LESS THAN (0) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `partb` VALUES LESS THAN (5) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `partc` VALUES LESS THAN (10) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `partd` VALUES LESS THAN (15) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `parte` VALUES LESS THAN (20) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `partf` VALUES LESS THAN (2147483646) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM)
 | 
						|
 | 
						|
unified filelist
 | 
						|
t1#P#parta.MYD
 | 
						|
t1#P#parta.MYI
 | 
						|
t1#P#partb.MYD
 | 
						|
t1#P#partb.MYI
 | 
						|
t1#P#partc.MYD
 | 
						|
t1#P#partc.MYI
 | 
						|
t1#P#partd.MYD
 | 
						|
t1#P#partd.MYI
 | 
						|
t1#P#parte.MYD
 | 
						|
t1#P#parte.MYI
 | 
						|
t1#P#partf.MYD
 | 
						|
t1#P#partf.MYI
 | 
						|
t1.frm
 | 
						|
t1.par
 | 
						|
t1#P#parta.MYD
 | 
						|
t1#P#partb.MYD
 | 
						|
t1#P#partc.MYD
 | 
						|
t1#P#partd.MYD
 | 
						|
t1#P#parte.MYD
 | 
						|
t1#P#partf.MYD
 | 
						|
t1#P#parta.MYI
 | 
						|
t1#P#partb.MYI
 | 
						|
t1#P#partc.MYI
 | 
						|
t1#P#partd.MYI
 | 
						|
t1#P#parte.MYI
 | 
						|
t1#P#partf.MYI
 | 
						|
 | 
						|
# check prerequisites-1 success:    1
 | 
						|
# check COUNT(*) success:    1
 | 
						|
# check MIN/MAX(f_int1) success:    1
 | 
						|
# check MIN/MAX(f_int2) success:    1
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
 | 
						|
WHERE f_int1 IN (2,3);
 | 
						|
# check prerequisites-3 success:    1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'delete me';
 | 
						|
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
 | 
						|
# check read via f_int1 success: 1
 | 
						|
# check read via f_int2 success: 1
 | 
						|
	
 | 
						|
# check multiple-1 success: 	1
 | 
						|
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
 | 
						|
	
 | 
						|
# check multiple-2 success: 	1
 | 
						|
INSERT INTO t1 SELECT * FROM t0_template
 | 
						|
WHERE MOD(f_int1,3) = 0;
 | 
						|
	
 | 
						|
# check multiple-3 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = f_int1 + @max_row
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
 | 
						|
AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check multiple-4 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
 | 
						|
AND @max_row_div2 + @max_row_div4 + @max_row;
 | 
						|
	
 | 
						|
# check multiple-5 success: 	1
 | 
						|
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = @cur_value , f_int2 = @cur_value,
 | 
						|
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
 | 
						|
f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-1 success: 	1
 | 
						|
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = @cur_value , f_int2 = @cur_value,
 | 
						|
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
 | 
						|
f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-2 success: 	1
 | 
						|
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
 | 
						|
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
 | 
						|
UPDATE t1 SET f_int1 = @cur_value2
 | 
						|
WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-3 success: 	1
 | 
						|
SET @cur_value1= -1;
 | 
						|
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
 | 
						|
UPDATE t1 SET f_int1 = @cur_value1
 | 
						|
WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-4 success: 	1
 | 
						|
SELECT MAX(f_int1) INTO @cur_value FROM t1;
 | 
						|
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-5 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-6 success: 	1
 | 
						|
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
 | 
						|
ERROR HY000: Table has no partition for value 2147483647
 | 
						|
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
 | 
						|
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
 | 
						|
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
 | 
						|
f_charbig = '#NULL#';
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = NULL , f_int2 = -@max_row,
 | 
						|
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
 | 
						|
f_charbig = '#NULL#';
 | 
						|
# check null success:    1
 | 
						|
	
 | 
						|
# check null-1 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = -@max_row
 | 
						|
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-2 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = NULL
 | 
						|
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-3 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-4 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 = 0 AND f_int2 = 0
 | 
						|
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
 | 
						|
AND f_charbig = '#NULL#';
 | 
						|
SET AUTOCOMMIT= 0;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
FROM t0_template source_tab
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check transactions-1 success: 	1
 | 
						|
COMMIT WORK;
 | 
						|
	
 | 
						|
# check transactions-2 success: 	1
 | 
						|
ROLLBACK WORK;
 | 
						|
	
 | 
						|
# check transactions-3 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
ROLLBACK WORK;
 | 
						|
	
 | 
						|
# check transactions-4 success: 	1
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
FROM t0_template source_tab
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check transactions-5 success: 	1
 | 
						|
ROLLBACK WORK;
 | 
						|
Warnings:
 | 
						|
Warning	1196	Some non-transactional changed tables couldn't be rolled back
 | 
						|
	
 | 
						|
# check transactions-6 success: 	1
 | 
						|
# INFO: Storage engine used for t1 seems to be not transactional.
 | 
						|
COMMIT;
 | 
						|
	
 | 
						|
# check transactions-7 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
SET @@session.sql_mode = 'traditional';
 | 
						|
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
 | 
						|
'', '', 'was inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
ERROR 22012: Division by 0
 | 
						|
COMMIT;
 | 
						|
	
 | 
						|
# check transactions-8 success: 	1
 | 
						|
# INFO: Storage engine used for t1 seems to be unable to revert
 | 
						|
#       changes made by the failing statement.
 | 
						|
SET @@session.sql_mode = '';
 | 
						|
SET AUTOCOMMIT= 1;
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
 | 
						|
	
 | 
						|
# check special-1 success: 	1
 | 
						|
UPDATE t1 SET f_charbig = '';
 | 
						|
	
 | 
						|
# check special-2 success: 	1
 | 
						|
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
 | 
						|
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
	
 | 
						|
# check trigger-1 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
	
 | 
						|
# check trigger-2 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-3 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-4 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-5 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-6 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-7 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-8 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = old.f_int1 + @max_row,
 | 
						|
new.f_int2 = old.f_int2 - @max_row,
 | 
						|
new.f_charbig = '####updated per update trigger####';
 | 
						|
END|
 | 
						|
UPDATE t1
 | 
						|
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
 | 
						|
f_charbig = '####updated per update statement itself####';
 | 
						|
	
 | 
						|
# check trigger-9 success: 	1
 | 
						|
DROP TRIGGER trg_2;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===');
 | 
						|
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = new.f_int1 + @max_row,
 | 
						|
new.f_int2 = new.f_int2 - @max_row,
 | 
						|
new.f_charbig = '####updated per update trigger####';
 | 
						|
END|
 | 
						|
UPDATE t1
 | 
						|
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
 | 
						|
f_charbig = '####updated per update statement itself####';
 | 
						|
	
 | 
						|
# check trigger-10 success: 	1
 | 
						|
DROP TRIGGER trg_2;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===');
 | 
						|
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = @my_max1 + @counter,
 | 
						|
new.f_int2 = @my_min2 - @counter,
 | 
						|
new.f_charbig = '####updated per insert trigger####';
 | 
						|
SET @counter = @counter + 1;
 | 
						|
END|
 | 
						|
SET @counter = 1;
 | 
						|
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
 | 
						|
ORDER BY f_int1;
 | 
						|
DROP TRIGGER trg_3;
 | 
						|
	
 | 
						|
# check trigger-11 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_charbig = '####updated per insert trigger####';
 | 
						|
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = @my_max1 + @counter,
 | 
						|
new.f_int2 = @my_min2 - @counter,
 | 
						|
new.f_charbig = '####updated per insert trigger####';
 | 
						|
SET @counter = @counter + 1;
 | 
						|
END|
 | 
						|
SET @counter = 1;
 | 
						|
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
 | 
						|
INSERT INTO t1 (f_char1, f_char2, f_charbig)
 | 
						|
SELECT CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
 | 
						|
ORDER BY f_int1;
 | 
						|
DROP TRIGGER trg_3;
 | 
						|
	
 | 
						|
# check trigger-12 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_charbig = '####updated per insert trigger####';
 | 
						|
ANALYZE  TABLE t1;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	analyze	status	Engine-independent statistics collected
 | 
						|
test.t1	analyze	status	OK
 | 
						|
CHECK    TABLE t1 EXTENDED;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	check	status	OK
 | 
						|
CHECKSUM TABLE t1 EXTENDED;
 | 
						|
Table	Checksum
 | 
						|
test.t1	<some_value>
 | 
						|
OPTIMIZE TABLE t1;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	optimize	status	OK
 | 
						|
# check layout success:    1
 | 
						|
REPAIR   TABLE t1 EXTENDED;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	repair	status	OK
 | 
						|
# check layout success:    1
 | 
						|
TRUNCATE t1;
 | 
						|
	
 | 
						|
# check TRUNCATE success: 	1
 | 
						|
# check layout success:    1
 | 
						|
# End usability test (inc/partition_check.inc)
 | 
						|
DROP TABLE t1;
 | 
						|
CREATE TABLE t1 (
 | 
						|
f_int1 INTEGER DEFAULT 0,
 | 
						|
f_int2 INTEGER DEFAULT 0,
 | 
						|
f_char1 CHAR(20),
 | 
						|
f_char2 CHAR(20),
 | 
						|
f_charbig VARCHAR(1000)
 | 
						|
 | 
						|
)
 | 
						|
PARTITION BY RANGE(f_int1) SUBPARTITION BY HASH(f_int2) SUBPARTITIONS 2
 | 
						|
(PARTITION parta VALUES LESS THAN (0)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION partb VALUES LESS THAN (5)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION partc VALUES LESS THAN (10)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION partd VALUES LESS THAN (2147483646)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir');
 | 
						|
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
 | 
						|
# Start usability test (inc/partition_check.inc)
 | 
						|
create_command
 | 
						|
SHOW CREATE TABLE t1;
 | 
						|
Table	Create Table
 | 
						|
t1	CREATE TABLE `t1` (
 | 
						|
  `f_int1` int(11) DEFAULT 0,
 | 
						|
  `f_int2` int(11) DEFAULT 0,
 | 
						|
  `f_char1` char(20) DEFAULT NULL,
 | 
						|
  `f_char2` char(20) DEFAULT NULL,
 | 
						|
  `f_charbig` varchar(1000) DEFAULT NULL
 | 
						|
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | 
						|
 PARTITION BY RANGE (`f_int1`)
 | 
						|
SUBPARTITION BY HASH (`f_int2`)
 | 
						|
SUBPARTITIONS 2
 | 
						|
(PARTITION `parta` VALUES LESS THAN (0) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `partb` VALUES LESS THAN (5) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `partc` VALUES LESS THAN (10) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `partd` VALUES LESS THAN (2147483646) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM)
 | 
						|
 | 
						|
unified filelist
 | 
						|
t1#P#parta#SP#partasp0.MYD
 | 
						|
t1#P#parta#SP#partasp0.MYI
 | 
						|
t1#P#parta#SP#partasp1.MYD
 | 
						|
t1#P#parta#SP#partasp1.MYI
 | 
						|
t1#P#partb#SP#partbsp0.MYD
 | 
						|
t1#P#partb#SP#partbsp0.MYI
 | 
						|
t1#P#partb#SP#partbsp1.MYD
 | 
						|
t1#P#partb#SP#partbsp1.MYI
 | 
						|
t1#P#partc#SP#partcsp0.MYD
 | 
						|
t1#P#partc#SP#partcsp0.MYI
 | 
						|
t1#P#partc#SP#partcsp1.MYD
 | 
						|
t1#P#partc#SP#partcsp1.MYI
 | 
						|
t1#P#partd#SP#partdsp0.MYD
 | 
						|
t1#P#partd#SP#partdsp0.MYI
 | 
						|
t1#P#partd#SP#partdsp1.MYD
 | 
						|
t1#P#partd#SP#partdsp1.MYI
 | 
						|
t1.frm
 | 
						|
t1.par
 | 
						|
t1#P#parta#SP#partasp0.MYD
 | 
						|
t1#P#parta#SP#partasp1.MYD
 | 
						|
t1#P#partb#SP#partbsp0.MYD
 | 
						|
t1#P#partb#SP#partbsp1.MYD
 | 
						|
t1#P#partc#SP#partcsp0.MYD
 | 
						|
t1#P#partc#SP#partcsp1.MYD
 | 
						|
t1#P#partd#SP#partdsp0.MYD
 | 
						|
t1#P#partd#SP#partdsp1.MYD
 | 
						|
t1#P#parta#SP#partasp0.MYI
 | 
						|
t1#P#parta#SP#partasp1.MYI
 | 
						|
t1#P#partb#SP#partbsp0.MYI
 | 
						|
t1#P#partb#SP#partbsp1.MYI
 | 
						|
t1#P#partc#SP#partcsp0.MYI
 | 
						|
t1#P#partc#SP#partcsp1.MYI
 | 
						|
t1#P#partd#SP#partdsp0.MYI
 | 
						|
t1#P#partd#SP#partdsp1.MYI
 | 
						|
 | 
						|
# check prerequisites-1 success:    1
 | 
						|
# check COUNT(*) success:    1
 | 
						|
# check MIN/MAX(f_int1) success:    1
 | 
						|
# check MIN/MAX(f_int2) success:    1
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
 | 
						|
WHERE f_int1 IN (2,3);
 | 
						|
# check prerequisites-3 success:    1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'delete me';
 | 
						|
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
 | 
						|
# check read via f_int1 success: 1
 | 
						|
# check read via f_int2 success: 1
 | 
						|
	
 | 
						|
# check multiple-1 success: 	1
 | 
						|
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
 | 
						|
	
 | 
						|
# check multiple-2 success: 	1
 | 
						|
INSERT INTO t1 SELECT * FROM t0_template
 | 
						|
WHERE MOD(f_int1,3) = 0;
 | 
						|
	
 | 
						|
# check multiple-3 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = f_int1 + @max_row
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
 | 
						|
AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check multiple-4 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
 | 
						|
AND @max_row_div2 + @max_row_div4 + @max_row;
 | 
						|
	
 | 
						|
# check multiple-5 success: 	1
 | 
						|
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = @cur_value , f_int2 = @cur_value,
 | 
						|
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
 | 
						|
f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-1 success: 	1
 | 
						|
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = @cur_value , f_int2 = @cur_value,
 | 
						|
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
 | 
						|
f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-2 success: 	1
 | 
						|
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
 | 
						|
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
 | 
						|
UPDATE t1 SET f_int1 = @cur_value2
 | 
						|
WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-3 success: 	1
 | 
						|
SET @cur_value1= -1;
 | 
						|
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
 | 
						|
UPDATE t1 SET f_int1 = @cur_value1
 | 
						|
WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-4 success: 	1
 | 
						|
SELECT MAX(f_int1) INTO @cur_value FROM t1;
 | 
						|
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-5 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-6 success: 	1
 | 
						|
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
 | 
						|
ERROR HY000: Table has no partition for value 2147483647
 | 
						|
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
 | 
						|
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
 | 
						|
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
 | 
						|
f_charbig = '#NULL#';
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = NULL , f_int2 = -@max_row,
 | 
						|
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
 | 
						|
f_charbig = '#NULL#';
 | 
						|
# check null success:    1
 | 
						|
	
 | 
						|
# check null-1 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = -@max_row
 | 
						|
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-2 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = NULL
 | 
						|
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-3 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-4 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 = 0 AND f_int2 = 0
 | 
						|
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
 | 
						|
AND f_charbig = '#NULL#';
 | 
						|
SET AUTOCOMMIT= 0;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
FROM t0_template source_tab
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check transactions-1 success: 	1
 | 
						|
COMMIT WORK;
 | 
						|
	
 | 
						|
# check transactions-2 success: 	1
 | 
						|
ROLLBACK WORK;
 | 
						|
	
 | 
						|
# check transactions-3 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
ROLLBACK WORK;
 | 
						|
	
 | 
						|
# check transactions-4 success: 	1
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
FROM t0_template source_tab
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check transactions-5 success: 	1
 | 
						|
ROLLBACK WORK;
 | 
						|
Warnings:
 | 
						|
Warning	1196	Some non-transactional changed tables couldn't be rolled back
 | 
						|
	
 | 
						|
# check transactions-6 success: 	1
 | 
						|
# INFO: Storage engine used for t1 seems to be not transactional.
 | 
						|
COMMIT;
 | 
						|
	
 | 
						|
# check transactions-7 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
SET @@session.sql_mode = 'traditional';
 | 
						|
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
 | 
						|
'', '', 'was inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
ERROR 22012: Division by 0
 | 
						|
COMMIT;
 | 
						|
	
 | 
						|
# check transactions-8 success: 	1
 | 
						|
# INFO: Storage engine used for t1 seems to be unable to revert
 | 
						|
#       changes made by the failing statement.
 | 
						|
SET @@session.sql_mode = '';
 | 
						|
SET AUTOCOMMIT= 1;
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
 | 
						|
	
 | 
						|
# check special-1 success: 	1
 | 
						|
UPDATE t1 SET f_charbig = '';
 | 
						|
	
 | 
						|
# check special-2 success: 	1
 | 
						|
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
 | 
						|
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
	
 | 
						|
# check trigger-1 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
	
 | 
						|
# check trigger-2 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-3 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-4 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-5 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-6 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-7 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-8 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = old.f_int1 + @max_row,
 | 
						|
new.f_int2 = old.f_int2 - @max_row,
 | 
						|
new.f_charbig = '####updated per update trigger####';
 | 
						|
END|
 | 
						|
UPDATE t1
 | 
						|
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
 | 
						|
f_charbig = '####updated per update statement itself####';
 | 
						|
	
 | 
						|
# check trigger-9 success: 	1
 | 
						|
DROP TRIGGER trg_2;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===');
 | 
						|
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = new.f_int1 + @max_row,
 | 
						|
new.f_int2 = new.f_int2 - @max_row,
 | 
						|
new.f_charbig = '####updated per update trigger####';
 | 
						|
END|
 | 
						|
UPDATE t1
 | 
						|
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
 | 
						|
f_charbig = '####updated per update statement itself####';
 | 
						|
	
 | 
						|
# check trigger-10 success: 	1
 | 
						|
DROP TRIGGER trg_2;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===');
 | 
						|
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = @my_max1 + @counter,
 | 
						|
new.f_int2 = @my_min2 - @counter,
 | 
						|
new.f_charbig = '####updated per insert trigger####';
 | 
						|
SET @counter = @counter + 1;
 | 
						|
END|
 | 
						|
SET @counter = 1;
 | 
						|
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
 | 
						|
ORDER BY f_int1;
 | 
						|
DROP TRIGGER trg_3;
 | 
						|
	
 | 
						|
# check trigger-11 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_charbig = '####updated per insert trigger####';
 | 
						|
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = @my_max1 + @counter,
 | 
						|
new.f_int2 = @my_min2 - @counter,
 | 
						|
new.f_charbig = '####updated per insert trigger####';
 | 
						|
SET @counter = @counter + 1;
 | 
						|
END|
 | 
						|
SET @counter = 1;
 | 
						|
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
 | 
						|
INSERT INTO t1 (f_char1, f_char2, f_charbig)
 | 
						|
SELECT CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
 | 
						|
ORDER BY f_int1;
 | 
						|
DROP TRIGGER trg_3;
 | 
						|
	
 | 
						|
# check trigger-12 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_charbig = '####updated per insert trigger####';
 | 
						|
ANALYZE  TABLE t1;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	analyze	status	Engine-independent statistics collected
 | 
						|
test.t1	analyze	status	OK
 | 
						|
CHECK    TABLE t1 EXTENDED;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	check	status	OK
 | 
						|
CHECKSUM TABLE t1 EXTENDED;
 | 
						|
Table	Checksum
 | 
						|
test.t1	<some_value>
 | 
						|
OPTIMIZE TABLE t1;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	optimize	status	OK
 | 
						|
# check layout success:    1
 | 
						|
REPAIR   TABLE t1 EXTENDED;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	repair	status	OK
 | 
						|
# check layout success:    1
 | 
						|
TRUNCATE t1;
 | 
						|
	
 | 
						|
# check TRUNCATE success: 	1
 | 
						|
# check layout success:    1
 | 
						|
# End usability test (inc/partition_check.inc)
 | 
						|
DROP TABLE t1;
 | 
						|
CREATE TABLE t1 (
 | 
						|
f_int1 INTEGER DEFAULT 0,
 | 
						|
f_int2 INTEGER DEFAULT 0,
 | 
						|
f_char1 CHAR(20),
 | 
						|
f_char2 CHAR(20),
 | 
						|
f_charbig VARCHAR(1000)
 | 
						|
 | 
						|
)
 | 
						|
PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int2)
 | 
						|
(PARTITION part1 VALUES LESS THAN (0)
 | 
						|
(SUBPARTITION subpart11 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
SUBPARTITION subpart12 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'),
 | 
						|
PARTITION part2 VALUES LESS THAN (5)
 | 
						|
(SUBPARTITION subpart21 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
SUBPARTITION subpart22 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'),
 | 
						|
PARTITION part3 VALUES LESS THAN (10)
 | 
						|
(SUBPARTITION subpart31 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
SUBPARTITION subpart32 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'),
 | 
						|
PARTITION part4 VALUES LESS THAN (2147483646)
 | 
						|
(SUBPARTITION subpart41 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
SUBPARTITION subpart42 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'));
 | 
						|
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
 | 
						|
# Start usability test (inc/partition_check.inc)
 | 
						|
create_command
 | 
						|
SHOW CREATE TABLE t1;
 | 
						|
Table	Create Table
 | 
						|
t1	CREATE TABLE `t1` (
 | 
						|
  `f_int1` int(11) DEFAULT 0,
 | 
						|
  `f_int2` int(11) DEFAULT 0,
 | 
						|
  `f_char1` char(20) DEFAULT NULL,
 | 
						|
  `f_char2` char(20) DEFAULT NULL,
 | 
						|
  `f_charbig` varchar(1000) DEFAULT NULL
 | 
						|
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | 
						|
 PARTITION BY RANGE (`f_int1`)
 | 
						|
SUBPARTITION BY KEY (`f_int2`)
 | 
						|
(PARTITION `part1` VALUES LESS THAN (0)
 | 
						|
 (SUBPARTITION `subpart11` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
  SUBPARTITION `subpart12` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM),
 | 
						|
 PARTITION `part2` VALUES LESS THAN (5)
 | 
						|
 (SUBPARTITION `subpart21` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
  SUBPARTITION `subpart22` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM),
 | 
						|
 PARTITION `part3` VALUES LESS THAN (10)
 | 
						|
 (SUBPARTITION `subpart31` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
  SUBPARTITION `subpart32` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM),
 | 
						|
 PARTITION `part4` VALUES LESS THAN (2147483646)
 | 
						|
 (SUBPARTITION `subpart41` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
  SUBPARTITION `subpart42` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM))
 | 
						|
 | 
						|
unified filelist
 | 
						|
t1#P#part1#SP#subpart11.MYD
 | 
						|
t1#P#part1#SP#subpart11.MYI
 | 
						|
t1#P#part1#SP#subpart12.MYD
 | 
						|
t1#P#part1#SP#subpart12.MYI
 | 
						|
t1#P#part2#SP#subpart21.MYD
 | 
						|
t1#P#part2#SP#subpart21.MYI
 | 
						|
t1#P#part2#SP#subpart22.MYD
 | 
						|
t1#P#part2#SP#subpart22.MYI
 | 
						|
t1#P#part3#SP#subpart31.MYD
 | 
						|
t1#P#part3#SP#subpart31.MYI
 | 
						|
t1#P#part3#SP#subpart32.MYD
 | 
						|
t1#P#part3#SP#subpart32.MYI
 | 
						|
t1#P#part4#SP#subpart41.MYD
 | 
						|
t1#P#part4#SP#subpart41.MYI
 | 
						|
t1#P#part4#SP#subpart42.MYD
 | 
						|
t1#P#part4#SP#subpart42.MYI
 | 
						|
t1.frm
 | 
						|
t1.par
 | 
						|
t1#P#part1#SP#subpart11.MYD
 | 
						|
t1#P#part1#SP#subpart12.MYD
 | 
						|
t1#P#part2#SP#subpart21.MYD
 | 
						|
t1#P#part2#SP#subpart22.MYD
 | 
						|
t1#P#part3#SP#subpart31.MYD
 | 
						|
t1#P#part3#SP#subpart32.MYD
 | 
						|
t1#P#part4#SP#subpart41.MYD
 | 
						|
t1#P#part4#SP#subpart42.MYD
 | 
						|
t1#P#part1#SP#subpart11.MYI
 | 
						|
t1#P#part1#SP#subpart12.MYI
 | 
						|
t1#P#part2#SP#subpart21.MYI
 | 
						|
t1#P#part2#SP#subpart22.MYI
 | 
						|
t1#P#part3#SP#subpart31.MYI
 | 
						|
t1#P#part3#SP#subpart32.MYI
 | 
						|
t1#P#part4#SP#subpart41.MYI
 | 
						|
t1#P#part4#SP#subpart42.MYI
 | 
						|
 | 
						|
# check prerequisites-1 success:    1
 | 
						|
# check COUNT(*) success:    1
 | 
						|
# check MIN/MAX(f_int1) success:    1
 | 
						|
# check MIN/MAX(f_int2) success:    1
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
 | 
						|
WHERE f_int1 IN (2,3);
 | 
						|
# check prerequisites-3 success:    1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'delete me';
 | 
						|
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
 | 
						|
# check read via f_int1 success: 1
 | 
						|
# check read via f_int2 success: 1
 | 
						|
	
 | 
						|
# check multiple-1 success: 	1
 | 
						|
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
 | 
						|
	
 | 
						|
# check multiple-2 success: 	1
 | 
						|
INSERT INTO t1 SELECT * FROM t0_template
 | 
						|
WHERE MOD(f_int1,3) = 0;
 | 
						|
	
 | 
						|
# check multiple-3 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = f_int1 + @max_row
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
 | 
						|
AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check multiple-4 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
 | 
						|
AND @max_row_div2 + @max_row_div4 + @max_row;
 | 
						|
	
 | 
						|
# check multiple-5 success: 	1
 | 
						|
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = @cur_value , f_int2 = @cur_value,
 | 
						|
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
 | 
						|
f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-1 success: 	1
 | 
						|
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = @cur_value , f_int2 = @cur_value,
 | 
						|
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
 | 
						|
f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-2 success: 	1
 | 
						|
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
 | 
						|
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
 | 
						|
UPDATE t1 SET f_int1 = @cur_value2
 | 
						|
WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-3 success: 	1
 | 
						|
SET @cur_value1= -1;
 | 
						|
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
 | 
						|
UPDATE t1 SET f_int1 = @cur_value1
 | 
						|
WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-4 success: 	1
 | 
						|
SELECT MAX(f_int1) INTO @cur_value FROM t1;
 | 
						|
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-5 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-6 success: 	1
 | 
						|
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
 | 
						|
ERROR HY000: Table has no partition for value 2147483647
 | 
						|
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
 | 
						|
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
 | 
						|
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
 | 
						|
f_charbig = '#NULL#';
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = NULL , f_int2 = -@max_row,
 | 
						|
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
 | 
						|
f_charbig = '#NULL#';
 | 
						|
# check null success:    1
 | 
						|
	
 | 
						|
# check null-1 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = -@max_row
 | 
						|
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-2 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = NULL
 | 
						|
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-3 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-4 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 = 0 AND f_int2 = 0
 | 
						|
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
 | 
						|
AND f_charbig = '#NULL#';
 | 
						|
SET AUTOCOMMIT= 0;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
FROM t0_template source_tab
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check transactions-1 success: 	1
 | 
						|
COMMIT WORK;
 | 
						|
	
 | 
						|
# check transactions-2 success: 	1
 | 
						|
ROLLBACK WORK;
 | 
						|
	
 | 
						|
# check transactions-3 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
ROLLBACK WORK;
 | 
						|
	
 | 
						|
# check transactions-4 success: 	1
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
FROM t0_template source_tab
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check transactions-5 success: 	1
 | 
						|
ROLLBACK WORK;
 | 
						|
Warnings:
 | 
						|
Warning	1196	Some non-transactional changed tables couldn't be rolled back
 | 
						|
	
 | 
						|
# check transactions-6 success: 	1
 | 
						|
# INFO: Storage engine used for t1 seems to be not transactional.
 | 
						|
COMMIT;
 | 
						|
	
 | 
						|
# check transactions-7 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
SET @@session.sql_mode = 'traditional';
 | 
						|
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
 | 
						|
'', '', 'was inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
ERROR 22012: Division by 0
 | 
						|
COMMIT;
 | 
						|
	
 | 
						|
# check transactions-8 success: 	1
 | 
						|
# INFO: Storage engine used for t1 seems to be unable to revert
 | 
						|
#       changes made by the failing statement.
 | 
						|
SET @@session.sql_mode = '';
 | 
						|
SET AUTOCOMMIT= 1;
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
 | 
						|
	
 | 
						|
# check special-1 success: 	1
 | 
						|
UPDATE t1 SET f_charbig = '';
 | 
						|
	
 | 
						|
# check special-2 success: 	1
 | 
						|
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
 | 
						|
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
	
 | 
						|
# check trigger-1 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
	
 | 
						|
# check trigger-2 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-3 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-4 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-5 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-6 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-7 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-8 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = old.f_int1 + @max_row,
 | 
						|
new.f_int2 = old.f_int2 - @max_row,
 | 
						|
new.f_charbig = '####updated per update trigger####';
 | 
						|
END|
 | 
						|
UPDATE t1
 | 
						|
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
 | 
						|
f_charbig = '####updated per update statement itself####';
 | 
						|
	
 | 
						|
# check trigger-9 success: 	1
 | 
						|
DROP TRIGGER trg_2;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===');
 | 
						|
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = new.f_int1 + @max_row,
 | 
						|
new.f_int2 = new.f_int2 - @max_row,
 | 
						|
new.f_charbig = '####updated per update trigger####';
 | 
						|
END|
 | 
						|
UPDATE t1
 | 
						|
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
 | 
						|
f_charbig = '####updated per update statement itself####';
 | 
						|
	
 | 
						|
# check trigger-10 success: 	1
 | 
						|
DROP TRIGGER trg_2;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===');
 | 
						|
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = @my_max1 + @counter,
 | 
						|
new.f_int2 = @my_min2 - @counter,
 | 
						|
new.f_charbig = '####updated per insert trigger####';
 | 
						|
SET @counter = @counter + 1;
 | 
						|
END|
 | 
						|
SET @counter = 1;
 | 
						|
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
 | 
						|
ORDER BY f_int1;
 | 
						|
DROP TRIGGER trg_3;
 | 
						|
	
 | 
						|
# check trigger-11 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_charbig = '####updated per insert trigger####';
 | 
						|
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = @my_max1 + @counter,
 | 
						|
new.f_int2 = @my_min2 - @counter,
 | 
						|
new.f_charbig = '####updated per insert trigger####';
 | 
						|
SET @counter = @counter + 1;
 | 
						|
END|
 | 
						|
SET @counter = 1;
 | 
						|
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
 | 
						|
INSERT INTO t1 (f_char1, f_char2, f_charbig)
 | 
						|
SELECT CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
 | 
						|
ORDER BY f_int1;
 | 
						|
DROP TRIGGER trg_3;
 | 
						|
	
 | 
						|
# check trigger-12 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_charbig = '####updated per insert trigger####';
 | 
						|
ANALYZE  TABLE t1;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	analyze	status	Engine-independent statistics collected
 | 
						|
test.t1	analyze	status	OK
 | 
						|
CHECK    TABLE t1 EXTENDED;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	check	status	OK
 | 
						|
CHECKSUM TABLE t1 EXTENDED;
 | 
						|
Table	Checksum
 | 
						|
test.t1	<some_value>
 | 
						|
OPTIMIZE TABLE t1;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	optimize	status	OK
 | 
						|
# check layout success:    1
 | 
						|
REPAIR   TABLE t1 EXTENDED;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	repair	status	OK
 | 
						|
# check layout success:    1
 | 
						|
TRUNCATE t1;
 | 
						|
	
 | 
						|
# check TRUNCATE success: 	1
 | 
						|
# check layout success:    1
 | 
						|
# End usability test (inc/partition_check.inc)
 | 
						|
DROP TABLE t1;
 | 
						|
CREATE TABLE t1 (
 | 
						|
f_int1 INTEGER DEFAULT 0,
 | 
						|
f_int2 INTEGER DEFAULT 0,
 | 
						|
f_char1 CHAR(20),
 | 
						|
f_char2 CHAR(20),
 | 
						|
f_charbig VARCHAR(1000)
 | 
						|
 | 
						|
)
 | 
						|
PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int2 + 1)
 | 
						|
(PARTITION part1 VALUES IN (0)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'
 | 
						|
(SUBPARTITION sp11 
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
SUBPARTITION sp12
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'),
 | 
						|
PARTITION part2 VALUES IN (1)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'
 | 
						|
(SUBPARTITION sp21 
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
SUBPARTITION sp22
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
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)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'
 | 
						|
(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'));
 | 
						|
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
 | 
						|
# Start usability test (inc/partition_check.inc)
 | 
						|
create_command
 | 
						|
SHOW CREATE TABLE t1;
 | 
						|
Table	Create Table
 | 
						|
t1	CREATE TABLE `t1` (
 | 
						|
  `f_int1` int(11) DEFAULT 0,
 | 
						|
  `f_int2` int(11) DEFAULT 0,
 | 
						|
  `f_char1` char(20) DEFAULT NULL,
 | 
						|
  `f_char2` char(20) DEFAULT NULL,
 | 
						|
  `f_charbig` varchar(1000) DEFAULT NULL
 | 
						|
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | 
						|
 PARTITION BY LIST (abs(`f_int1` MOD 3))
 | 
						|
SUBPARTITION BY HASH (`f_int2` + 1)
 | 
						|
(PARTITION `part1` VALUES IN (0)
 | 
						|
 (SUBPARTITION `sp11` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
  SUBPARTITION `sp12` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM),
 | 
						|
 PARTITION `part2` VALUES IN (1)
 | 
						|
 (SUBPARTITION `sp21` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
  SUBPARTITION `sp22` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM),
 | 
						|
 PARTITION `part3` VALUES IN (2)
 | 
						|
 (SUBPARTITION `sp31` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
  SUBPARTITION `sp32` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM),
 | 
						|
 PARTITION `part4` VALUES IN (NULL)
 | 
						|
 (SUBPARTITION `sp41` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
  SUBPARTITION `sp42` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM))
 | 
						|
 | 
						|
unified filelist
 | 
						|
t1#P#part1#SP#sp11.MYD
 | 
						|
t1#P#part1#SP#sp11.MYI
 | 
						|
t1#P#part1#SP#sp12.MYD
 | 
						|
t1#P#part1#SP#sp12.MYI
 | 
						|
t1#P#part2#SP#sp21.MYD
 | 
						|
t1#P#part2#SP#sp21.MYI
 | 
						|
t1#P#part2#SP#sp22.MYD
 | 
						|
t1#P#part2#SP#sp22.MYI
 | 
						|
t1#P#part3#SP#sp31.MYD
 | 
						|
t1#P#part3#SP#sp31.MYI
 | 
						|
t1#P#part3#SP#sp32.MYD
 | 
						|
t1#P#part3#SP#sp32.MYI
 | 
						|
t1#P#part4#SP#sp41.MYD
 | 
						|
t1#P#part4#SP#sp41.MYI
 | 
						|
t1#P#part4#SP#sp42.MYD
 | 
						|
t1#P#part4#SP#sp42.MYI
 | 
						|
t1.frm
 | 
						|
t1.par
 | 
						|
t1#P#part1#SP#sp11.MYD
 | 
						|
t1#P#part1#SP#sp12.MYD
 | 
						|
t1#P#part2#SP#sp21.MYD
 | 
						|
t1#P#part2#SP#sp22.MYD
 | 
						|
t1#P#part3#SP#sp31.MYD
 | 
						|
t1#P#part3#SP#sp32.MYD
 | 
						|
t1#P#part4#SP#sp41.MYD
 | 
						|
t1#P#part4#SP#sp42.MYD
 | 
						|
t1#P#part1#SP#sp11.MYI
 | 
						|
t1#P#part1#SP#sp12.MYI
 | 
						|
t1#P#part2#SP#sp21.MYI
 | 
						|
t1#P#part2#SP#sp22.MYI
 | 
						|
t1#P#part3#SP#sp31.MYI
 | 
						|
t1#P#part3#SP#sp32.MYI
 | 
						|
t1#P#part4#SP#sp41.MYI
 | 
						|
t1#P#part4#SP#sp42.MYI
 | 
						|
 | 
						|
# check prerequisites-1 success:    1
 | 
						|
# check COUNT(*) success:    1
 | 
						|
# check MIN/MAX(f_int1) success:    1
 | 
						|
# check MIN/MAX(f_int2) success:    1
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
 | 
						|
WHERE f_int1 IN (2,3);
 | 
						|
# check prerequisites-3 success:    1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'delete me';
 | 
						|
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
 | 
						|
# check read via f_int1 success: 1
 | 
						|
# check read via f_int2 success: 1
 | 
						|
	
 | 
						|
# check multiple-1 success: 	1
 | 
						|
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
 | 
						|
	
 | 
						|
# check multiple-2 success: 	1
 | 
						|
INSERT INTO t1 SELECT * FROM t0_template
 | 
						|
WHERE MOD(f_int1,3) = 0;
 | 
						|
	
 | 
						|
# check multiple-3 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = f_int1 + @max_row
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
 | 
						|
AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check multiple-4 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
 | 
						|
AND @max_row_div2 + @max_row_div4 + @max_row;
 | 
						|
	
 | 
						|
# check multiple-5 success: 	1
 | 
						|
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = @cur_value , f_int2 = @cur_value,
 | 
						|
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
 | 
						|
f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-1 success: 	1
 | 
						|
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = @cur_value , f_int2 = @cur_value,
 | 
						|
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
 | 
						|
f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-2 success: 	1
 | 
						|
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
 | 
						|
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
 | 
						|
UPDATE t1 SET f_int1 = @cur_value2
 | 
						|
WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-3 success: 	1
 | 
						|
SET @cur_value1= -1;
 | 
						|
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
 | 
						|
UPDATE t1 SET f_int1 = @cur_value1
 | 
						|
WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-4 success: 	1
 | 
						|
SELECT MAX(f_int1) INTO @cur_value FROM t1;
 | 
						|
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-5 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-6 success: 	1
 | 
						|
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
 | 
						|
	
 | 
						|
# check single-7 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
 | 
						|
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
 | 
						|
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
 | 
						|
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
 | 
						|
f_charbig = '#NULL#';
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = NULL , f_int2 = -@max_row,
 | 
						|
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
 | 
						|
f_charbig = '#NULL#';
 | 
						|
# check null success:    1
 | 
						|
	
 | 
						|
# check null-1 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = -@max_row
 | 
						|
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-2 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = NULL
 | 
						|
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-3 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-4 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 = 0 AND f_int2 = 0
 | 
						|
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
 | 
						|
AND f_charbig = '#NULL#';
 | 
						|
SET AUTOCOMMIT= 0;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
FROM t0_template source_tab
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check transactions-1 success: 	1
 | 
						|
COMMIT WORK;
 | 
						|
	
 | 
						|
# check transactions-2 success: 	1
 | 
						|
ROLLBACK WORK;
 | 
						|
	
 | 
						|
# check transactions-3 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
ROLLBACK WORK;
 | 
						|
	
 | 
						|
# check transactions-4 success: 	1
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
FROM t0_template source_tab
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check transactions-5 success: 	1
 | 
						|
ROLLBACK WORK;
 | 
						|
Warnings:
 | 
						|
Warning	1196	Some non-transactional changed tables couldn't be rolled back
 | 
						|
	
 | 
						|
# check transactions-6 success: 	1
 | 
						|
# INFO: Storage engine used for t1 seems to be not transactional.
 | 
						|
COMMIT;
 | 
						|
	
 | 
						|
# check transactions-7 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
SET @@session.sql_mode = 'traditional';
 | 
						|
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
 | 
						|
'', '', 'was inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
ERROR 22012: Division by 0
 | 
						|
COMMIT;
 | 
						|
	
 | 
						|
# check transactions-8 success: 	1
 | 
						|
# INFO: Storage engine used for t1 seems to be unable to revert
 | 
						|
#       changes made by the failing statement.
 | 
						|
SET @@session.sql_mode = '';
 | 
						|
SET AUTOCOMMIT= 1;
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
 | 
						|
	
 | 
						|
# check special-1 success: 	1
 | 
						|
UPDATE t1 SET f_charbig = '';
 | 
						|
	
 | 
						|
# check special-2 success: 	1
 | 
						|
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
 | 
						|
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
	
 | 
						|
# check trigger-1 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
	
 | 
						|
# check trigger-2 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-3 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-4 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-5 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-6 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-7 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-8 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = old.f_int1 + @max_row,
 | 
						|
new.f_int2 = old.f_int2 - @max_row,
 | 
						|
new.f_charbig = '####updated per update trigger####';
 | 
						|
END|
 | 
						|
UPDATE t1
 | 
						|
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
 | 
						|
f_charbig = '####updated per update statement itself####';
 | 
						|
	
 | 
						|
# check trigger-9 success: 	1
 | 
						|
DROP TRIGGER trg_2;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===');
 | 
						|
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = new.f_int1 + @max_row,
 | 
						|
new.f_int2 = new.f_int2 - @max_row,
 | 
						|
new.f_charbig = '####updated per update trigger####';
 | 
						|
END|
 | 
						|
UPDATE t1
 | 
						|
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
 | 
						|
f_charbig = '####updated per update statement itself####';
 | 
						|
	
 | 
						|
# check trigger-10 success: 	1
 | 
						|
DROP TRIGGER trg_2;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===');
 | 
						|
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = @my_max1 + @counter,
 | 
						|
new.f_int2 = @my_min2 - @counter,
 | 
						|
new.f_charbig = '####updated per insert trigger####';
 | 
						|
SET @counter = @counter + 1;
 | 
						|
END|
 | 
						|
SET @counter = 1;
 | 
						|
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
 | 
						|
ORDER BY f_int1;
 | 
						|
DROP TRIGGER trg_3;
 | 
						|
	
 | 
						|
# check trigger-11 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_charbig = '####updated per insert trigger####';
 | 
						|
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = @my_max1 + @counter,
 | 
						|
new.f_int2 = @my_min2 - @counter,
 | 
						|
new.f_charbig = '####updated per insert trigger####';
 | 
						|
SET @counter = @counter + 1;
 | 
						|
END|
 | 
						|
SET @counter = 1;
 | 
						|
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
 | 
						|
INSERT INTO t1 (f_char1, f_char2, f_charbig)
 | 
						|
SELECT CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
 | 
						|
ORDER BY f_int1;
 | 
						|
DROP TRIGGER trg_3;
 | 
						|
	
 | 
						|
# check trigger-12 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_charbig = '####updated per insert trigger####';
 | 
						|
ANALYZE  TABLE t1;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	analyze	status	Engine-independent statistics collected
 | 
						|
test.t1	analyze	status	OK
 | 
						|
CHECK    TABLE t1 EXTENDED;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	check	status	OK
 | 
						|
CHECKSUM TABLE t1 EXTENDED;
 | 
						|
Table	Checksum
 | 
						|
test.t1	<some_value>
 | 
						|
OPTIMIZE TABLE t1;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	optimize	status	OK
 | 
						|
# check layout success:    1
 | 
						|
REPAIR   TABLE t1 EXTENDED;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	repair	status	OK
 | 
						|
# check layout success:    1
 | 
						|
TRUNCATE t1;
 | 
						|
	
 | 
						|
# check TRUNCATE success: 	1
 | 
						|
# check layout success:    1
 | 
						|
# End usability test (inc/partition_check.inc)
 | 
						|
DROP TABLE t1;
 | 
						|
CREATE TABLE t1 (
 | 
						|
f_int1 INTEGER DEFAULT 0,
 | 
						|
f_int2 INTEGER DEFAULT 0,
 | 
						|
f_char1 CHAR(20),
 | 
						|
f_char2 CHAR(20),
 | 
						|
f_charbig VARCHAR(1000)
 | 
						|
 | 
						|
)
 | 
						|
PARTITION BY LIST(ABS(MOD(f_int1,2)))
 | 
						|
SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3
 | 
						|
(PARTITION part1 VALUES IN (0)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION part2 VALUES IN (1)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION part3 VALUES IN (NULL)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir');
 | 
						|
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
 | 
						|
# Start usability test (inc/partition_check.inc)
 | 
						|
create_command
 | 
						|
SHOW CREATE TABLE t1;
 | 
						|
Table	Create Table
 | 
						|
t1	CREATE TABLE `t1` (
 | 
						|
  `f_int1` int(11) DEFAULT 0,
 | 
						|
  `f_int2` int(11) DEFAULT 0,
 | 
						|
  `f_char1` char(20) DEFAULT NULL,
 | 
						|
  `f_char2` char(20) DEFAULT NULL,
 | 
						|
  `f_charbig` varchar(1000) DEFAULT NULL
 | 
						|
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | 
						|
 PARTITION BY LIST (abs(`f_int1` MOD 2))
 | 
						|
SUBPARTITION BY KEY (`f_int2`)
 | 
						|
SUBPARTITIONS 3
 | 
						|
(PARTITION `part1` VALUES IN (0) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `part2` VALUES IN (1) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `part3` VALUES IN (NULL) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM)
 | 
						|
 | 
						|
unified filelist
 | 
						|
t1#P#part1#SP#part1sp0.MYD
 | 
						|
t1#P#part1#SP#part1sp0.MYI
 | 
						|
t1#P#part1#SP#part1sp1.MYD
 | 
						|
t1#P#part1#SP#part1sp1.MYI
 | 
						|
t1#P#part1#SP#part1sp2.MYD
 | 
						|
t1#P#part1#SP#part1sp2.MYI
 | 
						|
t1#P#part2#SP#part2sp0.MYD
 | 
						|
t1#P#part2#SP#part2sp0.MYI
 | 
						|
t1#P#part2#SP#part2sp1.MYD
 | 
						|
t1#P#part2#SP#part2sp1.MYI
 | 
						|
t1#P#part2#SP#part2sp2.MYD
 | 
						|
t1#P#part2#SP#part2sp2.MYI
 | 
						|
t1#P#part3#SP#part3sp0.MYD
 | 
						|
t1#P#part3#SP#part3sp0.MYI
 | 
						|
t1#P#part3#SP#part3sp1.MYD
 | 
						|
t1#P#part3#SP#part3sp1.MYI
 | 
						|
t1#P#part3#SP#part3sp2.MYD
 | 
						|
t1#P#part3#SP#part3sp2.MYI
 | 
						|
t1.frm
 | 
						|
t1.par
 | 
						|
t1#P#part1#SP#part1sp0.MYD
 | 
						|
t1#P#part1#SP#part1sp1.MYD
 | 
						|
t1#P#part1#SP#part1sp2.MYD
 | 
						|
t1#P#part2#SP#part2sp0.MYD
 | 
						|
t1#P#part2#SP#part2sp1.MYD
 | 
						|
t1#P#part2#SP#part2sp2.MYD
 | 
						|
t1#P#part3#SP#part3sp0.MYD
 | 
						|
t1#P#part3#SP#part3sp1.MYD
 | 
						|
t1#P#part3#SP#part3sp2.MYD
 | 
						|
t1#P#part1#SP#part1sp0.MYI
 | 
						|
t1#P#part1#SP#part1sp1.MYI
 | 
						|
t1#P#part1#SP#part1sp2.MYI
 | 
						|
t1#P#part2#SP#part2sp0.MYI
 | 
						|
t1#P#part2#SP#part2sp1.MYI
 | 
						|
t1#P#part2#SP#part2sp2.MYI
 | 
						|
t1#P#part3#SP#part3sp0.MYI
 | 
						|
t1#P#part3#SP#part3sp1.MYI
 | 
						|
t1#P#part3#SP#part3sp2.MYI
 | 
						|
 | 
						|
# check prerequisites-1 success:    1
 | 
						|
# check COUNT(*) success:    1
 | 
						|
# check MIN/MAX(f_int1) success:    1
 | 
						|
# check MIN/MAX(f_int2) success:    1
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
 | 
						|
WHERE f_int1 IN (2,3);
 | 
						|
# check prerequisites-3 success:    1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'delete me';
 | 
						|
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
 | 
						|
# check read via f_int1 success: 1
 | 
						|
# check read via f_int2 success: 1
 | 
						|
	
 | 
						|
# check multiple-1 success: 	1
 | 
						|
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
 | 
						|
	
 | 
						|
# check multiple-2 success: 	1
 | 
						|
INSERT INTO t1 SELECT * FROM t0_template
 | 
						|
WHERE MOD(f_int1,3) = 0;
 | 
						|
	
 | 
						|
# check multiple-3 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = f_int1 + @max_row
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
 | 
						|
AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check multiple-4 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
 | 
						|
AND @max_row_div2 + @max_row_div4 + @max_row;
 | 
						|
	
 | 
						|
# check multiple-5 success: 	1
 | 
						|
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = @cur_value , f_int2 = @cur_value,
 | 
						|
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
 | 
						|
f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-1 success: 	1
 | 
						|
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = @cur_value , f_int2 = @cur_value,
 | 
						|
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
 | 
						|
f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-2 success: 	1
 | 
						|
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
 | 
						|
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
 | 
						|
UPDATE t1 SET f_int1 = @cur_value2
 | 
						|
WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-3 success: 	1
 | 
						|
SET @cur_value1= -1;
 | 
						|
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
 | 
						|
UPDATE t1 SET f_int1 = @cur_value1
 | 
						|
WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-4 success: 	1
 | 
						|
SELECT MAX(f_int1) INTO @cur_value FROM t1;
 | 
						|
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-5 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-6 success: 	1
 | 
						|
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
 | 
						|
	
 | 
						|
# check single-7 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
 | 
						|
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
 | 
						|
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
 | 
						|
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
 | 
						|
f_charbig = '#NULL#';
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = NULL , f_int2 = -@max_row,
 | 
						|
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
 | 
						|
f_charbig = '#NULL#';
 | 
						|
# check null success:    1
 | 
						|
	
 | 
						|
# check null-1 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = -@max_row
 | 
						|
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-2 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = NULL
 | 
						|
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-3 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-4 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 = 0 AND f_int2 = 0
 | 
						|
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
 | 
						|
AND f_charbig = '#NULL#';
 | 
						|
SET AUTOCOMMIT= 0;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
FROM t0_template source_tab
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check transactions-1 success: 	1
 | 
						|
COMMIT WORK;
 | 
						|
	
 | 
						|
# check transactions-2 success: 	1
 | 
						|
ROLLBACK WORK;
 | 
						|
	
 | 
						|
# check transactions-3 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
ROLLBACK WORK;
 | 
						|
	
 | 
						|
# check transactions-4 success: 	1
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
FROM t0_template source_tab
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check transactions-5 success: 	1
 | 
						|
ROLLBACK WORK;
 | 
						|
Warnings:
 | 
						|
Warning	1196	Some non-transactional changed tables couldn't be rolled back
 | 
						|
	
 | 
						|
# check transactions-6 success: 	1
 | 
						|
# INFO: Storage engine used for t1 seems to be not transactional.
 | 
						|
COMMIT;
 | 
						|
	
 | 
						|
# check transactions-7 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
SET @@session.sql_mode = 'traditional';
 | 
						|
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
 | 
						|
'', '', 'was inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
ERROR 22012: Division by 0
 | 
						|
COMMIT;
 | 
						|
	
 | 
						|
# check transactions-8 success: 	1
 | 
						|
# INFO: Storage engine used for t1 seems to be unable to revert
 | 
						|
#       changes made by the failing statement.
 | 
						|
SET @@session.sql_mode = '';
 | 
						|
SET AUTOCOMMIT= 1;
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
 | 
						|
	
 | 
						|
# check special-1 success: 	1
 | 
						|
UPDATE t1 SET f_charbig = '';
 | 
						|
	
 | 
						|
# check special-2 success: 	1
 | 
						|
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
 | 
						|
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
	
 | 
						|
# check trigger-1 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
	
 | 
						|
# check trigger-2 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-3 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-4 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-5 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-6 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-7 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-8 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = old.f_int1 + @max_row,
 | 
						|
new.f_int2 = old.f_int2 - @max_row,
 | 
						|
new.f_charbig = '####updated per update trigger####';
 | 
						|
END|
 | 
						|
UPDATE t1
 | 
						|
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
 | 
						|
f_charbig = '####updated per update statement itself####';
 | 
						|
	
 | 
						|
# check trigger-9 success: 	1
 | 
						|
DROP TRIGGER trg_2;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===');
 | 
						|
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = new.f_int1 + @max_row,
 | 
						|
new.f_int2 = new.f_int2 - @max_row,
 | 
						|
new.f_charbig = '####updated per update trigger####';
 | 
						|
END|
 | 
						|
UPDATE t1
 | 
						|
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
 | 
						|
f_charbig = '####updated per update statement itself####';
 | 
						|
	
 | 
						|
# check trigger-10 success: 	1
 | 
						|
DROP TRIGGER trg_2;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===');
 | 
						|
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = @my_max1 + @counter,
 | 
						|
new.f_int2 = @my_min2 - @counter,
 | 
						|
new.f_charbig = '####updated per insert trigger####';
 | 
						|
SET @counter = @counter + 1;
 | 
						|
END|
 | 
						|
SET @counter = 1;
 | 
						|
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
 | 
						|
ORDER BY f_int1;
 | 
						|
DROP TRIGGER trg_3;
 | 
						|
	
 | 
						|
# check trigger-11 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_charbig = '####updated per insert trigger####';
 | 
						|
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = @my_max1 + @counter,
 | 
						|
new.f_int2 = @my_min2 - @counter,
 | 
						|
new.f_charbig = '####updated per insert trigger####';
 | 
						|
SET @counter = @counter + 1;
 | 
						|
END|
 | 
						|
SET @counter = 1;
 | 
						|
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
 | 
						|
INSERT INTO t1 (f_char1, f_char2, f_charbig)
 | 
						|
SELECT CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
 | 
						|
ORDER BY f_int1;
 | 
						|
DROP TRIGGER trg_3;
 | 
						|
	
 | 
						|
# check trigger-12 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_charbig = '####updated per insert trigger####';
 | 
						|
ANALYZE  TABLE t1;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	analyze	status	Engine-independent statistics collected
 | 
						|
test.t1	analyze	status	OK
 | 
						|
CHECK    TABLE t1 EXTENDED;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	check	status	OK
 | 
						|
CHECKSUM TABLE t1 EXTENDED;
 | 
						|
Table	Checksum
 | 
						|
test.t1	<some_value>
 | 
						|
OPTIMIZE TABLE t1;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	optimize	status	OK
 | 
						|
# check layout success:    1
 | 
						|
REPAIR   TABLE t1 EXTENDED;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	repair	status	OK
 | 
						|
# check layout success:    1
 | 
						|
TRUNCATE t1;
 | 
						|
	
 | 
						|
# check TRUNCATE success: 	1
 | 
						|
# check layout success:    1
 | 
						|
# End usability test (inc/partition_check.inc)
 | 
						|
DROP TABLE t1;
 | 
						|
#------------------------------------------------------------------------
 | 
						|
#  2   Tables with PRIMARY KEY and/or UNIQUE INDEXes
 | 
						|
#        The partitioning function contains one column.
 | 
						|
#------------------------------------------------------------------------
 | 
						|
#  2.5 PRIMARY KEY + UNIQUE INDEX consisting of two columns
 | 
						|
DROP TABLE IF EXISTS t1;
 | 
						|
CREATE TABLE t1 (
 | 
						|
f_int1 INTEGER DEFAULT 0,
 | 
						|
f_int2 INTEGER DEFAULT 0,
 | 
						|
f_char1 CHAR(20),
 | 
						|
f_char2 CHAR(20),
 | 
						|
f_charbig VARCHAR(1000)
 | 
						|
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
 | 
						|
)
 | 
						|
PARTITION BY HASH(f_int1) PARTITIONS 2
 | 
						|
(PARTITION p1 
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION p2 
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir');
 | 
						|
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
 | 
						|
# Start usability test (inc/partition_check.inc)
 | 
						|
create_command
 | 
						|
SHOW CREATE TABLE t1;
 | 
						|
Table	Create Table
 | 
						|
t1	CREATE TABLE `t1` (
 | 
						|
  `f_int1` int(11) DEFAULT 0,
 | 
						|
  `f_int2` int(11) DEFAULT 0,
 | 
						|
  `f_char1` char(20) DEFAULT NULL,
 | 
						|
  `f_char2` char(20) DEFAULT NULL,
 | 
						|
  `f_charbig` varchar(1000) DEFAULT NULL,
 | 
						|
  UNIQUE KEY `uidx1` (`f_int1`,`f_int2`),
 | 
						|
  UNIQUE KEY `uidx2` (`f_int2`,`f_int1`)
 | 
						|
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | 
						|
 PARTITION BY HASH (`f_int1`)
 | 
						|
(PARTITION `p1` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `p2` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM)
 | 
						|
 | 
						|
unified filelist
 | 
						|
t1#P#p1.MYD
 | 
						|
t1#P#p1.MYI
 | 
						|
t1#P#p2.MYD
 | 
						|
t1#P#p2.MYI
 | 
						|
t1.frm
 | 
						|
t1.par
 | 
						|
t1#P#p1.MYD
 | 
						|
t1#P#p2.MYD
 | 
						|
t1#P#p1.MYI
 | 
						|
t1#P#p2.MYI
 | 
						|
 | 
						|
# check prerequisites-1 success:    1
 | 
						|
# check COUNT(*) success:    1
 | 
						|
# check MIN/MAX(f_int1) success:    1
 | 
						|
# check MIN/MAX(f_int2) success:    1
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
 | 
						|
WHERE f_int1 IN (2,3);
 | 
						|
ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
 | 
						|
# check prerequisites-3 success:    1
 | 
						|
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
 | 
						|
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
 | 
						|
WHERE f_int1 IN (2,3);
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'delete me';
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
 | 
						|
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
 | 
						|
WHERE f_int1 IN (2,3);
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'delete me';
 | 
						|
# check read via f_int1 success: 1
 | 
						|
# check read via f_int2 success: 1
 | 
						|
	
 | 
						|
# check multiple-1 success: 	1
 | 
						|
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
 | 
						|
	
 | 
						|
# check multiple-2 success: 	1
 | 
						|
INSERT INTO t1 SELECT * FROM t0_template
 | 
						|
WHERE MOD(f_int1,3) = 0;
 | 
						|
	
 | 
						|
# check multiple-3 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = f_int1 + @max_row
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
 | 
						|
AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check multiple-4 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
 | 
						|
AND @max_row_div2 + @max_row_div4 + @max_row;
 | 
						|
	
 | 
						|
# check multiple-5 success: 	1
 | 
						|
SELECT COUNT(*) INTO @try_count FROM t0_template
 | 
						|
WHERE MOD(f_int1,3) = 0
 | 
						|
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
 | 
						|
SELECT COUNT(*) INTO @clash_count
 | 
						|
FROM t1 INNER JOIN t0_template USING(f_int1)
 | 
						|
WHERE MOD(f_int1,3) = 0
 | 
						|
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
 | 
						|
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = @cur_value , f_int2 = @cur_value,
 | 
						|
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
 | 
						|
f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-1 success: 	1
 | 
						|
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = @cur_value , f_int2 = @cur_value,
 | 
						|
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
 | 
						|
f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-2 success: 	1
 | 
						|
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
 | 
						|
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
 | 
						|
UPDATE t1 SET f_int1 = @cur_value2
 | 
						|
WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-3 success: 	1
 | 
						|
SET @cur_value1= -1;
 | 
						|
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
 | 
						|
UPDATE t1 SET f_int1 = @cur_value1
 | 
						|
WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-4 success: 	1
 | 
						|
SELECT MAX(f_int1) INTO @cur_value FROM t1;
 | 
						|
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-5 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-6 success: 	1
 | 
						|
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
 | 
						|
	
 | 
						|
# check single-7 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
 | 
						|
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
 | 
						|
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
 | 
						|
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
 | 
						|
f_charbig = '#NULL#';
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = NULL , f_int2 = -@max_row,
 | 
						|
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
 | 
						|
f_charbig = '#NULL#';
 | 
						|
# check null success:    1
 | 
						|
	
 | 
						|
# check null-1 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = -@max_row
 | 
						|
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-2 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = NULL
 | 
						|
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-3 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-4 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 = 0 AND f_int2 = 0
 | 
						|
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
 | 
						|
AND f_charbig = '#NULL#';
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
   FROM t0_template source_tab
 | 
						|
WHERE MOD(f_int1,3) = 0
 | 
						|
AND f_int1 BETWEEN @max_row_div2 AND @max_row
 | 
						|
ON DUPLICATE KEY
 | 
						|
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
 | 
						|
f_int2 = 2 * @max_row + source_tab.f_int1,
 | 
						|
f_charbig = 'was updated';
 | 
						|
	
 | 
						|
# check unique-1-a success: 	1
 | 
						|
	
 | 
						|
# check unique-1-b success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===')
 | 
						|
WHERE f_charbig = 'was updated';
 | 
						|
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
 | 
						|
   FROM t0_template source_tab
 | 
						|
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
 | 
						|
	
 | 
						|
# check replace success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
 | 
						|
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
 | 
						|
UPDATE t1 SET f_int2 = f_int1,
 | 
						|
f_char1 = CAST(f_int1 AS CHAR),
 | 
						|
f_char2 = CAST(f_int1 AS CHAR),
 | 
						|
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
 | 
						|
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
 | 
						|
SET AUTOCOMMIT= 0;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
FROM t0_template source_tab
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check transactions-1 success: 	1
 | 
						|
COMMIT WORK;
 | 
						|
	
 | 
						|
# check transactions-2 success: 	1
 | 
						|
ROLLBACK WORK;
 | 
						|
	
 | 
						|
# check transactions-3 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
ROLLBACK WORK;
 | 
						|
	
 | 
						|
# check transactions-4 success: 	1
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
FROM t0_template source_tab
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check transactions-5 success: 	1
 | 
						|
ROLLBACK WORK;
 | 
						|
Warnings:
 | 
						|
Warning	1196	Some non-transactional changed tables couldn't be rolled back
 | 
						|
	
 | 
						|
# check transactions-6 success: 	1
 | 
						|
# INFO: Storage engine used for t1 seems to be not transactional.
 | 
						|
COMMIT;
 | 
						|
	
 | 
						|
# check transactions-7 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
SET @@session.sql_mode = 'traditional';
 | 
						|
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
 | 
						|
'', '', 'was inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
ERROR 22012: Division by 0
 | 
						|
COMMIT;
 | 
						|
	
 | 
						|
# check transactions-8 success: 	1
 | 
						|
# INFO: Storage engine used for t1 seems to be unable to revert
 | 
						|
#       changes made by the failing statement.
 | 
						|
SET @@session.sql_mode = '';
 | 
						|
SET AUTOCOMMIT= 1;
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
 | 
						|
	
 | 
						|
# check special-1 success: 	1
 | 
						|
UPDATE t1 SET f_charbig = '';
 | 
						|
	
 | 
						|
# check special-2 success: 	1
 | 
						|
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
 | 
						|
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
	
 | 
						|
# check trigger-1 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
	
 | 
						|
# check trigger-2 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-3 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-4 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-5 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-6 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-7 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-8 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = old.f_int1 + @max_row,
 | 
						|
new.f_int2 = old.f_int2 - @max_row,
 | 
						|
new.f_charbig = '####updated per update trigger####';
 | 
						|
END|
 | 
						|
UPDATE t1
 | 
						|
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
 | 
						|
f_charbig = '####updated per update statement itself####';
 | 
						|
	
 | 
						|
# check trigger-9 success: 	1
 | 
						|
DROP TRIGGER trg_2;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===');
 | 
						|
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = new.f_int1 + @max_row,
 | 
						|
new.f_int2 = new.f_int2 - @max_row,
 | 
						|
new.f_charbig = '####updated per update trigger####';
 | 
						|
END|
 | 
						|
UPDATE t1
 | 
						|
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
 | 
						|
f_charbig = '####updated per update statement itself####';
 | 
						|
	
 | 
						|
# check trigger-10 success: 	1
 | 
						|
DROP TRIGGER trg_2;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===');
 | 
						|
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = @my_max1 + @counter,
 | 
						|
new.f_int2 = @my_min2 - @counter,
 | 
						|
new.f_charbig = '####updated per insert trigger####';
 | 
						|
SET @counter = @counter + 1;
 | 
						|
END|
 | 
						|
SET @counter = 1;
 | 
						|
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
 | 
						|
ORDER BY f_int1;
 | 
						|
DROP TRIGGER trg_3;
 | 
						|
	
 | 
						|
# check trigger-11 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_charbig = '####updated per insert trigger####';
 | 
						|
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = @my_max1 + @counter,
 | 
						|
new.f_int2 = @my_min2 - @counter,
 | 
						|
new.f_charbig = '####updated per insert trigger####';
 | 
						|
SET @counter = @counter + 1;
 | 
						|
END|
 | 
						|
SET @counter = 1;
 | 
						|
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
 | 
						|
INSERT INTO t1 (f_char1, f_char2, f_charbig)
 | 
						|
SELECT CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
 | 
						|
ORDER BY f_int1;
 | 
						|
DROP TRIGGER trg_3;
 | 
						|
	
 | 
						|
# check trigger-12 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_charbig = '####updated per insert trigger####';
 | 
						|
ANALYZE  TABLE t1;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	analyze	status	Engine-independent statistics collected
 | 
						|
test.t1	analyze	status	OK
 | 
						|
CHECK    TABLE t1 EXTENDED;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	check	status	OK
 | 
						|
CHECKSUM TABLE t1 EXTENDED;
 | 
						|
Table	Checksum
 | 
						|
test.t1	<some_value>
 | 
						|
OPTIMIZE TABLE t1;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	optimize	status	OK
 | 
						|
# check layout success:    1
 | 
						|
REPAIR   TABLE t1 EXTENDED;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	repair	status	OK
 | 
						|
# check layout success:    1
 | 
						|
TRUNCATE t1;
 | 
						|
	
 | 
						|
# check TRUNCATE success: 	1
 | 
						|
# check layout success:    1
 | 
						|
# End usability test (inc/partition_check.inc)
 | 
						|
DROP TABLE t1;
 | 
						|
CREATE TABLE t1 (
 | 
						|
f_int1 INTEGER DEFAULT 0,
 | 
						|
f_int2 INTEGER DEFAULT 0,
 | 
						|
f_char1 CHAR(20),
 | 
						|
f_char2 CHAR(20),
 | 
						|
f_charbig VARCHAR(1000)
 | 
						|
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
 | 
						|
)
 | 
						|
PARTITION BY KEY(f_int1) PARTITIONS 5
 | 
						|
(PARTITION p1
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION p2
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION p3
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION p4
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION p5
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir');
 | 
						|
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
 | 
						|
# Start usability test (inc/partition_check.inc)
 | 
						|
create_command
 | 
						|
SHOW CREATE TABLE t1;
 | 
						|
Table	Create Table
 | 
						|
t1	CREATE TABLE `t1` (
 | 
						|
  `f_int1` int(11) DEFAULT 0,
 | 
						|
  `f_int2` int(11) DEFAULT 0,
 | 
						|
  `f_char1` char(20) DEFAULT NULL,
 | 
						|
  `f_char2` char(20) DEFAULT NULL,
 | 
						|
  `f_charbig` varchar(1000) DEFAULT NULL,
 | 
						|
  UNIQUE KEY `uidx1` (`f_int1`,`f_int2`),
 | 
						|
  UNIQUE KEY `uidx2` (`f_int2`,`f_int1`)
 | 
						|
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | 
						|
 PARTITION BY KEY (`f_int1`)
 | 
						|
(PARTITION `p1` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `p2` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `p3` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `p4` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `p5` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM)
 | 
						|
 | 
						|
unified filelist
 | 
						|
t1#P#p1.MYD
 | 
						|
t1#P#p1.MYI
 | 
						|
t1#P#p2.MYD
 | 
						|
t1#P#p2.MYI
 | 
						|
t1#P#p3.MYD
 | 
						|
t1#P#p3.MYI
 | 
						|
t1#P#p4.MYD
 | 
						|
t1#P#p4.MYI
 | 
						|
t1#P#p5.MYD
 | 
						|
t1#P#p5.MYI
 | 
						|
t1.frm
 | 
						|
t1.par
 | 
						|
t1#P#p1.MYD
 | 
						|
t1#P#p2.MYD
 | 
						|
t1#P#p3.MYD
 | 
						|
t1#P#p4.MYD
 | 
						|
t1#P#p5.MYD
 | 
						|
t1#P#p1.MYI
 | 
						|
t1#P#p2.MYI
 | 
						|
t1#P#p3.MYI
 | 
						|
t1#P#p4.MYI
 | 
						|
t1#P#p5.MYI
 | 
						|
 | 
						|
# check prerequisites-1 success:    1
 | 
						|
# check COUNT(*) success:    1
 | 
						|
# check MIN/MAX(f_int1) success:    1
 | 
						|
# check MIN/MAX(f_int2) success:    1
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
 | 
						|
WHERE f_int1 IN (2,3);
 | 
						|
ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
 | 
						|
# check prerequisites-3 success:    1
 | 
						|
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
 | 
						|
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
 | 
						|
WHERE f_int1 IN (2,3);
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'delete me';
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
 | 
						|
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
 | 
						|
WHERE f_int1 IN (2,3);
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'delete me';
 | 
						|
# check read via f_int1 success: 1
 | 
						|
# check read via f_int2 success: 1
 | 
						|
	
 | 
						|
# check multiple-1 success: 	1
 | 
						|
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
 | 
						|
	
 | 
						|
# check multiple-2 success: 	1
 | 
						|
INSERT INTO t1 SELECT * FROM t0_template
 | 
						|
WHERE MOD(f_int1,3) = 0;
 | 
						|
	
 | 
						|
# check multiple-3 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = f_int1 + @max_row
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
 | 
						|
AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check multiple-4 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
 | 
						|
AND @max_row_div2 + @max_row_div4 + @max_row;
 | 
						|
	
 | 
						|
# check multiple-5 success: 	1
 | 
						|
SELECT COUNT(*) INTO @try_count FROM t0_template
 | 
						|
WHERE MOD(f_int1,3) = 0
 | 
						|
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
 | 
						|
SELECT COUNT(*) INTO @clash_count
 | 
						|
FROM t1 INNER JOIN t0_template USING(f_int1)
 | 
						|
WHERE MOD(f_int1,3) = 0
 | 
						|
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
 | 
						|
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = @cur_value , f_int2 = @cur_value,
 | 
						|
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
 | 
						|
f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-1 success: 	1
 | 
						|
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = @cur_value , f_int2 = @cur_value,
 | 
						|
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
 | 
						|
f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-2 success: 	1
 | 
						|
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
 | 
						|
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
 | 
						|
UPDATE t1 SET f_int1 = @cur_value2
 | 
						|
WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-3 success: 	1
 | 
						|
SET @cur_value1= -1;
 | 
						|
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
 | 
						|
UPDATE t1 SET f_int1 = @cur_value1
 | 
						|
WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-4 success: 	1
 | 
						|
SELECT MAX(f_int1) INTO @cur_value FROM t1;
 | 
						|
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-5 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-6 success: 	1
 | 
						|
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
 | 
						|
	
 | 
						|
# check single-7 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
 | 
						|
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
 | 
						|
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
 | 
						|
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
 | 
						|
f_charbig = '#NULL#';
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = NULL , f_int2 = -@max_row,
 | 
						|
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
 | 
						|
f_charbig = '#NULL#';
 | 
						|
# check null success:    1
 | 
						|
	
 | 
						|
# check null-1 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = -@max_row
 | 
						|
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-2 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = NULL
 | 
						|
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-3 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-4 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 = 0 AND f_int2 = 0
 | 
						|
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
 | 
						|
AND f_charbig = '#NULL#';
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
   FROM t0_template source_tab
 | 
						|
WHERE MOD(f_int1,3) = 0
 | 
						|
AND f_int1 BETWEEN @max_row_div2 AND @max_row
 | 
						|
ON DUPLICATE KEY
 | 
						|
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
 | 
						|
f_int2 = 2 * @max_row + source_tab.f_int1,
 | 
						|
f_charbig = 'was updated';
 | 
						|
	
 | 
						|
# check unique-1-a success: 	1
 | 
						|
	
 | 
						|
# check unique-1-b success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===')
 | 
						|
WHERE f_charbig = 'was updated';
 | 
						|
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
 | 
						|
   FROM t0_template source_tab
 | 
						|
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
 | 
						|
	
 | 
						|
# check replace success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
 | 
						|
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
 | 
						|
UPDATE t1 SET f_int2 = f_int1,
 | 
						|
f_char1 = CAST(f_int1 AS CHAR),
 | 
						|
f_char2 = CAST(f_int1 AS CHAR),
 | 
						|
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
 | 
						|
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
 | 
						|
SET AUTOCOMMIT= 0;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
FROM t0_template source_tab
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check transactions-1 success: 	1
 | 
						|
COMMIT WORK;
 | 
						|
	
 | 
						|
# check transactions-2 success: 	1
 | 
						|
ROLLBACK WORK;
 | 
						|
	
 | 
						|
# check transactions-3 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
ROLLBACK WORK;
 | 
						|
	
 | 
						|
# check transactions-4 success: 	1
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
FROM t0_template source_tab
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check transactions-5 success: 	1
 | 
						|
ROLLBACK WORK;
 | 
						|
Warnings:
 | 
						|
Warning	1196	Some non-transactional changed tables couldn't be rolled back
 | 
						|
	
 | 
						|
# check transactions-6 success: 	1
 | 
						|
# INFO: Storage engine used for t1 seems to be not transactional.
 | 
						|
COMMIT;
 | 
						|
	
 | 
						|
# check transactions-7 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
SET @@session.sql_mode = 'traditional';
 | 
						|
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
 | 
						|
'', '', 'was inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
ERROR 22012: Division by 0
 | 
						|
COMMIT;
 | 
						|
	
 | 
						|
# check transactions-8 success: 	1
 | 
						|
# INFO: Storage engine used for t1 seems to be unable to revert
 | 
						|
#       changes made by the failing statement.
 | 
						|
SET @@session.sql_mode = '';
 | 
						|
SET AUTOCOMMIT= 1;
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
 | 
						|
	
 | 
						|
# check special-1 success: 	1
 | 
						|
UPDATE t1 SET f_charbig = '';
 | 
						|
	
 | 
						|
# check special-2 success: 	1
 | 
						|
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
 | 
						|
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
	
 | 
						|
# check trigger-1 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
	
 | 
						|
# check trigger-2 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-3 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-4 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-5 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-6 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-7 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-8 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = old.f_int1 + @max_row,
 | 
						|
new.f_int2 = old.f_int2 - @max_row,
 | 
						|
new.f_charbig = '####updated per update trigger####';
 | 
						|
END|
 | 
						|
UPDATE t1
 | 
						|
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
 | 
						|
f_charbig = '####updated per update statement itself####';
 | 
						|
	
 | 
						|
# check trigger-9 success: 	1
 | 
						|
DROP TRIGGER trg_2;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===');
 | 
						|
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = new.f_int1 + @max_row,
 | 
						|
new.f_int2 = new.f_int2 - @max_row,
 | 
						|
new.f_charbig = '####updated per update trigger####';
 | 
						|
END|
 | 
						|
UPDATE t1
 | 
						|
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
 | 
						|
f_charbig = '####updated per update statement itself####';
 | 
						|
	
 | 
						|
# check trigger-10 success: 	1
 | 
						|
DROP TRIGGER trg_2;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===');
 | 
						|
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = @my_max1 + @counter,
 | 
						|
new.f_int2 = @my_min2 - @counter,
 | 
						|
new.f_charbig = '####updated per insert trigger####';
 | 
						|
SET @counter = @counter + 1;
 | 
						|
END|
 | 
						|
SET @counter = 1;
 | 
						|
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
 | 
						|
ORDER BY f_int1;
 | 
						|
DROP TRIGGER trg_3;
 | 
						|
	
 | 
						|
# check trigger-11 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_charbig = '####updated per insert trigger####';
 | 
						|
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = @my_max1 + @counter,
 | 
						|
new.f_int2 = @my_min2 - @counter,
 | 
						|
new.f_charbig = '####updated per insert trigger####';
 | 
						|
SET @counter = @counter + 1;
 | 
						|
END|
 | 
						|
SET @counter = 1;
 | 
						|
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
 | 
						|
INSERT INTO t1 (f_char1, f_char2, f_charbig)
 | 
						|
SELECT CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
 | 
						|
ORDER BY f_int1;
 | 
						|
DROP TRIGGER trg_3;
 | 
						|
	
 | 
						|
# check trigger-12 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_charbig = '####updated per insert trigger####';
 | 
						|
ANALYZE  TABLE t1;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	analyze	status	Engine-independent statistics collected
 | 
						|
test.t1	analyze	status	OK
 | 
						|
CHECK    TABLE t1 EXTENDED;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	check	status	OK
 | 
						|
CHECKSUM TABLE t1 EXTENDED;
 | 
						|
Table	Checksum
 | 
						|
test.t1	<some_value>
 | 
						|
OPTIMIZE TABLE t1;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	optimize	status	OK
 | 
						|
# check layout success:    1
 | 
						|
REPAIR   TABLE t1 EXTENDED;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	repair	status	OK
 | 
						|
# check layout success:    1
 | 
						|
TRUNCATE t1;
 | 
						|
	
 | 
						|
# check TRUNCATE success: 	1
 | 
						|
# check layout success:    1
 | 
						|
# End usability test (inc/partition_check.inc)
 | 
						|
DROP TABLE t1;
 | 
						|
CREATE TABLE t1 (
 | 
						|
f_int1 INTEGER DEFAULT 0,
 | 
						|
f_int2 INTEGER DEFAULT 0,
 | 
						|
f_char1 CHAR(20),
 | 
						|
f_char2 CHAR(20),
 | 
						|
f_charbig VARCHAR(1000)
 | 
						|
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
 | 
						|
)
 | 
						|
PARTITION BY LIST(MOD(f_int1,4))
 | 
						|
(PARTITION part_3 VALUES IN (-3)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION part_2 VALUES IN (-2)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION part_1 VALUES IN (-1)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION part_N VALUES IN (NULL)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION part0 VALUES IN (0)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION part1 VALUES IN (1)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION part2 VALUES IN (2)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION part3 VALUES IN (3)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir');
 | 
						|
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
 | 
						|
# Start usability test (inc/partition_check.inc)
 | 
						|
create_command
 | 
						|
SHOW CREATE TABLE t1;
 | 
						|
Table	Create Table
 | 
						|
t1	CREATE TABLE `t1` (
 | 
						|
  `f_int1` int(11) DEFAULT 0,
 | 
						|
  `f_int2` int(11) DEFAULT 0,
 | 
						|
  `f_char1` char(20) DEFAULT NULL,
 | 
						|
  `f_char2` char(20) DEFAULT NULL,
 | 
						|
  `f_charbig` varchar(1000) DEFAULT NULL,
 | 
						|
  UNIQUE KEY `uidx1` (`f_int1`,`f_int2`),
 | 
						|
  UNIQUE KEY `uidx2` (`f_int2`,`f_int1`)
 | 
						|
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | 
						|
 PARTITION BY LIST (`f_int1` MOD 4)
 | 
						|
(PARTITION `part_3` VALUES IN (-3) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `part_2` VALUES IN (-2) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `part_1` VALUES IN (-1) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `part_N` VALUES IN (NULL) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `part0` VALUES IN (0) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `part1` VALUES IN (1) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `part2` VALUES IN (2) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `part3` VALUES IN (3) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM)
 | 
						|
 | 
						|
unified filelist
 | 
						|
t1#P#part0.MYD
 | 
						|
t1#P#part0.MYI
 | 
						|
t1#P#part1.MYD
 | 
						|
t1#P#part1.MYI
 | 
						|
t1#P#part2.MYD
 | 
						|
t1#P#part2.MYI
 | 
						|
t1#P#part3.MYD
 | 
						|
t1#P#part3.MYI
 | 
						|
t1#P#part_1.MYD
 | 
						|
t1#P#part_1.MYI
 | 
						|
t1#P#part_2.MYD
 | 
						|
t1#P#part_2.MYI
 | 
						|
t1#P#part_3.MYD
 | 
						|
t1#P#part_3.MYI
 | 
						|
t1#P#part_N.MYD
 | 
						|
t1#P#part_N.MYI
 | 
						|
t1.frm
 | 
						|
t1.par
 | 
						|
t1#P#part0.MYD
 | 
						|
t1#P#part1.MYD
 | 
						|
t1#P#part2.MYD
 | 
						|
t1#P#part3.MYD
 | 
						|
t1#P#part_1.MYD
 | 
						|
t1#P#part_2.MYD
 | 
						|
t1#P#part_3.MYD
 | 
						|
t1#P#part_N.MYD
 | 
						|
t1#P#part0.MYI
 | 
						|
t1#P#part1.MYI
 | 
						|
t1#P#part2.MYI
 | 
						|
t1#P#part3.MYI
 | 
						|
t1#P#part_1.MYI
 | 
						|
t1#P#part_2.MYI
 | 
						|
t1#P#part_3.MYI
 | 
						|
t1#P#part_N.MYI
 | 
						|
 | 
						|
# check prerequisites-1 success:    1
 | 
						|
# check COUNT(*) success:    1
 | 
						|
# check MIN/MAX(f_int1) success:    1
 | 
						|
# check MIN/MAX(f_int2) success:    1
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
 | 
						|
WHERE f_int1 IN (2,3);
 | 
						|
ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
 | 
						|
# check prerequisites-3 success:    1
 | 
						|
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
 | 
						|
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
 | 
						|
WHERE f_int1 IN (2,3);
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'delete me';
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
 | 
						|
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
 | 
						|
WHERE f_int1 IN (2,3);
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'delete me';
 | 
						|
# check read via f_int1 success: 1
 | 
						|
# check read via f_int2 success: 1
 | 
						|
	
 | 
						|
# check multiple-1 success: 	1
 | 
						|
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
 | 
						|
	
 | 
						|
# check multiple-2 success: 	1
 | 
						|
INSERT INTO t1 SELECT * FROM t0_template
 | 
						|
WHERE MOD(f_int1,3) = 0;
 | 
						|
	
 | 
						|
# check multiple-3 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = f_int1 + @max_row
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
 | 
						|
AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check multiple-4 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
 | 
						|
AND @max_row_div2 + @max_row_div4 + @max_row;
 | 
						|
	
 | 
						|
# check multiple-5 success: 	1
 | 
						|
SELECT COUNT(*) INTO @try_count FROM t0_template
 | 
						|
WHERE MOD(f_int1,3) = 0
 | 
						|
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
 | 
						|
SELECT COUNT(*) INTO @clash_count
 | 
						|
FROM t1 INNER JOIN t0_template USING(f_int1)
 | 
						|
WHERE MOD(f_int1,3) = 0
 | 
						|
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
 | 
						|
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = @cur_value , f_int2 = @cur_value,
 | 
						|
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
 | 
						|
f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-1 success: 	1
 | 
						|
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = @cur_value , f_int2 = @cur_value,
 | 
						|
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
 | 
						|
f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-2 success: 	1
 | 
						|
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
 | 
						|
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
 | 
						|
UPDATE t1 SET f_int1 = @cur_value2
 | 
						|
WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-3 success: 	1
 | 
						|
SET @cur_value1= -1;
 | 
						|
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
 | 
						|
UPDATE t1 SET f_int1 = @cur_value1
 | 
						|
WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-4 success: 	1
 | 
						|
SELECT MAX(f_int1) INTO @cur_value FROM t1;
 | 
						|
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-5 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-6 success: 	1
 | 
						|
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
 | 
						|
	
 | 
						|
# check single-7 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
 | 
						|
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
 | 
						|
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
 | 
						|
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
 | 
						|
f_charbig = '#NULL#';
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = NULL , f_int2 = -@max_row,
 | 
						|
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
 | 
						|
f_charbig = '#NULL#';
 | 
						|
# check null success:    1
 | 
						|
	
 | 
						|
# check null-1 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = -@max_row
 | 
						|
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-2 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = NULL
 | 
						|
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-3 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-4 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 = 0 AND f_int2 = 0
 | 
						|
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
 | 
						|
AND f_charbig = '#NULL#';
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
   FROM t0_template source_tab
 | 
						|
WHERE MOD(f_int1,3) = 0
 | 
						|
AND f_int1 BETWEEN @max_row_div2 AND @max_row
 | 
						|
ON DUPLICATE KEY
 | 
						|
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
 | 
						|
f_int2 = 2 * @max_row + source_tab.f_int1,
 | 
						|
f_charbig = 'was updated';
 | 
						|
	
 | 
						|
# check unique-1-a success: 	1
 | 
						|
	
 | 
						|
# check unique-1-b success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===')
 | 
						|
WHERE f_charbig = 'was updated';
 | 
						|
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
 | 
						|
   FROM t0_template source_tab
 | 
						|
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
 | 
						|
	
 | 
						|
# check replace success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
 | 
						|
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
 | 
						|
UPDATE t1 SET f_int2 = f_int1,
 | 
						|
f_char1 = CAST(f_int1 AS CHAR),
 | 
						|
f_char2 = CAST(f_int1 AS CHAR),
 | 
						|
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
 | 
						|
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
 | 
						|
SET AUTOCOMMIT= 0;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
FROM t0_template source_tab
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check transactions-1 success: 	1
 | 
						|
COMMIT WORK;
 | 
						|
	
 | 
						|
# check transactions-2 success: 	1
 | 
						|
ROLLBACK WORK;
 | 
						|
	
 | 
						|
# check transactions-3 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
ROLLBACK WORK;
 | 
						|
	
 | 
						|
# check transactions-4 success: 	1
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
FROM t0_template source_tab
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check transactions-5 success: 	1
 | 
						|
ROLLBACK WORK;
 | 
						|
Warnings:
 | 
						|
Warning	1196	Some non-transactional changed tables couldn't be rolled back
 | 
						|
	
 | 
						|
# check transactions-6 success: 	1
 | 
						|
# INFO: Storage engine used for t1 seems to be not transactional.
 | 
						|
COMMIT;
 | 
						|
	
 | 
						|
# check transactions-7 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
SET @@session.sql_mode = 'traditional';
 | 
						|
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
 | 
						|
'', '', 'was inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
ERROR 22012: Division by 0
 | 
						|
COMMIT;
 | 
						|
	
 | 
						|
# check transactions-8 success: 	1
 | 
						|
# INFO: Storage engine used for t1 seems to be unable to revert
 | 
						|
#       changes made by the failing statement.
 | 
						|
SET @@session.sql_mode = '';
 | 
						|
SET AUTOCOMMIT= 1;
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
 | 
						|
	
 | 
						|
# check special-1 success: 	1
 | 
						|
UPDATE t1 SET f_charbig = '';
 | 
						|
	
 | 
						|
# check special-2 success: 	1
 | 
						|
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
 | 
						|
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
	
 | 
						|
# check trigger-1 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
	
 | 
						|
# check trigger-2 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-3 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-4 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-5 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-6 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-7 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-8 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = old.f_int1 + @max_row,
 | 
						|
new.f_int2 = old.f_int2 - @max_row,
 | 
						|
new.f_charbig = '####updated per update trigger####';
 | 
						|
END|
 | 
						|
UPDATE t1
 | 
						|
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
 | 
						|
f_charbig = '####updated per update statement itself####';
 | 
						|
	
 | 
						|
# check trigger-9 success: 	1
 | 
						|
DROP TRIGGER trg_2;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===');
 | 
						|
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = new.f_int1 + @max_row,
 | 
						|
new.f_int2 = new.f_int2 - @max_row,
 | 
						|
new.f_charbig = '####updated per update trigger####';
 | 
						|
END|
 | 
						|
UPDATE t1
 | 
						|
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
 | 
						|
f_charbig = '####updated per update statement itself####';
 | 
						|
	
 | 
						|
# check trigger-10 success: 	1
 | 
						|
DROP TRIGGER trg_2;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===');
 | 
						|
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = @my_max1 + @counter,
 | 
						|
new.f_int2 = @my_min2 - @counter,
 | 
						|
new.f_charbig = '####updated per insert trigger####';
 | 
						|
SET @counter = @counter + 1;
 | 
						|
END|
 | 
						|
SET @counter = 1;
 | 
						|
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
 | 
						|
ORDER BY f_int1;
 | 
						|
DROP TRIGGER trg_3;
 | 
						|
	
 | 
						|
# check trigger-11 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_charbig = '####updated per insert trigger####';
 | 
						|
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = @my_max1 + @counter,
 | 
						|
new.f_int2 = @my_min2 - @counter,
 | 
						|
new.f_charbig = '####updated per insert trigger####';
 | 
						|
SET @counter = @counter + 1;
 | 
						|
END|
 | 
						|
SET @counter = 1;
 | 
						|
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
 | 
						|
INSERT INTO t1 (f_char1, f_char2, f_charbig)
 | 
						|
SELECT CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
 | 
						|
ORDER BY f_int1;
 | 
						|
DROP TRIGGER trg_3;
 | 
						|
	
 | 
						|
# check trigger-12 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_charbig = '####updated per insert trigger####';
 | 
						|
ANALYZE  TABLE t1;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	analyze	status	Engine-independent statistics collected
 | 
						|
test.t1	analyze	status	OK
 | 
						|
CHECK    TABLE t1 EXTENDED;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	check	status	OK
 | 
						|
CHECKSUM TABLE t1 EXTENDED;
 | 
						|
Table	Checksum
 | 
						|
test.t1	<some_value>
 | 
						|
OPTIMIZE TABLE t1;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	optimize	status	OK
 | 
						|
# check layout success:    1
 | 
						|
REPAIR   TABLE t1 EXTENDED;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	repair	status	OK
 | 
						|
# check layout success:    1
 | 
						|
TRUNCATE t1;
 | 
						|
	
 | 
						|
# check TRUNCATE success: 	1
 | 
						|
# check layout success:    1
 | 
						|
# End usability test (inc/partition_check.inc)
 | 
						|
DROP TABLE t1;
 | 
						|
CREATE TABLE t1 (
 | 
						|
f_int1 INTEGER DEFAULT 0,
 | 
						|
f_int2 INTEGER DEFAULT 0,
 | 
						|
f_char1 CHAR(20),
 | 
						|
f_char2 CHAR(20),
 | 
						|
f_charbig VARCHAR(1000)
 | 
						|
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
 | 
						|
)
 | 
						|
PARTITION BY RANGE(f_int1)
 | 
						|
(PARTITION parta VALUES LESS THAN (0)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION partb VALUES LESS THAN (5)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION partc VALUES LESS THAN (10)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION partd VALUES LESS THAN (10 + 5)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION parte VALUES LESS THAN (20)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION partf VALUES LESS THAN (2147483646)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir');
 | 
						|
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
 | 
						|
# Start usability test (inc/partition_check.inc)
 | 
						|
create_command
 | 
						|
SHOW CREATE TABLE t1;
 | 
						|
Table	Create Table
 | 
						|
t1	CREATE TABLE `t1` (
 | 
						|
  `f_int1` int(11) DEFAULT 0,
 | 
						|
  `f_int2` int(11) DEFAULT 0,
 | 
						|
  `f_char1` char(20) DEFAULT NULL,
 | 
						|
  `f_char2` char(20) DEFAULT NULL,
 | 
						|
  `f_charbig` varchar(1000) DEFAULT NULL,
 | 
						|
  UNIQUE KEY `uidx1` (`f_int1`,`f_int2`),
 | 
						|
  UNIQUE KEY `uidx2` (`f_int2`,`f_int1`)
 | 
						|
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | 
						|
 PARTITION BY RANGE (`f_int1`)
 | 
						|
(PARTITION `parta` VALUES LESS THAN (0) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `partb` VALUES LESS THAN (5) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `partc` VALUES LESS THAN (10) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `partd` VALUES LESS THAN (15) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `parte` VALUES LESS THAN (20) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `partf` VALUES LESS THAN (2147483646) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM)
 | 
						|
 | 
						|
unified filelist
 | 
						|
t1#P#parta.MYD
 | 
						|
t1#P#parta.MYI
 | 
						|
t1#P#partb.MYD
 | 
						|
t1#P#partb.MYI
 | 
						|
t1#P#partc.MYD
 | 
						|
t1#P#partc.MYI
 | 
						|
t1#P#partd.MYD
 | 
						|
t1#P#partd.MYI
 | 
						|
t1#P#parte.MYD
 | 
						|
t1#P#parte.MYI
 | 
						|
t1#P#partf.MYD
 | 
						|
t1#P#partf.MYI
 | 
						|
t1.frm
 | 
						|
t1.par
 | 
						|
t1#P#parta.MYD
 | 
						|
t1#P#partb.MYD
 | 
						|
t1#P#partc.MYD
 | 
						|
t1#P#partd.MYD
 | 
						|
t1#P#parte.MYD
 | 
						|
t1#P#partf.MYD
 | 
						|
t1#P#parta.MYI
 | 
						|
t1#P#partb.MYI
 | 
						|
t1#P#partc.MYI
 | 
						|
t1#P#partd.MYI
 | 
						|
t1#P#parte.MYI
 | 
						|
t1#P#partf.MYI
 | 
						|
 | 
						|
# check prerequisites-1 success:    1
 | 
						|
# check COUNT(*) success:    1
 | 
						|
# check MIN/MAX(f_int1) success:    1
 | 
						|
# check MIN/MAX(f_int2) success:    1
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
 | 
						|
WHERE f_int1 IN (2,3);
 | 
						|
ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
 | 
						|
# check prerequisites-3 success:    1
 | 
						|
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
 | 
						|
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
 | 
						|
WHERE f_int1 IN (2,3);
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'delete me';
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
 | 
						|
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
 | 
						|
WHERE f_int1 IN (2,3);
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'delete me';
 | 
						|
# check read via f_int1 success: 1
 | 
						|
# check read via f_int2 success: 1
 | 
						|
	
 | 
						|
# check multiple-1 success: 	1
 | 
						|
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
 | 
						|
	
 | 
						|
# check multiple-2 success: 	1
 | 
						|
INSERT INTO t1 SELECT * FROM t0_template
 | 
						|
WHERE MOD(f_int1,3) = 0;
 | 
						|
	
 | 
						|
# check multiple-3 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = f_int1 + @max_row
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
 | 
						|
AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check multiple-4 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
 | 
						|
AND @max_row_div2 + @max_row_div4 + @max_row;
 | 
						|
	
 | 
						|
# check multiple-5 success: 	1
 | 
						|
SELECT COUNT(*) INTO @try_count FROM t0_template
 | 
						|
WHERE MOD(f_int1,3) = 0
 | 
						|
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
 | 
						|
SELECT COUNT(*) INTO @clash_count
 | 
						|
FROM t1 INNER JOIN t0_template USING(f_int1)
 | 
						|
WHERE MOD(f_int1,3) = 0
 | 
						|
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
 | 
						|
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = @cur_value , f_int2 = @cur_value,
 | 
						|
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
 | 
						|
f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-1 success: 	1
 | 
						|
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = @cur_value , f_int2 = @cur_value,
 | 
						|
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
 | 
						|
f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-2 success: 	1
 | 
						|
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
 | 
						|
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
 | 
						|
UPDATE t1 SET f_int1 = @cur_value2
 | 
						|
WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-3 success: 	1
 | 
						|
SET @cur_value1= -1;
 | 
						|
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
 | 
						|
UPDATE t1 SET f_int1 = @cur_value1
 | 
						|
WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-4 success: 	1
 | 
						|
SELECT MAX(f_int1) INTO @cur_value FROM t1;
 | 
						|
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-5 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-6 success: 	1
 | 
						|
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
 | 
						|
ERROR HY000: Table has no partition for value 2147483647
 | 
						|
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
 | 
						|
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
 | 
						|
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
 | 
						|
f_charbig = '#NULL#';
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = NULL , f_int2 = -@max_row,
 | 
						|
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
 | 
						|
f_charbig = '#NULL#';
 | 
						|
# check null success:    1
 | 
						|
	
 | 
						|
# check null-1 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = -@max_row
 | 
						|
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-2 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = NULL
 | 
						|
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-3 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-4 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 = 0 AND f_int2 = 0
 | 
						|
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
 | 
						|
AND f_charbig = '#NULL#';
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
   FROM t0_template source_tab
 | 
						|
WHERE MOD(f_int1,3) = 0
 | 
						|
AND f_int1 BETWEEN @max_row_div2 AND @max_row
 | 
						|
ON DUPLICATE KEY
 | 
						|
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
 | 
						|
f_int2 = 2 * @max_row + source_tab.f_int1,
 | 
						|
f_charbig = 'was updated';
 | 
						|
	
 | 
						|
# check unique-1-a success: 	1
 | 
						|
	
 | 
						|
# check unique-1-b success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===')
 | 
						|
WHERE f_charbig = 'was updated';
 | 
						|
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
 | 
						|
   FROM t0_template source_tab
 | 
						|
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
 | 
						|
	
 | 
						|
# check replace success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
 | 
						|
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
 | 
						|
UPDATE t1 SET f_int2 = f_int1,
 | 
						|
f_char1 = CAST(f_int1 AS CHAR),
 | 
						|
f_char2 = CAST(f_int1 AS CHAR),
 | 
						|
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
 | 
						|
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
 | 
						|
SET AUTOCOMMIT= 0;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
FROM t0_template source_tab
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check transactions-1 success: 	1
 | 
						|
COMMIT WORK;
 | 
						|
	
 | 
						|
# check transactions-2 success: 	1
 | 
						|
ROLLBACK WORK;
 | 
						|
	
 | 
						|
# check transactions-3 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
ROLLBACK WORK;
 | 
						|
	
 | 
						|
# check transactions-4 success: 	1
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
FROM t0_template source_tab
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check transactions-5 success: 	1
 | 
						|
ROLLBACK WORK;
 | 
						|
Warnings:
 | 
						|
Warning	1196	Some non-transactional changed tables couldn't be rolled back
 | 
						|
	
 | 
						|
# check transactions-6 success: 	1
 | 
						|
# INFO: Storage engine used for t1 seems to be not transactional.
 | 
						|
COMMIT;
 | 
						|
	
 | 
						|
# check transactions-7 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
SET @@session.sql_mode = 'traditional';
 | 
						|
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
 | 
						|
'', '', 'was inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
ERROR 22012: Division by 0
 | 
						|
COMMIT;
 | 
						|
	
 | 
						|
# check transactions-8 success: 	1
 | 
						|
# INFO: Storage engine used for t1 seems to be unable to revert
 | 
						|
#       changes made by the failing statement.
 | 
						|
SET @@session.sql_mode = '';
 | 
						|
SET AUTOCOMMIT= 1;
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
 | 
						|
	
 | 
						|
# check special-1 success: 	1
 | 
						|
UPDATE t1 SET f_charbig = '';
 | 
						|
	
 | 
						|
# check special-2 success: 	1
 | 
						|
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
 | 
						|
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
	
 | 
						|
# check trigger-1 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
	
 | 
						|
# check trigger-2 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-3 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-4 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-5 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-6 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-7 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-8 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = old.f_int1 + @max_row,
 | 
						|
new.f_int2 = old.f_int2 - @max_row,
 | 
						|
new.f_charbig = '####updated per update trigger####';
 | 
						|
END|
 | 
						|
UPDATE t1
 | 
						|
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
 | 
						|
f_charbig = '####updated per update statement itself####';
 | 
						|
	
 | 
						|
# check trigger-9 success: 	1
 | 
						|
DROP TRIGGER trg_2;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===');
 | 
						|
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = new.f_int1 + @max_row,
 | 
						|
new.f_int2 = new.f_int2 - @max_row,
 | 
						|
new.f_charbig = '####updated per update trigger####';
 | 
						|
END|
 | 
						|
UPDATE t1
 | 
						|
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
 | 
						|
f_charbig = '####updated per update statement itself####';
 | 
						|
	
 | 
						|
# check trigger-10 success: 	1
 | 
						|
DROP TRIGGER trg_2;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===');
 | 
						|
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = @my_max1 + @counter,
 | 
						|
new.f_int2 = @my_min2 - @counter,
 | 
						|
new.f_charbig = '####updated per insert trigger####';
 | 
						|
SET @counter = @counter + 1;
 | 
						|
END|
 | 
						|
SET @counter = 1;
 | 
						|
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
 | 
						|
ORDER BY f_int1;
 | 
						|
DROP TRIGGER trg_3;
 | 
						|
	
 | 
						|
# check trigger-11 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_charbig = '####updated per insert trigger####';
 | 
						|
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = @my_max1 + @counter,
 | 
						|
new.f_int2 = @my_min2 - @counter,
 | 
						|
new.f_charbig = '####updated per insert trigger####';
 | 
						|
SET @counter = @counter + 1;
 | 
						|
END|
 | 
						|
SET @counter = 1;
 | 
						|
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
 | 
						|
INSERT INTO t1 (f_char1, f_char2, f_charbig)
 | 
						|
SELECT CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
 | 
						|
ORDER BY f_int1;
 | 
						|
DROP TRIGGER trg_3;
 | 
						|
	
 | 
						|
# check trigger-12 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_charbig = '####updated per insert trigger####';
 | 
						|
ANALYZE  TABLE t1;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	analyze	status	Engine-independent statistics collected
 | 
						|
test.t1	analyze	status	OK
 | 
						|
CHECK    TABLE t1 EXTENDED;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	check	status	OK
 | 
						|
CHECKSUM TABLE t1 EXTENDED;
 | 
						|
Table	Checksum
 | 
						|
test.t1	<some_value>
 | 
						|
OPTIMIZE TABLE t1;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	optimize	status	OK
 | 
						|
# check layout success:    1
 | 
						|
REPAIR   TABLE t1 EXTENDED;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	repair	status	OK
 | 
						|
# check layout success:    1
 | 
						|
TRUNCATE t1;
 | 
						|
	
 | 
						|
# check TRUNCATE success: 	1
 | 
						|
# check layout success:    1
 | 
						|
# End usability test (inc/partition_check.inc)
 | 
						|
DROP TABLE t1;
 | 
						|
CREATE TABLE t1 (
 | 
						|
f_int1 INTEGER DEFAULT 0,
 | 
						|
f_int2 INTEGER DEFAULT 0,
 | 
						|
f_char1 CHAR(20),
 | 
						|
f_char2 CHAR(20),
 | 
						|
f_charbig VARCHAR(1000)
 | 
						|
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
 | 
						|
)
 | 
						|
PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
 | 
						|
(PARTITION parta VALUES LESS THAN (0)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION partb VALUES LESS THAN (5)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION partc VALUES LESS THAN (10)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION partd VALUES LESS THAN (2147483646)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir');
 | 
						|
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
 | 
						|
# Start usability test (inc/partition_check.inc)
 | 
						|
create_command
 | 
						|
SHOW CREATE TABLE t1;
 | 
						|
Table	Create Table
 | 
						|
t1	CREATE TABLE `t1` (
 | 
						|
  `f_int1` int(11) DEFAULT 0,
 | 
						|
  `f_int2` int(11) DEFAULT 0,
 | 
						|
  `f_char1` char(20) DEFAULT NULL,
 | 
						|
  `f_char2` char(20) DEFAULT NULL,
 | 
						|
  `f_charbig` varchar(1000) DEFAULT NULL,
 | 
						|
  UNIQUE KEY `uidx1` (`f_int1`,`f_int2`),
 | 
						|
  UNIQUE KEY `uidx2` (`f_int2`,`f_int1`)
 | 
						|
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | 
						|
 PARTITION BY RANGE (`f_int1` DIV 2)
 | 
						|
SUBPARTITION BY HASH (`f_int1`)
 | 
						|
SUBPARTITIONS 2
 | 
						|
(PARTITION `parta` VALUES LESS THAN (0) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `partb` VALUES LESS THAN (5) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `partc` VALUES LESS THAN (10) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `partd` VALUES LESS THAN (2147483646) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM)
 | 
						|
 | 
						|
unified filelist
 | 
						|
t1#P#parta#SP#partasp0.MYD
 | 
						|
t1#P#parta#SP#partasp0.MYI
 | 
						|
t1#P#parta#SP#partasp1.MYD
 | 
						|
t1#P#parta#SP#partasp1.MYI
 | 
						|
t1#P#partb#SP#partbsp0.MYD
 | 
						|
t1#P#partb#SP#partbsp0.MYI
 | 
						|
t1#P#partb#SP#partbsp1.MYD
 | 
						|
t1#P#partb#SP#partbsp1.MYI
 | 
						|
t1#P#partc#SP#partcsp0.MYD
 | 
						|
t1#P#partc#SP#partcsp0.MYI
 | 
						|
t1#P#partc#SP#partcsp1.MYD
 | 
						|
t1#P#partc#SP#partcsp1.MYI
 | 
						|
t1#P#partd#SP#partdsp0.MYD
 | 
						|
t1#P#partd#SP#partdsp0.MYI
 | 
						|
t1#P#partd#SP#partdsp1.MYD
 | 
						|
t1#P#partd#SP#partdsp1.MYI
 | 
						|
t1.frm
 | 
						|
t1.par
 | 
						|
t1#P#parta#SP#partasp0.MYD
 | 
						|
t1#P#parta#SP#partasp1.MYD
 | 
						|
t1#P#partb#SP#partbsp0.MYD
 | 
						|
t1#P#partb#SP#partbsp1.MYD
 | 
						|
t1#P#partc#SP#partcsp0.MYD
 | 
						|
t1#P#partc#SP#partcsp1.MYD
 | 
						|
t1#P#partd#SP#partdsp0.MYD
 | 
						|
t1#P#partd#SP#partdsp1.MYD
 | 
						|
t1#P#parta#SP#partasp0.MYI
 | 
						|
t1#P#parta#SP#partasp1.MYI
 | 
						|
t1#P#partb#SP#partbsp0.MYI
 | 
						|
t1#P#partb#SP#partbsp1.MYI
 | 
						|
t1#P#partc#SP#partcsp0.MYI
 | 
						|
t1#P#partc#SP#partcsp1.MYI
 | 
						|
t1#P#partd#SP#partdsp0.MYI
 | 
						|
t1#P#partd#SP#partdsp1.MYI
 | 
						|
 | 
						|
# check prerequisites-1 success:    1
 | 
						|
# check COUNT(*) success:    1
 | 
						|
# check MIN/MAX(f_int1) success:    1
 | 
						|
# check MIN/MAX(f_int2) success:    1
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
 | 
						|
WHERE f_int1 IN (2,3);
 | 
						|
ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
 | 
						|
# check prerequisites-3 success:    1
 | 
						|
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
 | 
						|
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
 | 
						|
WHERE f_int1 IN (2,3);
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'delete me';
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
 | 
						|
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
 | 
						|
WHERE f_int1 IN (2,3);
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'delete me';
 | 
						|
# check read via f_int1 success: 1
 | 
						|
# check read via f_int2 success: 1
 | 
						|
	
 | 
						|
# check multiple-1 success: 	1
 | 
						|
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
 | 
						|
	
 | 
						|
# check multiple-2 success: 	1
 | 
						|
INSERT INTO t1 SELECT * FROM t0_template
 | 
						|
WHERE MOD(f_int1,3) = 0;
 | 
						|
	
 | 
						|
# check multiple-3 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = f_int1 + @max_row
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
 | 
						|
AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check multiple-4 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
 | 
						|
AND @max_row_div2 + @max_row_div4 + @max_row;
 | 
						|
	
 | 
						|
# check multiple-5 success: 	1
 | 
						|
SELECT COUNT(*) INTO @try_count FROM t0_template
 | 
						|
WHERE MOD(f_int1,3) = 0
 | 
						|
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
 | 
						|
SELECT COUNT(*) INTO @clash_count
 | 
						|
FROM t1 INNER JOIN t0_template USING(f_int1)
 | 
						|
WHERE MOD(f_int1,3) = 0
 | 
						|
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
 | 
						|
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = @cur_value , f_int2 = @cur_value,
 | 
						|
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
 | 
						|
f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-1 success: 	1
 | 
						|
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = @cur_value , f_int2 = @cur_value,
 | 
						|
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
 | 
						|
f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-2 success: 	1
 | 
						|
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
 | 
						|
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
 | 
						|
UPDATE t1 SET f_int1 = @cur_value2
 | 
						|
WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-3 success: 	1
 | 
						|
SET @cur_value1= -1;
 | 
						|
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
 | 
						|
UPDATE t1 SET f_int1 = @cur_value1
 | 
						|
WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-4 success: 	1
 | 
						|
SELECT MAX(f_int1) INTO @cur_value FROM t1;
 | 
						|
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-5 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-6 success: 	1
 | 
						|
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
 | 
						|
	
 | 
						|
# check single-7 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
 | 
						|
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
 | 
						|
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
 | 
						|
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
 | 
						|
f_charbig = '#NULL#';
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = NULL , f_int2 = -@max_row,
 | 
						|
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
 | 
						|
f_charbig = '#NULL#';
 | 
						|
# check null success:    1
 | 
						|
	
 | 
						|
# check null-1 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = -@max_row
 | 
						|
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-2 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = NULL
 | 
						|
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-3 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-4 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 = 0 AND f_int2 = 0
 | 
						|
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
 | 
						|
AND f_charbig = '#NULL#';
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
   FROM t0_template source_tab
 | 
						|
WHERE MOD(f_int1,3) = 0
 | 
						|
AND f_int1 BETWEEN @max_row_div2 AND @max_row
 | 
						|
ON DUPLICATE KEY
 | 
						|
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
 | 
						|
f_int2 = 2 * @max_row + source_tab.f_int1,
 | 
						|
f_charbig = 'was updated';
 | 
						|
	
 | 
						|
# check unique-1-a success: 	1
 | 
						|
	
 | 
						|
# check unique-1-b success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===')
 | 
						|
WHERE f_charbig = 'was updated';
 | 
						|
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
 | 
						|
   FROM t0_template source_tab
 | 
						|
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
 | 
						|
	
 | 
						|
# check replace success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
 | 
						|
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
 | 
						|
UPDATE t1 SET f_int2 = f_int1,
 | 
						|
f_char1 = CAST(f_int1 AS CHAR),
 | 
						|
f_char2 = CAST(f_int1 AS CHAR),
 | 
						|
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
 | 
						|
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
 | 
						|
SET AUTOCOMMIT= 0;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
FROM t0_template source_tab
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check transactions-1 success: 	1
 | 
						|
COMMIT WORK;
 | 
						|
	
 | 
						|
# check transactions-2 success: 	1
 | 
						|
ROLLBACK WORK;
 | 
						|
	
 | 
						|
# check transactions-3 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
ROLLBACK WORK;
 | 
						|
	
 | 
						|
# check transactions-4 success: 	1
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
FROM t0_template source_tab
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check transactions-5 success: 	1
 | 
						|
ROLLBACK WORK;
 | 
						|
Warnings:
 | 
						|
Warning	1196	Some non-transactional changed tables couldn't be rolled back
 | 
						|
	
 | 
						|
# check transactions-6 success: 	1
 | 
						|
# INFO: Storage engine used for t1 seems to be not transactional.
 | 
						|
COMMIT;
 | 
						|
	
 | 
						|
# check transactions-7 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
SET @@session.sql_mode = 'traditional';
 | 
						|
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
 | 
						|
'', '', 'was inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
ERROR 22012: Division by 0
 | 
						|
COMMIT;
 | 
						|
	
 | 
						|
# check transactions-8 success: 	1
 | 
						|
# INFO: Storage engine used for t1 seems to be unable to revert
 | 
						|
#       changes made by the failing statement.
 | 
						|
SET @@session.sql_mode = '';
 | 
						|
SET AUTOCOMMIT= 1;
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
 | 
						|
	
 | 
						|
# check special-1 success: 	1
 | 
						|
UPDATE t1 SET f_charbig = '';
 | 
						|
	
 | 
						|
# check special-2 success: 	1
 | 
						|
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
 | 
						|
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
	
 | 
						|
# check trigger-1 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
	
 | 
						|
# check trigger-2 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-3 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-4 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-5 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-6 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-7 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-8 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = old.f_int1 + @max_row,
 | 
						|
new.f_int2 = old.f_int2 - @max_row,
 | 
						|
new.f_charbig = '####updated per update trigger####';
 | 
						|
END|
 | 
						|
UPDATE t1
 | 
						|
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
 | 
						|
f_charbig = '####updated per update statement itself####';
 | 
						|
	
 | 
						|
# check trigger-9 success: 	1
 | 
						|
DROP TRIGGER trg_2;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===');
 | 
						|
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = new.f_int1 + @max_row,
 | 
						|
new.f_int2 = new.f_int2 - @max_row,
 | 
						|
new.f_charbig = '####updated per update trigger####';
 | 
						|
END|
 | 
						|
UPDATE t1
 | 
						|
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
 | 
						|
f_charbig = '####updated per update statement itself####';
 | 
						|
	
 | 
						|
# check trigger-10 success: 	1
 | 
						|
DROP TRIGGER trg_2;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===');
 | 
						|
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = @my_max1 + @counter,
 | 
						|
new.f_int2 = @my_min2 - @counter,
 | 
						|
new.f_charbig = '####updated per insert trigger####';
 | 
						|
SET @counter = @counter + 1;
 | 
						|
END|
 | 
						|
SET @counter = 1;
 | 
						|
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
 | 
						|
ORDER BY f_int1;
 | 
						|
DROP TRIGGER trg_3;
 | 
						|
	
 | 
						|
# check trigger-11 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_charbig = '####updated per insert trigger####';
 | 
						|
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = @my_max1 + @counter,
 | 
						|
new.f_int2 = @my_min2 - @counter,
 | 
						|
new.f_charbig = '####updated per insert trigger####';
 | 
						|
SET @counter = @counter + 1;
 | 
						|
END|
 | 
						|
SET @counter = 1;
 | 
						|
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
 | 
						|
INSERT INTO t1 (f_char1, f_char2, f_charbig)
 | 
						|
SELECT CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
 | 
						|
ORDER BY f_int1;
 | 
						|
DROP TRIGGER trg_3;
 | 
						|
	
 | 
						|
# check trigger-12 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_charbig = '####updated per insert trigger####';
 | 
						|
ANALYZE  TABLE t1;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	analyze	status	Engine-independent statistics collected
 | 
						|
test.t1	analyze	status	OK
 | 
						|
CHECK    TABLE t1 EXTENDED;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	check	status	OK
 | 
						|
CHECKSUM TABLE t1 EXTENDED;
 | 
						|
Table	Checksum
 | 
						|
test.t1	<some_value>
 | 
						|
OPTIMIZE TABLE t1;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	optimize	status	OK
 | 
						|
# check layout success:    1
 | 
						|
REPAIR   TABLE t1 EXTENDED;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	repair	status	OK
 | 
						|
# check layout success:    1
 | 
						|
TRUNCATE t1;
 | 
						|
	
 | 
						|
# check TRUNCATE success: 	1
 | 
						|
# check layout success:    1
 | 
						|
# End usability test (inc/partition_check.inc)
 | 
						|
DROP TABLE t1;
 | 
						|
CREATE TABLE t1 (
 | 
						|
f_int1 INTEGER DEFAULT 0,
 | 
						|
f_int2 INTEGER DEFAULT 0,
 | 
						|
f_char1 CHAR(20),
 | 
						|
f_char2 CHAR(20),
 | 
						|
f_charbig VARCHAR(1000)
 | 
						|
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
 | 
						|
)
 | 
						|
PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
 | 
						|
(PARTITION part1 VALUES LESS THAN (0)
 | 
						|
(SUBPARTITION subpart11 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
SUBPARTITION subpart12 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'),
 | 
						|
PARTITION part2 VALUES LESS THAN (5)
 | 
						|
(SUBPARTITION subpart21 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
SUBPARTITION subpart22 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'),
 | 
						|
PARTITION part3 VALUES LESS THAN (10)
 | 
						|
(SUBPARTITION subpart31 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
SUBPARTITION subpart32 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'),
 | 
						|
PARTITION part4 VALUES LESS THAN (2147483646)
 | 
						|
(SUBPARTITION subpart41 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
SUBPARTITION subpart42 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'));
 | 
						|
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
 | 
						|
# Start usability test (inc/partition_check.inc)
 | 
						|
create_command
 | 
						|
SHOW CREATE TABLE t1;
 | 
						|
Table	Create Table
 | 
						|
t1	CREATE TABLE `t1` (
 | 
						|
  `f_int1` int(11) DEFAULT 0,
 | 
						|
  `f_int2` int(11) DEFAULT 0,
 | 
						|
  `f_char1` char(20) DEFAULT NULL,
 | 
						|
  `f_char2` char(20) DEFAULT NULL,
 | 
						|
  `f_charbig` varchar(1000) DEFAULT NULL,
 | 
						|
  UNIQUE KEY `uidx1` (`f_int1`,`f_int2`),
 | 
						|
  UNIQUE KEY `uidx2` (`f_int2`,`f_int1`)
 | 
						|
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | 
						|
 PARTITION BY RANGE (`f_int1`)
 | 
						|
SUBPARTITION BY KEY (`f_int1`)
 | 
						|
(PARTITION `part1` VALUES LESS THAN (0)
 | 
						|
 (SUBPARTITION `subpart11` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
  SUBPARTITION `subpart12` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM),
 | 
						|
 PARTITION `part2` VALUES LESS THAN (5)
 | 
						|
 (SUBPARTITION `subpart21` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
  SUBPARTITION `subpart22` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM),
 | 
						|
 PARTITION `part3` VALUES LESS THAN (10)
 | 
						|
 (SUBPARTITION `subpart31` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
  SUBPARTITION `subpart32` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM),
 | 
						|
 PARTITION `part4` VALUES LESS THAN (2147483646)
 | 
						|
 (SUBPARTITION `subpart41` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
  SUBPARTITION `subpart42` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM))
 | 
						|
 | 
						|
unified filelist
 | 
						|
t1#P#part1#SP#subpart11.MYD
 | 
						|
t1#P#part1#SP#subpart11.MYI
 | 
						|
t1#P#part1#SP#subpart12.MYD
 | 
						|
t1#P#part1#SP#subpart12.MYI
 | 
						|
t1#P#part2#SP#subpart21.MYD
 | 
						|
t1#P#part2#SP#subpart21.MYI
 | 
						|
t1#P#part2#SP#subpart22.MYD
 | 
						|
t1#P#part2#SP#subpart22.MYI
 | 
						|
t1#P#part3#SP#subpart31.MYD
 | 
						|
t1#P#part3#SP#subpart31.MYI
 | 
						|
t1#P#part3#SP#subpart32.MYD
 | 
						|
t1#P#part3#SP#subpart32.MYI
 | 
						|
t1#P#part4#SP#subpart41.MYD
 | 
						|
t1#P#part4#SP#subpart41.MYI
 | 
						|
t1#P#part4#SP#subpart42.MYD
 | 
						|
t1#P#part4#SP#subpart42.MYI
 | 
						|
t1.frm
 | 
						|
t1.par
 | 
						|
t1#P#part1#SP#subpart11.MYD
 | 
						|
t1#P#part1#SP#subpart12.MYD
 | 
						|
t1#P#part2#SP#subpart21.MYD
 | 
						|
t1#P#part2#SP#subpart22.MYD
 | 
						|
t1#P#part3#SP#subpart31.MYD
 | 
						|
t1#P#part3#SP#subpart32.MYD
 | 
						|
t1#P#part4#SP#subpart41.MYD
 | 
						|
t1#P#part4#SP#subpart42.MYD
 | 
						|
t1#P#part1#SP#subpart11.MYI
 | 
						|
t1#P#part1#SP#subpart12.MYI
 | 
						|
t1#P#part2#SP#subpart21.MYI
 | 
						|
t1#P#part2#SP#subpart22.MYI
 | 
						|
t1#P#part3#SP#subpart31.MYI
 | 
						|
t1#P#part3#SP#subpart32.MYI
 | 
						|
t1#P#part4#SP#subpart41.MYI
 | 
						|
t1#P#part4#SP#subpart42.MYI
 | 
						|
 | 
						|
# check prerequisites-1 success:    1
 | 
						|
# check COUNT(*) success:    1
 | 
						|
# check MIN/MAX(f_int1) success:    1
 | 
						|
# check MIN/MAX(f_int2) success:    1
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
 | 
						|
WHERE f_int1 IN (2,3);
 | 
						|
ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
 | 
						|
# check prerequisites-3 success:    1
 | 
						|
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
 | 
						|
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
 | 
						|
WHERE f_int1 IN (2,3);
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'delete me';
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
 | 
						|
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
 | 
						|
WHERE f_int1 IN (2,3);
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'delete me';
 | 
						|
# check read via f_int1 success: 1
 | 
						|
# check read via f_int2 success: 1
 | 
						|
	
 | 
						|
# check multiple-1 success: 	1
 | 
						|
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
 | 
						|
	
 | 
						|
# check multiple-2 success: 	1
 | 
						|
INSERT INTO t1 SELECT * FROM t0_template
 | 
						|
WHERE MOD(f_int1,3) = 0;
 | 
						|
	
 | 
						|
# check multiple-3 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = f_int1 + @max_row
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
 | 
						|
AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check multiple-4 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
 | 
						|
AND @max_row_div2 + @max_row_div4 + @max_row;
 | 
						|
	
 | 
						|
# check multiple-5 success: 	1
 | 
						|
SELECT COUNT(*) INTO @try_count FROM t0_template
 | 
						|
WHERE MOD(f_int1,3) = 0
 | 
						|
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
 | 
						|
SELECT COUNT(*) INTO @clash_count
 | 
						|
FROM t1 INNER JOIN t0_template USING(f_int1)
 | 
						|
WHERE MOD(f_int1,3) = 0
 | 
						|
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
 | 
						|
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = @cur_value , f_int2 = @cur_value,
 | 
						|
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
 | 
						|
f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-1 success: 	1
 | 
						|
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = @cur_value , f_int2 = @cur_value,
 | 
						|
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
 | 
						|
f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-2 success: 	1
 | 
						|
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
 | 
						|
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
 | 
						|
UPDATE t1 SET f_int1 = @cur_value2
 | 
						|
WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-3 success: 	1
 | 
						|
SET @cur_value1= -1;
 | 
						|
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
 | 
						|
UPDATE t1 SET f_int1 = @cur_value1
 | 
						|
WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-4 success: 	1
 | 
						|
SELECT MAX(f_int1) INTO @cur_value FROM t1;
 | 
						|
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-5 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-6 success: 	1
 | 
						|
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
 | 
						|
ERROR HY000: Table has no partition for value 2147483647
 | 
						|
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
 | 
						|
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
 | 
						|
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
 | 
						|
f_charbig = '#NULL#';
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = NULL , f_int2 = -@max_row,
 | 
						|
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
 | 
						|
f_charbig = '#NULL#';
 | 
						|
# check null success:    1
 | 
						|
	
 | 
						|
# check null-1 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = -@max_row
 | 
						|
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-2 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = NULL
 | 
						|
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-3 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-4 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 = 0 AND f_int2 = 0
 | 
						|
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
 | 
						|
AND f_charbig = '#NULL#';
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
   FROM t0_template source_tab
 | 
						|
WHERE MOD(f_int1,3) = 0
 | 
						|
AND f_int1 BETWEEN @max_row_div2 AND @max_row
 | 
						|
ON DUPLICATE KEY
 | 
						|
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
 | 
						|
f_int2 = 2 * @max_row + source_tab.f_int1,
 | 
						|
f_charbig = 'was updated';
 | 
						|
	
 | 
						|
# check unique-1-a success: 	1
 | 
						|
	
 | 
						|
# check unique-1-b success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===')
 | 
						|
WHERE f_charbig = 'was updated';
 | 
						|
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
 | 
						|
   FROM t0_template source_tab
 | 
						|
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
 | 
						|
	
 | 
						|
# check replace success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
 | 
						|
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
 | 
						|
UPDATE t1 SET f_int2 = f_int1,
 | 
						|
f_char1 = CAST(f_int1 AS CHAR),
 | 
						|
f_char2 = CAST(f_int1 AS CHAR),
 | 
						|
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
 | 
						|
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
 | 
						|
SET AUTOCOMMIT= 0;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
FROM t0_template source_tab
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check transactions-1 success: 	1
 | 
						|
COMMIT WORK;
 | 
						|
	
 | 
						|
# check transactions-2 success: 	1
 | 
						|
ROLLBACK WORK;
 | 
						|
	
 | 
						|
# check transactions-3 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
ROLLBACK WORK;
 | 
						|
	
 | 
						|
# check transactions-4 success: 	1
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
FROM t0_template source_tab
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check transactions-5 success: 	1
 | 
						|
ROLLBACK WORK;
 | 
						|
Warnings:
 | 
						|
Warning	1196	Some non-transactional changed tables couldn't be rolled back
 | 
						|
	
 | 
						|
# check transactions-6 success: 	1
 | 
						|
# INFO: Storage engine used for t1 seems to be not transactional.
 | 
						|
COMMIT;
 | 
						|
	
 | 
						|
# check transactions-7 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
SET @@session.sql_mode = 'traditional';
 | 
						|
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
 | 
						|
'', '', 'was inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
ERROR 22012: Division by 0
 | 
						|
COMMIT;
 | 
						|
	
 | 
						|
# check transactions-8 success: 	1
 | 
						|
# INFO: Storage engine used for t1 seems to be unable to revert
 | 
						|
#       changes made by the failing statement.
 | 
						|
SET @@session.sql_mode = '';
 | 
						|
SET AUTOCOMMIT= 1;
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
 | 
						|
	
 | 
						|
# check special-1 success: 	1
 | 
						|
UPDATE t1 SET f_charbig = '';
 | 
						|
	
 | 
						|
# check special-2 success: 	1
 | 
						|
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
 | 
						|
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
	
 | 
						|
# check trigger-1 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
	
 | 
						|
# check trigger-2 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-3 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-4 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-5 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-6 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-7 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-8 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = old.f_int1 + @max_row,
 | 
						|
new.f_int2 = old.f_int2 - @max_row,
 | 
						|
new.f_charbig = '####updated per update trigger####';
 | 
						|
END|
 | 
						|
UPDATE t1
 | 
						|
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
 | 
						|
f_charbig = '####updated per update statement itself####';
 | 
						|
	
 | 
						|
# check trigger-9 success: 	1
 | 
						|
DROP TRIGGER trg_2;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===');
 | 
						|
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = new.f_int1 + @max_row,
 | 
						|
new.f_int2 = new.f_int2 - @max_row,
 | 
						|
new.f_charbig = '####updated per update trigger####';
 | 
						|
END|
 | 
						|
UPDATE t1
 | 
						|
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
 | 
						|
f_charbig = '####updated per update statement itself####';
 | 
						|
	
 | 
						|
# check trigger-10 success: 	1
 | 
						|
DROP TRIGGER trg_2;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===');
 | 
						|
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = @my_max1 + @counter,
 | 
						|
new.f_int2 = @my_min2 - @counter,
 | 
						|
new.f_charbig = '####updated per insert trigger####';
 | 
						|
SET @counter = @counter + 1;
 | 
						|
END|
 | 
						|
SET @counter = 1;
 | 
						|
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
 | 
						|
ORDER BY f_int1;
 | 
						|
DROP TRIGGER trg_3;
 | 
						|
	
 | 
						|
# check trigger-11 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_charbig = '####updated per insert trigger####';
 | 
						|
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = @my_max1 + @counter,
 | 
						|
new.f_int2 = @my_min2 - @counter,
 | 
						|
new.f_charbig = '####updated per insert trigger####';
 | 
						|
SET @counter = @counter + 1;
 | 
						|
END|
 | 
						|
SET @counter = 1;
 | 
						|
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
 | 
						|
INSERT INTO t1 (f_char1, f_char2, f_charbig)
 | 
						|
SELECT CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
 | 
						|
ORDER BY f_int1;
 | 
						|
DROP TRIGGER trg_3;
 | 
						|
	
 | 
						|
# check trigger-12 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_charbig = '####updated per insert trigger####';
 | 
						|
ANALYZE  TABLE t1;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	analyze	status	Engine-independent statistics collected
 | 
						|
test.t1	analyze	status	OK
 | 
						|
CHECK    TABLE t1 EXTENDED;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	check	status	OK
 | 
						|
CHECKSUM TABLE t1 EXTENDED;
 | 
						|
Table	Checksum
 | 
						|
test.t1	<some_value>
 | 
						|
OPTIMIZE TABLE t1;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	optimize	status	OK
 | 
						|
# check layout success:    1
 | 
						|
REPAIR   TABLE t1 EXTENDED;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	repair	status	OK
 | 
						|
# check layout success:    1
 | 
						|
TRUNCATE t1;
 | 
						|
	
 | 
						|
# check TRUNCATE success: 	1
 | 
						|
# check layout success:    1
 | 
						|
# End usability test (inc/partition_check.inc)
 | 
						|
DROP TABLE t1;
 | 
						|
CREATE TABLE t1 (
 | 
						|
f_int1 INTEGER DEFAULT 0,
 | 
						|
f_int2 INTEGER DEFAULT 0,
 | 
						|
f_char1 CHAR(20),
 | 
						|
f_char2 CHAR(20),
 | 
						|
f_charbig VARCHAR(1000)
 | 
						|
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
 | 
						|
)
 | 
						|
PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
 | 
						|
(PARTITION part1 VALUES IN (0)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'
 | 
						|
(SUBPARTITION sp11 
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
SUBPARTITION sp12
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'),
 | 
						|
PARTITION part2 VALUES IN (1)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'
 | 
						|
(SUBPARTITION sp21 
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
SUBPARTITION sp22
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
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)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'
 | 
						|
(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'));
 | 
						|
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
 | 
						|
# Start usability test (inc/partition_check.inc)
 | 
						|
create_command
 | 
						|
SHOW CREATE TABLE t1;
 | 
						|
Table	Create Table
 | 
						|
t1	CREATE TABLE `t1` (
 | 
						|
  `f_int1` int(11) DEFAULT 0,
 | 
						|
  `f_int2` int(11) DEFAULT 0,
 | 
						|
  `f_char1` char(20) DEFAULT NULL,
 | 
						|
  `f_char2` char(20) DEFAULT NULL,
 | 
						|
  `f_charbig` varchar(1000) DEFAULT NULL,
 | 
						|
  UNIQUE KEY `uidx1` (`f_int1`,`f_int2`),
 | 
						|
  UNIQUE KEY `uidx2` (`f_int2`,`f_int1`)
 | 
						|
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | 
						|
 PARTITION BY LIST (abs(`f_int1` MOD 3))
 | 
						|
SUBPARTITION BY HASH (`f_int1` + 1)
 | 
						|
(PARTITION `part1` VALUES IN (0)
 | 
						|
 (SUBPARTITION `sp11` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
  SUBPARTITION `sp12` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM),
 | 
						|
 PARTITION `part2` VALUES IN (1)
 | 
						|
 (SUBPARTITION `sp21` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
  SUBPARTITION `sp22` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM),
 | 
						|
 PARTITION `part3` VALUES IN (2)
 | 
						|
 (SUBPARTITION `sp31` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
  SUBPARTITION `sp32` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM),
 | 
						|
 PARTITION `part4` VALUES IN (NULL)
 | 
						|
 (SUBPARTITION `sp41` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
  SUBPARTITION `sp42` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM))
 | 
						|
 | 
						|
unified filelist
 | 
						|
t1#P#part1#SP#sp11.MYD
 | 
						|
t1#P#part1#SP#sp11.MYI
 | 
						|
t1#P#part1#SP#sp12.MYD
 | 
						|
t1#P#part1#SP#sp12.MYI
 | 
						|
t1#P#part2#SP#sp21.MYD
 | 
						|
t1#P#part2#SP#sp21.MYI
 | 
						|
t1#P#part2#SP#sp22.MYD
 | 
						|
t1#P#part2#SP#sp22.MYI
 | 
						|
t1#P#part3#SP#sp31.MYD
 | 
						|
t1#P#part3#SP#sp31.MYI
 | 
						|
t1#P#part3#SP#sp32.MYD
 | 
						|
t1#P#part3#SP#sp32.MYI
 | 
						|
t1#P#part4#SP#sp41.MYD
 | 
						|
t1#P#part4#SP#sp41.MYI
 | 
						|
t1#P#part4#SP#sp42.MYD
 | 
						|
t1#P#part4#SP#sp42.MYI
 | 
						|
t1.frm
 | 
						|
t1.par
 | 
						|
t1#P#part1#SP#sp11.MYD
 | 
						|
t1#P#part1#SP#sp12.MYD
 | 
						|
t1#P#part2#SP#sp21.MYD
 | 
						|
t1#P#part2#SP#sp22.MYD
 | 
						|
t1#P#part3#SP#sp31.MYD
 | 
						|
t1#P#part3#SP#sp32.MYD
 | 
						|
t1#P#part4#SP#sp41.MYD
 | 
						|
t1#P#part4#SP#sp42.MYD
 | 
						|
t1#P#part1#SP#sp11.MYI
 | 
						|
t1#P#part1#SP#sp12.MYI
 | 
						|
t1#P#part2#SP#sp21.MYI
 | 
						|
t1#P#part2#SP#sp22.MYI
 | 
						|
t1#P#part3#SP#sp31.MYI
 | 
						|
t1#P#part3#SP#sp32.MYI
 | 
						|
t1#P#part4#SP#sp41.MYI
 | 
						|
t1#P#part4#SP#sp42.MYI
 | 
						|
 | 
						|
# check prerequisites-1 success:    1
 | 
						|
# check COUNT(*) success:    1
 | 
						|
# check MIN/MAX(f_int1) success:    1
 | 
						|
# check MIN/MAX(f_int2) success:    1
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
 | 
						|
WHERE f_int1 IN (2,3);
 | 
						|
ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
 | 
						|
# check prerequisites-3 success:    1
 | 
						|
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
 | 
						|
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
 | 
						|
WHERE f_int1 IN (2,3);
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'delete me';
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
 | 
						|
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
 | 
						|
WHERE f_int1 IN (2,3);
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'delete me';
 | 
						|
# check read via f_int1 success: 1
 | 
						|
# check read via f_int2 success: 1
 | 
						|
	
 | 
						|
# check multiple-1 success: 	1
 | 
						|
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
 | 
						|
	
 | 
						|
# check multiple-2 success: 	1
 | 
						|
INSERT INTO t1 SELECT * FROM t0_template
 | 
						|
WHERE MOD(f_int1,3) = 0;
 | 
						|
	
 | 
						|
# check multiple-3 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = f_int1 + @max_row
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
 | 
						|
AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check multiple-4 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
 | 
						|
AND @max_row_div2 + @max_row_div4 + @max_row;
 | 
						|
	
 | 
						|
# check multiple-5 success: 	1
 | 
						|
SELECT COUNT(*) INTO @try_count FROM t0_template
 | 
						|
WHERE MOD(f_int1,3) = 0
 | 
						|
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
 | 
						|
SELECT COUNT(*) INTO @clash_count
 | 
						|
FROM t1 INNER JOIN t0_template USING(f_int1)
 | 
						|
WHERE MOD(f_int1,3) = 0
 | 
						|
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
 | 
						|
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = @cur_value , f_int2 = @cur_value,
 | 
						|
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
 | 
						|
f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-1 success: 	1
 | 
						|
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = @cur_value , f_int2 = @cur_value,
 | 
						|
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
 | 
						|
f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-2 success: 	1
 | 
						|
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
 | 
						|
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
 | 
						|
UPDATE t1 SET f_int1 = @cur_value2
 | 
						|
WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-3 success: 	1
 | 
						|
SET @cur_value1= -1;
 | 
						|
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
 | 
						|
UPDATE t1 SET f_int1 = @cur_value1
 | 
						|
WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-4 success: 	1
 | 
						|
SELECT MAX(f_int1) INTO @cur_value FROM t1;
 | 
						|
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-5 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-6 success: 	1
 | 
						|
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
 | 
						|
	
 | 
						|
# check single-7 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
 | 
						|
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
 | 
						|
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
 | 
						|
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
 | 
						|
f_charbig = '#NULL#';
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = NULL , f_int2 = -@max_row,
 | 
						|
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
 | 
						|
f_charbig = '#NULL#';
 | 
						|
# check null success:    1
 | 
						|
	
 | 
						|
# check null-1 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = -@max_row
 | 
						|
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-2 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = NULL
 | 
						|
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-3 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-4 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 = 0 AND f_int2 = 0
 | 
						|
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
 | 
						|
AND f_charbig = '#NULL#';
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
   FROM t0_template source_tab
 | 
						|
WHERE MOD(f_int1,3) = 0
 | 
						|
AND f_int1 BETWEEN @max_row_div2 AND @max_row
 | 
						|
ON DUPLICATE KEY
 | 
						|
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
 | 
						|
f_int2 = 2 * @max_row + source_tab.f_int1,
 | 
						|
f_charbig = 'was updated';
 | 
						|
	
 | 
						|
# check unique-1-a success: 	1
 | 
						|
	
 | 
						|
# check unique-1-b success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===')
 | 
						|
WHERE f_charbig = 'was updated';
 | 
						|
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
 | 
						|
   FROM t0_template source_tab
 | 
						|
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
 | 
						|
	
 | 
						|
# check replace success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
 | 
						|
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
 | 
						|
UPDATE t1 SET f_int2 = f_int1,
 | 
						|
f_char1 = CAST(f_int1 AS CHAR),
 | 
						|
f_char2 = CAST(f_int1 AS CHAR),
 | 
						|
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
 | 
						|
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
 | 
						|
SET AUTOCOMMIT= 0;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
FROM t0_template source_tab
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check transactions-1 success: 	1
 | 
						|
COMMIT WORK;
 | 
						|
	
 | 
						|
# check transactions-2 success: 	1
 | 
						|
ROLLBACK WORK;
 | 
						|
	
 | 
						|
# check transactions-3 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
ROLLBACK WORK;
 | 
						|
	
 | 
						|
# check transactions-4 success: 	1
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
FROM t0_template source_tab
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check transactions-5 success: 	1
 | 
						|
ROLLBACK WORK;
 | 
						|
Warnings:
 | 
						|
Warning	1196	Some non-transactional changed tables couldn't be rolled back
 | 
						|
	
 | 
						|
# check transactions-6 success: 	1
 | 
						|
# INFO: Storage engine used for t1 seems to be not transactional.
 | 
						|
COMMIT;
 | 
						|
	
 | 
						|
# check transactions-7 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
SET @@session.sql_mode = 'traditional';
 | 
						|
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
 | 
						|
'', '', 'was inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
ERROR 22012: Division by 0
 | 
						|
COMMIT;
 | 
						|
	
 | 
						|
# check transactions-8 success: 	1
 | 
						|
# INFO: Storage engine used for t1 seems to be unable to revert
 | 
						|
#       changes made by the failing statement.
 | 
						|
SET @@session.sql_mode = '';
 | 
						|
SET AUTOCOMMIT= 1;
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
 | 
						|
	
 | 
						|
# check special-1 success: 	1
 | 
						|
UPDATE t1 SET f_charbig = '';
 | 
						|
	
 | 
						|
# check special-2 success: 	1
 | 
						|
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
 | 
						|
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
	
 | 
						|
# check trigger-1 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
	
 | 
						|
# check trigger-2 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-3 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-4 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-5 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-6 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-7 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-8 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = old.f_int1 + @max_row,
 | 
						|
new.f_int2 = old.f_int2 - @max_row,
 | 
						|
new.f_charbig = '####updated per update trigger####';
 | 
						|
END|
 | 
						|
UPDATE t1
 | 
						|
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
 | 
						|
f_charbig = '####updated per update statement itself####';
 | 
						|
	
 | 
						|
# check trigger-9 success: 	1
 | 
						|
DROP TRIGGER trg_2;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===');
 | 
						|
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = new.f_int1 + @max_row,
 | 
						|
new.f_int2 = new.f_int2 - @max_row,
 | 
						|
new.f_charbig = '####updated per update trigger####';
 | 
						|
END|
 | 
						|
UPDATE t1
 | 
						|
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
 | 
						|
f_charbig = '####updated per update statement itself####';
 | 
						|
	
 | 
						|
# check trigger-10 success: 	1
 | 
						|
DROP TRIGGER trg_2;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===');
 | 
						|
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = @my_max1 + @counter,
 | 
						|
new.f_int2 = @my_min2 - @counter,
 | 
						|
new.f_charbig = '####updated per insert trigger####';
 | 
						|
SET @counter = @counter + 1;
 | 
						|
END|
 | 
						|
SET @counter = 1;
 | 
						|
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
 | 
						|
ORDER BY f_int1;
 | 
						|
DROP TRIGGER trg_3;
 | 
						|
	
 | 
						|
# check trigger-11 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_charbig = '####updated per insert trigger####';
 | 
						|
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = @my_max1 + @counter,
 | 
						|
new.f_int2 = @my_min2 - @counter,
 | 
						|
new.f_charbig = '####updated per insert trigger####';
 | 
						|
SET @counter = @counter + 1;
 | 
						|
END|
 | 
						|
SET @counter = 1;
 | 
						|
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
 | 
						|
INSERT INTO t1 (f_char1, f_char2, f_charbig)
 | 
						|
SELECT CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
 | 
						|
ORDER BY f_int1;
 | 
						|
DROP TRIGGER trg_3;
 | 
						|
	
 | 
						|
# check trigger-12 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_charbig = '####updated per insert trigger####';
 | 
						|
ANALYZE  TABLE t1;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	analyze	status	Engine-independent statistics collected
 | 
						|
test.t1	analyze	status	OK
 | 
						|
CHECK    TABLE t1 EXTENDED;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	check	status	OK
 | 
						|
CHECKSUM TABLE t1 EXTENDED;
 | 
						|
Table	Checksum
 | 
						|
test.t1	<some_value>
 | 
						|
OPTIMIZE TABLE t1;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	optimize	status	OK
 | 
						|
# check layout success:    1
 | 
						|
REPAIR   TABLE t1 EXTENDED;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	repair	status	OK
 | 
						|
# check layout success:    1
 | 
						|
TRUNCATE t1;
 | 
						|
	
 | 
						|
# check TRUNCATE success: 	1
 | 
						|
# check layout success:    1
 | 
						|
# End usability test (inc/partition_check.inc)
 | 
						|
DROP TABLE t1;
 | 
						|
CREATE TABLE t1 (
 | 
						|
f_int1 INTEGER DEFAULT 0,
 | 
						|
f_int2 INTEGER DEFAULT 0,
 | 
						|
f_char1 CHAR(20),
 | 
						|
f_char2 CHAR(20),
 | 
						|
f_charbig VARCHAR(1000)
 | 
						|
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
 | 
						|
)
 | 
						|
PARTITION BY LIST(ABS(MOD(f_int1,2)))
 | 
						|
SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
 | 
						|
(PARTITION part1 VALUES IN (0)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION part2 VALUES IN (1)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION part3 VALUES IN (NULL)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir');
 | 
						|
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
 | 
						|
# Start usability test (inc/partition_check.inc)
 | 
						|
create_command
 | 
						|
SHOW CREATE TABLE t1;
 | 
						|
Table	Create Table
 | 
						|
t1	CREATE TABLE `t1` (
 | 
						|
  `f_int1` int(11) DEFAULT 0,
 | 
						|
  `f_int2` int(11) DEFAULT 0,
 | 
						|
  `f_char1` char(20) DEFAULT NULL,
 | 
						|
  `f_char2` char(20) DEFAULT NULL,
 | 
						|
  `f_charbig` varchar(1000) DEFAULT NULL,
 | 
						|
  UNIQUE KEY `uidx1` (`f_int1`,`f_int2`),
 | 
						|
  UNIQUE KEY `uidx2` (`f_int2`,`f_int1`)
 | 
						|
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | 
						|
 PARTITION BY LIST (abs(`f_int1` MOD 2))
 | 
						|
SUBPARTITION BY KEY (`f_int1`)
 | 
						|
SUBPARTITIONS 3
 | 
						|
(PARTITION `part1` VALUES IN (0) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `part2` VALUES IN (1) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `part3` VALUES IN (NULL) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM)
 | 
						|
 | 
						|
unified filelist
 | 
						|
t1#P#part1#SP#part1sp0.MYD
 | 
						|
t1#P#part1#SP#part1sp0.MYI
 | 
						|
t1#P#part1#SP#part1sp1.MYD
 | 
						|
t1#P#part1#SP#part1sp1.MYI
 | 
						|
t1#P#part1#SP#part1sp2.MYD
 | 
						|
t1#P#part1#SP#part1sp2.MYI
 | 
						|
t1#P#part2#SP#part2sp0.MYD
 | 
						|
t1#P#part2#SP#part2sp0.MYI
 | 
						|
t1#P#part2#SP#part2sp1.MYD
 | 
						|
t1#P#part2#SP#part2sp1.MYI
 | 
						|
t1#P#part2#SP#part2sp2.MYD
 | 
						|
t1#P#part2#SP#part2sp2.MYI
 | 
						|
t1#P#part3#SP#part3sp0.MYD
 | 
						|
t1#P#part3#SP#part3sp0.MYI
 | 
						|
t1#P#part3#SP#part3sp1.MYD
 | 
						|
t1#P#part3#SP#part3sp1.MYI
 | 
						|
t1#P#part3#SP#part3sp2.MYD
 | 
						|
t1#P#part3#SP#part3sp2.MYI
 | 
						|
t1.frm
 | 
						|
t1.par
 | 
						|
t1#P#part1#SP#part1sp0.MYD
 | 
						|
t1#P#part1#SP#part1sp1.MYD
 | 
						|
t1#P#part1#SP#part1sp2.MYD
 | 
						|
t1#P#part2#SP#part2sp0.MYD
 | 
						|
t1#P#part2#SP#part2sp1.MYD
 | 
						|
t1#P#part2#SP#part2sp2.MYD
 | 
						|
t1#P#part3#SP#part3sp0.MYD
 | 
						|
t1#P#part3#SP#part3sp1.MYD
 | 
						|
t1#P#part3#SP#part3sp2.MYD
 | 
						|
t1#P#part1#SP#part1sp0.MYI
 | 
						|
t1#P#part1#SP#part1sp1.MYI
 | 
						|
t1#P#part1#SP#part1sp2.MYI
 | 
						|
t1#P#part2#SP#part2sp0.MYI
 | 
						|
t1#P#part2#SP#part2sp1.MYI
 | 
						|
t1#P#part2#SP#part2sp2.MYI
 | 
						|
t1#P#part3#SP#part3sp0.MYI
 | 
						|
t1#P#part3#SP#part3sp1.MYI
 | 
						|
t1#P#part3#SP#part3sp2.MYI
 | 
						|
 | 
						|
# check prerequisites-1 success:    1
 | 
						|
# check COUNT(*) success:    1
 | 
						|
# check MIN/MAX(f_int1) success:    1
 | 
						|
# check MIN/MAX(f_int2) success:    1
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
 | 
						|
WHERE f_int1 IN (2,3);
 | 
						|
ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
 | 
						|
# check prerequisites-3 success:    1
 | 
						|
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
 | 
						|
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
 | 
						|
WHERE f_int1 IN (2,3);
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'delete me';
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
 | 
						|
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
 | 
						|
WHERE f_int1 IN (2,3);
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'delete me';
 | 
						|
# check read via f_int1 success: 1
 | 
						|
# check read via f_int2 success: 1
 | 
						|
	
 | 
						|
# check multiple-1 success: 	1
 | 
						|
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
 | 
						|
	
 | 
						|
# check multiple-2 success: 	1
 | 
						|
INSERT INTO t1 SELECT * FROM t0_template
 | 
						|
WHERE MOD(f_int1,3) = 0;
 | 
						|
	
 | 
						|
# check multiple-3 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = f_int1 + @max_row
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
 | 
						|
AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check multiple-4 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
 | 
						|
AND @max_row_div2 + @max_row_div4 + @max_row;
 | 
						|
	
 | 
						|
# check multiple-5 success: 	1
 | 
						|
SELECT COUNT(*) INTO @try_count FROM t0_template
 | 
						|
WHERE MOD(f_int1,3) = 0
 | 
						|
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
 | 
						|
SELECT COUNT(*) INTO @clash_count
 | 
						|
FROM t1 INNER JOIN t0_template USING(f_int1)
 | 
						|
WHERE MOD(f_int1,3) = 0
 | 
						|
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
 | 
						|
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = @cur_value , f_int2 = @cur_value,
 | 
						|
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
 | 
						|
f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-1 success: 	1
 | 
						|
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = @cur_value , f_int2 = @cur_value,
 | 
						|
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
 | 
						|
f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-2 success: 	1
 | 
						|
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
 | 
						|
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
 | 
						|
UPDATE t1 SET f_int1 = @cur_value2
 | 
						|
WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-3 success: 	1
 | 
						|
SET @cur_value1= -1;
 | 
						|
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
 | 
						|
UPDATE t1 SET f_int1 = @cur_value1
 | 
						|
WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-4 success: 	1
 | 
						|
SELECT MAX(f_int1) INTO @cur_value FROM t1;
 | 
						|
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-5 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-6 success: 	1
 | 
						|
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
 | 
						|
	
 | 
						|
# check single-7 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
 | 
						|
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
 | 
						|
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
 | 
						|
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
 | 
						|
f_charbig = '#NULL#';
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = NULL , f_int2 = -@max_row,
 | 
						|
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
 | 
						|
f_charbig = '#NULL#';
 | 
						|
# check null success:    1
 | 
						|
	
 | 
						|
# check null-1 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = -@max_row
 | 
						|
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-2 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = NULL
 | 
						|
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-3 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-4 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 = 0 AND f_int2 = 0
 | 
						|
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
 | 
						|
AND f_charbig = '#NULL#';
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
   FROM t0_template source_tab
 | 
						|
WHERE MOD(f_int1,3) = 0
 | 
						|
AND f_int1 BETWEEN @max_row_div2 AND @max_row
 | 
						|
ON DUPLICATE KEY
 | 
						|
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
 | 
						|
f_int2 = 2 * @max_row + source_tab.f_int1,
 | 
						|
f_charbig = 'was updated';
 | 
						|
	
 | 
						|
# check unique-1-a success: 	1
 | 
						|
	
 | 
						|
# check unique-1-b success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===')
 | 
						|
WHERE f_charbig = 'was updated';
 | 
						|
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
 | 
						|
   FROM t0_template source_tab
 | 
						|
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
 | 
						|
	
 | 
						|
# check replace success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
 | 
						|
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
 | 
						|
UPDATE t1 SET f_int2 = f_int1,
 | 
						|
f_char1 = CAST(f_int1 AS CHAR),
 | 
						|
f_char2 = CAST(f_int1 AS CHAR),
 | 
						|
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
 | 
						|
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
 | 
						|
SET AUTOCOMMIT= 0;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
FROM t0_template source_tab
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check transactions-1 success: 	1
 | 
						|
COMMIT WORK;
 | 
						|
	
 | 
						|
# check transactions-2 success: 	1
 | 
						|
ROLLBACK WORK;
 | 
						|
	
 | 
						|
# check transactions-3 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
ROLLBACK WORK;
 | 
						|
	
 | 
						|
# check transactions-4 success: 	1
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
FROM t0_template source_tab
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check transactions-5 success: 	1
 | 
						|
ROLLBACK WORK;
 | 
						|
Warnings:
 | 
						|
Warning	1196	Some non-transactional changed tables couldn't be rolled back
 | 
						|
	
 | 
						|
# check transactions-6 success: 	1
 | 
						|
# INFO: Storage engine used for t1 seems to be not transactional.
 | 
						|
COMMIT;
 | 
						|
	
 | 
						|
# check transactions-7 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
SET @@session.sql_mode = 'traditional';
 | 
						|
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
 | 
						|
'', '', 'was inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
ERROR 22012: Division by 0
 | 
						|
COMMIT;
 | 
						|
	
 | 
						|
# check transactions-8 success: 	1
 | 
						|
# INFO: Storage engine used for t1 seems to be unable to revert
 | 
						|
#       changes made by the failing statement.
 | 
						|
SET @@session.sql_mode = '';
 | 
						|
SET AUTOCOMMIT= 1;
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
 | 
						|
	
 | 
						|
# check special-1 success: 	1
 | 
						|
UPDATE t1 SET f_charbig = '';
 | 
						|
	
 | 
						|
# check special-2 success: 	1
 | 
						|
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
 | 
						|
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
	
 | 
						|
# check trigger-1 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
	
 | 
						|
# check trigger-2 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-3 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-4 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-5 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-6 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-7 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-8 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = old.f_int1 + @max_row,
 | 
						|
new.f_int2 = old.f_int2 - @max_row,
 | 
						|
new.f_charbig = '####updated per update trigger####';
 | 
						|
END|
 | 
						|
UPDATE t1
 | 
						|
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
 | 
						|
f_charbig = '####updated per update statement itself####';
 | 
						|
	
 | 
						|
# check trigger-9 success: 	1
 | 
						|
DROP TRIGGER trg_2;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===');
 | 
						|
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = new.f_int1 + @max_row,
 | 
						|
new.f_int2 = new.f_int2 - @max_row,
 | 
						|
new.f_charbig = '####updated per update trigger####';
 | 
						|
END|
 | 
						|
UPDATE t1
 | 
						|
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
 | 
						|
f_charbig = '####updated per update statement itself####';
 | 
						|
	
 | 
						|
# check trigger-10 success: 	1
 | 
						|
DROP TRIGGER trg_2;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===');
 | 
						|
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = @my_max1 + @counter,
 | 
						|
new.f_int2 = @my_min2 - @counter,
 | 
						|
new.f_charbig = '####updated per insert trigger####';
 | 
						|
SET @counter = @counter + 1;
 | 
						|
END|
 | 
						|
SET @counter = 1;
 | 
						|
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
 | 
						|
ORDER BY f_int1;
 | 
						|
DROP TRIGGER trg_3;
 | 
						|
	
 | 
						|
# check trigger-11 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_charbig = '####updated per insert trigger####';
 | 
						|
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = @my_max1 + @counter,
 | 
						|
new.f_int2 = @my_min2 - @counter,
 | 
						|
new.f_charbig = '####updated per insert trigger####';
 | 
						|
SET @counter = @counter + 1;
 | 
						|
END|
 | 
						|
SET @counter = 1;
 | 
						|
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
 | 
						|
INSERT INTO t1 (f_char1, f_char2, f_charbig)
 | 
						|
SELECT CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
 | 
						|
ORDER BY f_int1;
 | 
						|
DROP TRIGGER trg_3;
 | 
						|
	
 | 
						|
# check trigger-12 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_charbig = '####updated per insert trigger####';
 | 
						|
ANALYZE  TABLE t1;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	analyze	status	Engine-independent statistics collected
 | 
						|
test.t1	analyze	status	OK
 | 
						|
CHECK    TABLE t1 EXTENDED;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	check	status	OK
 | 
						|
CHECKSUM TABLE t1 EXTENDED;
 | 
						|
Table	Checksum
 | 
						|
test.t1	<some_value>
 | 
						|
OPTIMIZE TABLE t1;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	optimize	status	OK
 | 
						|
# check layout success:    1
 | 
						|
REPAIR   TABLE t1 EXTENDED;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	repair	status	OK
 | 
						|
# check layout success:    1
 | 
						|
TRUNCATE t1;
 | 
						|
	
 | 
						|
# check TRUNCATE success: 	1
 | 
						|
# check layout success:    1
 | 
						|
# End usability test (inc/partition_check.inc)
 | 
						|
DROP TABLE t1;
 | 
						|
#------------------------------------------------------------------------
 | 
						|
#  3   Tables with PRIMARY KEY and/or UNIQUE INDEXes
 | 
						|
#        The partitioning function contains two columns.
 | 
						|
#------------------------------------------------------------------------
 | 
						|
#  3.3 PRIMARY KEY and UNIQUE INDEX consisting of two columns
 | 
						|
DROP TABLE IF EXISTS t1;
 | 
						|
CREATE TABLE t1 (
 | 
						|
f_int1 INTEGER DEFAULT 0,
 | 
						|
f_int2 INTEGER DEFAULT 0,
 | 
						|
f_char1 CHAR(20),
 | 
						|
f_char2 CHAR(20),
 | 
						|
f_charbig VARCHAR(1000)
 | 
						|
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
 | 
						|
)
 | 
						|
PARTITION BY HASH(f_int1 + f_int2) PARTITIONS 2
 | 
						|
(PARTITION p1 
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION p2 
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' 
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir');
 | 
						|
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
 | 
						|
# Start usability test (inc/partition_check.inc)
 | 
						|
create_command
 | 
						|
SHOW CREATE TABLE t1;
 | 
						|
Table	Create Table
 | 
						|
t1	CREATE TABLE `t1` (
 | 
						|
  `f_int1` int(11) DEFAULT 0,
 | 
						|
  `f_int2` int(11) DEFAULT 0,
 | 
						|
  `f_char1` char(20) DEFAULT NULL,
 | 
						|
  `f_char2` char(20) DEFAULT NULL,
 | 
						|
  `f_charbig` varchar(1000) DEFAULT NULL,
 | 
						|
  UNIQUE KEY `uidx1` (`f_int1`,`f_int2`),
 | 
						|
  UNIQUE KEY `uidx2` (`f_int2`,`f_int1`)
 | 
						|
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | 
						|
 PARTITION BY HASH (`f_int1` + `f_int2`)
 | 
						|
(PARTITION `p1` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `p2` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM)
 | 
						|
 | 
						|
unified filelist
 | 
						|
t1#P#p1.MYD
 | 
						|
t1#P#p1.MYI
 | 
						|
t1#P#p2.MYD
 | 
						|
t1#P#p2.MYI
 | 
						|
t1.frm
 | 
						|
t1.par
 | 
						|
t1#P#p1.MYD
 | 
						|
t1#P#p2.MYD
 | 
						|
t1#P#p1.MYI
 | 
						|
t1#P#p2.MYI
 | 
						|
 | 
						|
# check prerequisites-1 success:    1
 | 
						|
# check COUNT(*) success:    1
 | 
						|
# check MIN/MAX(f_int1) success:    1
 | 
						|
# check MIN/MAX(f_int2) success:    1
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
 | 
						|
WHERE f_int1 IN (2,3);
 | 
						|
ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
 | 
						|
# check prerequisites-3 success:    1
 | 
						|
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
 | 
						|
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
 | 
						|
WHERE f_int1 IN (2,3);
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'delete me';
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
 | 
						|
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
 | 
						|
WHERE f_int1 IN (2,3);
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'delete me';
 | 
						|
# check read via f_int1 success: 1
 | 
						|
# check read via f_int2 success: 1
 | 
						|
	
 | 
						|
# check multiple-1 success: 	1
 | 
						|
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
 | 
						|
	
 | 
						|
# check multiple-2 success: 	1
 | 
						|
INSERT INTO t1 SELECT * FROM t0_template
 | 
						|
WHERE MOD(f_int1,3) = 0;
 | 
						|
	
 | 
						|
# check multiple-3 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = f_int1 + @max_row
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
 | 
						|
AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check multiple-4 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
 | 
						|
AND @max_row_div2 + @max_row_div4 + @max_row;
 | 
						|
	
 | 
						|
# check multiple-5 success: 	1
 | 
						|
SELECT COUNT(*) INTO @try_count FROM t0_template
 | 
						|
WHERE MOD(f_int1,3) = 0
 | 
						|
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
 | 
						|
SELECT COUNT(*) INTO @clash_count
 | 
						|
FROM t1 INNER JOIN t0_template USING(f_int1)
 | 
						|
WHERE MOD(f_int1,3) = 0
 | 
						|
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
 | 
						|
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = @cur_value , f_int2 = @cur_value,
 | 
						|
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
 | 
						|
f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-1 success: 	1
 | 
						|
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = @cur_value , f_int2 = @cur_value,
 | 
						|
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
 | 
						|
f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-2 success: 	1
 | 
						|
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
 | 
						|
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
 | 
						|
UPDATE t1 SET f_int1 = @cur_value2
 | 
						|
WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-3 success: 	1
 | 
						|
SET @cur_value1= -1;
 | 
						|
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
 | 
						|
UPDATE t1 SET f_int1 = @cur_value1
 | 
						|
WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-4 success: 	1
 | 
						|
SELECT MAX(f_int1) INTO @cur_value FROM t1;
 | 
						|
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-5 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-6 success: 	1
 | 
						|
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
 | 
						|
	
 | 
						|
# check single-7 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
 | 
						|
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
 | 
						|
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
 | 
						|
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
 | 
						|
f_charbig = '#NULL#';
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = NULL , f_int2 = -@max_row,
 | 
						|
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
 | 
						|
f_charbig = '#NULL#';
 | 
						|
# check null success:    1
 | 
						|
	
 | 
						|
# check null-1 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = -@max_row
 | 
						|
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-2 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = NULL
 | 
						|
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-3 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-4 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 = 0 AND f_int2 = 0
 | 
						|
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
 | 
						|
AND f_charbig = '#NULL#';
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
   FROM t0_template source_tab
 | 
						|
WHERE MOD(f_int1,3) = 0
 | 
						|
AND f_int1 BETWEEN @max_row_div2 AND @max_row
 | 
						|
ON DUPLICATE KEY
 | 
						|
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
 | 
						|
f_int2 = 2 * @max_row + source_tab.f_int1,
 | 
						|
f_charbig = 'was updated';
 | 
						|
	
 | 
						|
# check unique-1-a success: 	1
 | 
						|
	
 | 
						|
# check unique-1-b success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===')
 | 
						|
WHERE f_charbig = 'was updated';
 | 
						|
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
 | 
						|
   FROM t0_template source_tab
 | 
						|
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
 | 
						|
	
 | 
						|
# check replace success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
 | 
						|
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
 | 
						|
UPDATE t1 SET f_int2 = f_int1,
 | 
						|
f_char1 = CAST(f_int1 AS CHAR),
 | 
						|
f_char2 = CAST(f_int1 AS CHAR),
 | 
						|
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
 | 
						|
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
 | 
						|
SET AUTOCOMMIT= 0;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
FROM t0_template source_tab
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check transactions-1 success: 	1
 | 
						|
COMMIT WORK;
 | 
						|
	
 | 
						|
# check transactions-2 success: 	1
 | 
						|
ROLLBACK WORK;
 | 
						|
	
 | 
						|
# check transactions-3 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
ROLLBACK WORK;
 | 
						|
	
 | 
						|
# check transactions-4 success: 	1
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
FROM t0_template source_tab
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check transactions-5 success: 	1
 | 
						|
ROLLBACK WORK;
 | 
						|
Warnings:
 | 
						|
Warning	1196	Some non-transactional changed tables couldn't be rolled back
 | 
						|
	
 | 
						|
# check transactions-6 success: 	1
 | 
						|
# INFO: Storage engine used for t1 seems to be not transactional.
 | 
						|
COMMIT;
 | 
						|
	
 | 
						|
# check transactions-7 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
SET @@session.sql_mode = 'traditional';
 | 
						|
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
 | 
						|
'', '', 'was inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
ERROR 22012: Division by 0
 | 
						|
COMMIT;
 | 
						|
	
 | 
						|
# check transactions-8 success: 	1
 | 
						|
# INFO: Storage engine used for t1 seems to be unable to revert
 | 
						|
#       changes made by the failing statement.
 | 
						|
SET @@session.sql_mode = '';
 | 
						|
SET AUTOCOMMIT= 1;
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
 | 
						|
	
 | 
						|
# check special-1 success: 	1
 | 
						|
UPDATE t1 SET f_charbig = '';
 | 
						|
	
 | 
						|
# check special-2 success: 	1
 | 
						|
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
 | 
						|
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
	
 | 
						|
# check trigger-1 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
	
 | 
						|
# check trigger-2 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-3 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-4 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-5 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-6 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-7 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-8 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = old.f_int1 + @max_row,
 | 
						|
new.f_int2 = old.f_int2 - @max_row,
 | 
						|
new.f_charbig = '####updated per update trigger####';
 | 
						|
END|
 | 
						|
UPDATE t1
 | 
						|
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
 | 
						|
f_charbig = '####updated per update statement itself####';
 | 
						|
	
 | 
						|
# check trigger-9 success: 	1
 | 
						|
DROP TRIGGER trg_2;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===');
 | 
						|
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = new.f_int1 + @max_row,
 | 
						|
new.f_int2 = new.f_int2 - @max_row,
 | 
						|
new.f_charbig = '####updated per update trigger####';
 | 
						|
END|
 | 
						|
UPDATE t1
 | 
						|
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
 | 
						|
f_charbig = '####updated per update statement itself####';
 | 
						|
	
 | 
						|
# check trigger-10 success: 	1
 | 
						|
DROP TRIGGER trg_2;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===');
 | 
						|
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = @my_max1 + @counter,
 | 
						|
new.f_int2 = @my_min2 - @counter,
 | 
						|
new.f_charbig = '####updated per insert trigger####';
 | 
						|
SET @counter = @counter + 1;
 | 
						|
END|
 | 
						|
SET @counter = 1;
 | 
						|
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
 | 
						|
ORDER BY f_int1;
 | 
						|
DROP TRIGGER trg_3;
 | 
						|
	
 | 
						|
# check trigger-11 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_charbig = '####updated per insert trigger####';
 | 
						|
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = @my_max1 + @counter,
 | 
						|
new.f_int2 = @my_min2 - @counter,
 | 
						|
new.f_charbig = '####updated per insert trigger####';
 | 
						|
SET @counter = @counter + 1;
 | 
						|
END|
 | 
						|
SET @counter = 1;
 | 
						|
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
 | 
						|
INSERT INTO t1 (f_char1, f_char2, f_charbig)
 | 
						|
SELECT CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
 | 
						|
ORDER BY f_int1;
 | 
						|
DROP TRIGGER trg_3;
 | 
						|
	
 | 
						|
# check trigger-12 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_charbig = '####updated per insert trigger####';
 | 
						|
ANALYZE  TABLE t1;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	analyze	status	Engine-independent statistics collected
 | 
						|
test.t1	analyze	status	OK
 | 
						|
CHECK    TABLE t1 EXTENDED;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	check	status	OK
 | 
						|
CHECKSUM TABLE t1 EXTENDED;
 | 
						|
Table	Checksum
 | 
						|
test.t1	<some_value>
 | 
						|
OPTIMIZE TABLE t1;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	optimize	status	OK
 | 
						|
# check layout success:    1
 | 
						|
REPAIR   TABLE t1 EXTENDED;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	repair	status	OK
 | 
						|
# check layout success:    1
 | 
						|
TRUNCATE t1;
 | 
						|
	
 | 
						|
# check TRUNCATE success: 	1
 | 
						|
# check layout success:    1
 | 
						|
# End usability test (inc/partition_check.inc)
 | 
						|
DROP TABLE t1;
 | 
						|
CREATE TABLE t1 (
 | 
						|
f_int1 INTEGER DEFAULT 0,
 | 
						|
f_int2 INTEGER DEFAULT 0,
 | 
						|
f_char1 CHAR(20),
 | 
						|
f_char2 CHAR(20),
 | 
						|
f_charbig VARCHAR(1000)
 | 
						|
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
 | 
						|
)
 | 
						|
PARTITION BY KEY(f_int1,f_int2) PARTITIONS 5
 | 
						|
(PARTITION p1
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION p2
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION p3
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION p4
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION p5
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir');
 | 
						|
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
 | 
						|
# Start usability test (inc/partition_check.inc)
 | 
						|
create_command
 | 
						|
SHOW CREATE TABLE t1;
 | 
						|
Table	Create Table
 | 
						|
t1	CREATE TABLE `t1` (
 | 
						|
  `f_int1` int(11) DEFAULT 0,
 | 
						|
  `f_int2` int(11) DEFAULT 0,
 | 
						|
  `f_char1` char(20) DEFAULT NULL,
 | 
						|
  `f_char2` char(20) DEFAULT NULL,
 | 
						|
  `f_charbig` varchar(1000) DEFAULT NULL,
 | 
						|
  UNIQUE KEY `uidx1` (`f_int1`,`f_int2`),
 | 
						|
  UNIQUE KEY `uidx2` (`f_int2`,`f_int1`)
 | 
						|
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | 
						|
 PARTITION BY KEY (`f_int1`,`f_int2`)
 | 
						|
(PARTITION `p1` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `p2` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `p3` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `p4` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `p5` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM)
 | 
						|
 | 
						|
unified filelist
 | 
						|
t1#P#p1.MYD
 | 
						|
t1#P#p1.MYI
 | 
						|
t1#P#p2.MYD
 | 
						|
t1#P#p2.MYI
 | 
						|
t1#P#p3.MYD
 | 
						|
t1#P#p3.MYI
 | 
						|
t1#P#p4.MYD
 | 
						|
t1#P#p4.MYI
 | 
						|
t1#P#p5.MYD
 | 
						|
t1#P#p5.MYI
 | 
						|
t1.frm
 | 
						|
t1.par
 | 
						|
t1#P#p1.MYD
 | 
						|
t1#P#p2.MYD
 | 
						|
t1#P#p3.MYD
 | 
						|
t1#P#p4.MYD
 | 
						|
t1#P#p5.MYD
 | 
						|
t1#P#p1.MYI
 | 
						|
t1#P#p2.MYI
 | 
						|
t1#P#p3.MYI
 | 
						|
t1#P#p4.MYI
 | 
						|
t1#P#p5.MYI
 | 
						|
 | 
						|
# check prerequisites-1 success:    1
 | 
						|
# check COUNT(*) success:    1
 | 
						|
# check MIN/MAX(f_int1) success:    1
 | 
						|
# check MIN/MAX(f_int2) success:    1
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
 | 
						|
WHERE f_int1 IN (2,3);
 | 
						|
ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
 | 
						|
# check prerequisites-3 success:    1
 | 
						|
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
 | 
						|
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
 | 
						|
WHERE f_int1 IN (2,3);
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'delete me';
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
 | 
						|
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
 | 
						|
WHERE f_int1 IN (2,3);
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'delete me';
 | 
						|
# check read via f_int1 success: 1
 | 
						|
# check read via f_int2 success: 1
 | 
						|
	
 | 
						|
# check multiple-1 success: 	1
 | 
						|
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
 | 
						|
	
 | 
						|
# check multiple-2 success: 	1
 | 
						|
INSERT INTO t1 SELECT * FROM t0_template
 | 
						|
WHERE MOD(f_int1,3) = 0;
 | 
						|
	
 | 
						|
# check multiple-3 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = f_int1 + @max_row
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
 | 
						|
AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check multiple-4 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
 | 
						|
AND @max_row_div2 + @max_row_div4 + @max_row;
 | 
						|
	
 | 
						|
# check multiple-5 success: 	1
 | 
						|
SELECT COUNT(*) INTO @try_count FROM t0_template
 | 
						|
WHERE MOD(f_int1,3) = 0
 | 
						|
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
 | 
						|
SELECT COUNT(*) INTO @clash_count
 | 
						|
FROM t1 INNER JOIN t0_template USING(f_int1)
 | 
						|
WHERE MOD(f_int1,3) = 0
 | 
						|
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
 | 
						|
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = @cur_value , f_int2 = @cur_value,
 | 
						|
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
 | 
						|
f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-1 success: 	1
 | 
						|
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = @cur_value , f_int2 = @cur_value,
 | 
						|
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
 | 
						|
f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-2 success: 	1
 | 
						|
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
 | 
						|
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
 | 
						|
UPDATE t1 SET f_int1 = @cur_value2
 | 
						|
WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-3 success: 	1
 | 
						|
SET @cur_value1= -1;
 | 
						|
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
 | 
						|
UPDATE t1 SET f_int1 = @cur_value1
 | 
						|
WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-4 success: 	1
 | 
						|
SELECT MAX(f_int1) INTO @cur_value FROM t1;
 | 
						|
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-5 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-6 success: 	1
 | 
						|
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
 | 
						|
	
 | 
						|
# check single-7 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
 | 
						|
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
 | 
						|
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
 | 
						|
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
 | 
						|
f_charbig = '#NULL#';
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = NULL , f_int2 = -@max_row,
 | 
						|
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
 | 
						|
f_charbig = '#NULL#';
 | 
						|
# check null success:    1
 | 
						|
	
 | 
						|
# check null-1 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = -@max_row
 | 
						|
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-2 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = NULL
 | 
						|
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-3 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-4 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 = 0 AND f_int2 = 0
 | 
						|
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
 | 
						|
AND f_charbig = '#NULL#';
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
   FROM t0_template source_tab
 | 
						|
WHERE MOD(f_int1,3) = 0
 | 
						|
AND f_int1 BETWEEN @max_row_div2 AND @max_row
 | 
						|
ON DUPLICATE KEY
 | 
						|
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
 | 
						|
f_int2 = 2 * @max_row + source_tab.f_int1,
 | 
						|
f_charbig = 'was updated';
 | 
						|
	
 | 
						|
# check unique-1-a success: 	1
 | 
						|
	
 | 
						|
# check unique-1-b success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===')
 | 
						|
WHERE f_charbig = 'was updated';
 | 
						|
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
 | 
						|
   FROM t0_template source_tab
 | 
						|
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
 | 
						|
	
 | 
						|
# check replace success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
 | 
						|
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
 | 
						|
UPDATE t1 SET f_int2 = f_int1,
 | 
						|
f_char1 = CAST(f_int1 AS CHAR),
 | 
						|
f_char2 = CAST(f_int1 AS CHAR),
 | 
						|
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
 | 
						|
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
 | 
						|
SET AUTOCOMMIT= 0;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
FROM t0_template source_tab
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check transactions-1 success: 	1
 | 
						|
COMMIT WORK;
 | 
						|
	
 | 
						|
# check transactions-2 success: 	1
 | 
						|
ROLLBACK WORK;
 | 
						|
	
 | 
						|
# check transactions-3 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
ROLLBACK WORK;
 | 
						|
	
 | 
						|
# check transactions-4 success: 	1
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
FROM t0_template source_tab
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check transactions-5 success: 	1
 | 
						|
ROLLBACK WORK;
 | 
						|
Warnings:
 | 
						|
Warning	1196	Some non-transactional changed tables couldn't be rolled back
 | 
						|
	
 | 
						|
# check transactions-6 success: 	1
 | 
						|
# INFO: Storage engine used for t1 seems to be not transactional.
 | 
						|
COMMIT;
 | 
						|
	
 | 
						|
# check transactions-7 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
SET @@session.sql_mode = 'traditional';
 | 
						|
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
 | 
						|
'', '', 'was inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
ERROR 22012: Division by 0
 | 
						|
COMMIT;
 | 
						|
	
 | 
						|
# check transactions-8 success: 	1
 | 
						|
# INFO: Storage engine used for t1 seems to be unable to revert
 | 
						|
#       changes made by the failing statement.
 | 
						|
SET @@session.sql_mode = '';
 | 
						|
SET AUTOCOMMIT= 1;
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
 | 
						|
	
 | 
						|
# check special-1 success: 	1
 | 
						|
UPDATE t1 SET f_charbig = '';
 | 
						|
	
 | 
						|
# check special-2 success: 	1
 | 
						|
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
 | 
						|
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
	
 | 
						|
# check trigger-1 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
	
 | 
						|
# check trigger-2 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-3 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-4 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-5 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-6 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-7 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-8 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = old.f_int1 + @max_row,
 | 
						|
new.f_int2 = old.f_int2 - @max_row,
 | 
						|
new.f_charbig = '####updated per update trigger####';
 | 
						|
END|
 | 
						|
UPDATE t1
 | 
						|
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
 | 
						|
f_charbig = '####updated per update statement itself####';
 | 
						|
	
 | 
						|
# check trigger-9 success: 	1
 | 
						|
DROP TRIGGER trg_2;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===');
 | 
						|
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = new.f_int1 + @max_row,
 | 
						|
new.f_int2 = new.f_int2 - @max_row,
 | 
						|
new.f_charbig = '####updated per update trigger####';
 | 
						|
END|
 | 
						|
UPDATE t1
 | 
						|
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
 | 
						|
f_charbig = '####updated per update statement itself####';
 | 
						|
	
 | 
						|
# check trigger-10 success: 	1
 | 
						|
DROP TRIGGER trg_2;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===');
 | 
						|
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = @my_max1 + @counter,
 | 
						|
new.f_int2 = @my_min2 - @counter,
 | 
						|
new.f_charbig = '####updated per insert trigger####';
 | 
						|
SET @counter = @counter + 1;
 | 
						|
END|
 | 
						|
SET @counter = 1;
 | 
						|
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
 | 
						|
ORDER BY f_int1;
 | 
						|
DROP TRIGGER trg_3;
 | 
						|
	
 | 
						|
# check trigger-11 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_charbig = '####updated per insert trigger####';
 | 
						|
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = @my_max1 + @counter,
 | 
						|
new.f_int2 = @my_min2 - @counter,
 | 
						|
new.f_charbig = '####updated per insert trigger####';
 | 
						|
SET @counter = @counter + 1;
 | 
						|
END|
 | 
						|
SET @counter = 1;
 | 
						|
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
 | 
						|
INSERT INTO t1 (f_char1, f_char2, f_charbig)
 | 
						|
SELECT CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
 | 
						|
ORDER BY f_int1;
 | 
						|
DROP TRIGGER trg_3;
 | 
						|
	
 | 
						|
# check trigger-12 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_charbig = '####updated per insert trigger####';
 | 
						|
ANALYZE  TABLE t1;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	analyze	status	Engine-independent statistics collected
 | 
						|
test.t1	analyze	status	OK
 | 
						|
CHECK    TABLE t1 EXTENDED;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	check	status	OK
 | 
						|
CHECKSUM TABLE t1 EXTENDED;
 | 
						|
Table	Checksum
 | 
						|
test.t1	<some_value>
 | 
						|
OPTIMIZE TABLE t1;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	optimize	status	OK
 | 
						|
# check layout success:    1
 | 
						|
REPAIR   TABLE t1 EXTENDED;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	repair	status	OK
 | 
						|
# check layout success:    1
 | 
						|
TRUNCATE t1;
 | 
						|
	
 | 
						|
# check TRUNCATE success: 	1
 | 
						|
# check layout success:    1
 | 
						|
# End usability test (inc/partition_check.inc)
 | 
						|
DROP TABLE t1;
 | 
						|
CREATE TABLE t1 (
 | 
						|
f_int1 INTEGER DEFAULT 0,
 | 
						|
f_int2 INTEGER DEFAULT 0,
 | 
						|
f_char1 CHAR(20),
 | 
						|
f_char2 CHAR(20),
 | 
						|
f_charbig VARCHAR(1000)
 | 
						|
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
 | 
						|
)
 | 
						|
PARTITION BY LIST(MOD(f_int1 + f_int2,4))
 | 
						|
(PARTITION part_3 VALUES IN (-3)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION part_2 VALUES IN (-2)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION part_1 VALUES IN (-1)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION part_N VALUES IN (NULL)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION part0 VALUES IN (0)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION part1 VALUES IN (1)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION part2 VALUES IN (2)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION part3 VALUES IN (3)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir');
 | 
						|
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
 | 
						|
# Start usability test (inc/partition_check.inc)
 | 
						|
create_command
 | 
						|
SHOW CREATE TABLE t1;
 | 
						|
Table	Create Table
 | 
						|
t1	CREATE TABLE `t1` (
 | 
						|
  `f_int1` int(11) DEFAULT 0,
 | 
						|
  `f_int2` int(11) DEFAULT 0,
 | 
						|
  `f_char1` char(20) DEFAULT NULL,
 | 
						|
  `f_char2` char(20) DEFAULT NULL,
 | 
						|
  `f_charbig` varchar(1000) DEFAULT NULL,
 | 
						|
  UNIQUE KEY `uidx1` (`f_int1`,`f_int2`),
 | 
						|
  UNIQUE KEY `uidx2` (`f_int2`,`f_int1`)
 | 
						|
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | 
						|
 PARTITION BY LIST ((`f_int1` + `f_int2`) MOD 4)
 | 
						|
(PARTITION `part_3` VALUES IN (-3) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `part_2` VALUES IN (-2) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `part_1` VALUES IN (-1) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `part_N` VALUES IN (NULL) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `part0` VALUES IN (0) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `part1` VALUES IN (1) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `part2` VALUES IN (2) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `part3` VALUES IN (3) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM)
 | 
						|
 | 
						|
unified filelist
 | 
						|
t1#P#part0.MYD
 | 
						|
t1#P#part0.MYI
 | 
						|
t1#P#part1.MYD
 | 
						|
t1#P#part1.MYI
 | 
						|
t1#P#part2.MYD
 | 
						|
t1#P#part2.MYI
 | 
						|
t1#P#part3.MYD
 | 
						|
t1#P#part3.MYI
 | 
						|
t1#P#part_1.MYD
 | 
						|
t1#P#part_1.MYI
 | 
						|
t1#P#part_2.MYD
 | 
						|
t1#P#part_2.MYI
 | 
						|
t1#P#part_3.MYD
 | 
						|
t1#P#part_3.MYI
 | 
						|
t1#P#part_N.MYD
 | 
						|
t1#P#part_N.MYI
 | 
						|
t1.frm
 | 
						|
t1.par
 | 
						|
t1#P#part0.MYD
 | 
						|
t1#P#part1.MYD
 | 
						|
t1#P#part2.MYD
 | 
						|
t1#P#part3.MYD
 | 
						|
t1#P#part_1.MYD
 | 
						|
t1#P#part_2.MYD
 | 
						|
t1#P#part_3.MYD
 | 
						|
t1#P#part_N.MYD
 | 
						|
t1#P#part0.MYI
 | 
						|
t1#P#part1.MYI
 | 
						|
t1#P#part2.MYI
 | 
						|
t1#P#part3.MYI
 | 
						|
t1#P#part_1.MYI
 | 
						|
t1#P#part_2.MYI
 | 
						|
t1#P#part_3.MYI
 | 
						|
t1#P#part_N.MYI
 | 
						|
 | 
						|
# check prerequisites-1 success:    1
 | 
						|
# check COUNT(*) success:    1
 | 
						|
# check MIN/MAX(f_int1) success:    1
 | 
						|
# check MIN/MAX(f_int2) success:    1
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
 | 
						|
WHERE f_int1 IN (2,3);
 | 
						|
ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
 | 
						|
# check prerequisites-3 success:    1
 | 
						|
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
 | 
						|
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
 | 
						|
WHERE f_int1 IN (2,3);
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'delete me';
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
 | 
						|
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
 | 
						|
WHERE f_int1 IN (2,3);
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'delete me';
 | 
						|
# check read via f_int1 success: 1
 | 
						|
# check read via f_int2 success: 1
 | 
						|
	
 | 
						|
# check multiple-1 success: 	1
 | 
						|
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
 | 
						|
	
 | 
						|
# check multiple-2 success: 	1
 | 
						|
INSERT INTO t1 SELECT * FROM t0_template
 | 
						|
WHERE MOD(f_int1,3) = 0;
 | 
						|
	
 | 
						|
# check multiple-3 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = f_int1 + @max_row
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
 | 
						|
AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check multiple-4 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
 | 
						|
AND @max_row_div2 + @max_row_div4 + @max_row;
 | 
						|
	
 | 
						|
# check multiple-5 success: 	1
 | 
						|
SELECT COUNT(*) INTO @try_count FROM t0_template
 | 
						|
WHERE MOD(f_int1,3) = 0
 | 
						|
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
 | 
						|
SELECT COUNT(*) INTO @clash_count
 | 
						|
FROM t1 INNER JOIN t0_template USING(f_int1)
 | 
						|
WHERE MOD(f_int1,3) = 0
 | 
						|
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
 | 
						|
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = @cur_value , f_int2 = @cur_value,
 | 
						|
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
 | 
						|
f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-1 success: 	1
 | 
						|
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = @cur_value , f_int2 = @cur_value,
 | 
						|
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
 | 
						|
f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-2 success: 	1
 | 
						|
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
 | 
						|
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
 | 
						|
UPDATE t1 SET f_int1 = @cur_value2
 | 
						|
WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-3 success: 	1
 | 
						|
SET @cur_value1= -1;
 | 
						|
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
 | 
						|
UPDATE t1 SET f_int1 = @cur_value1
 | 
						|
WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-4 success: 	1
 | 
						|
SELECT MAX(f_int1) INTO @cur_value FROM t1;
 | 
						|
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-5 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-6 success: 	1
 | 
						|
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
 | 
						|
	
 | 
						|
# check single-7 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
 | 
						|
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
 | 
						|
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
 | 
						|
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
 | 
						|
f_charbig = '#NULL#';
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = NULL , f_int2 = -@max_row,
 | 
						|
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
 | 
						|
f_charbig = '#NULL#';
 | 
						|
# check null success:    1
 | 
						|
	
 | 
						|
# check null-1 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = -@max_row
 | 
						|
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-2 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = NULL
 | 
						|
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-3 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-4 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 = 0 AND f_int2 = 0
 | 
						|
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
 | 
						|
AND f_charbig = '#NULL#';
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
   FROM t0_template source_tab
 | 
						|
WHERE MOD(f_int1,3) = 0
 | 
						|
AND f_int1 BETWEEN @max_row_div2 AND @max_row
 | 
						|
ON DUPLICATE KEY
 | 
						|
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
 | 
						|
f_int2 = 2 * @max_row + source_tab.f_int1,
 | 
						|
f_charbig = 'was updated';
 | 
						|
	
 | 
						|
# check unique-1-a success: 	1
 | 
						|
	
 | 
						|
# check unique-1-b success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===')
 | 
						|
WHERE f_charbig = 'was updated';
 | 
						|
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
 | 
						|
   FROM t0_template source_tab
 | 
						|
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
 | 
						|
	
 | 
						|
# check replace success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
 | 
						|
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
 | 
						|
UPDATE t1 SET f_int2 = f_int1,
 | 
						|
f_char1 = CAST(f_int1 AS CHAR),
 | 
						|
f_char2 = CAST(f_int1 AS CHAR),
 | 
						|
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
 | 
						|
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
 | 
						|
SET AUTOCOMMIT= 0;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
FROM t0_template source_tab
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check transactions-1 success: 	1
 | 
						|
COMMIT WORK;
 | 
						|
	
 | 
						|
# check transactions-2 success: 	1
 | 
						|
ROLLBACK WORK;
 | 
						|
	
 | 
						|
# check transactions-3 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
ROLLBACK WORK;
 | 
						|
	
 | 
						|
# check transactions-4 success: 	1
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
FROM t0_template source_tab
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check transactions-5 success: 	1
 | 
						|
ROLLBACK WORK;
 | 
						|
Warnings:
 | 
						|
Warning	1196	Some non-transactional changed tables couldn't be rolled back
 | 
						|
	
 | 
						|
# check transactions-6 success: 	1
 | 
						|
# INFO: Storage engine used for t1 seems to be not transactional.
 | 
						|
COMMIT;
 | 
						|
	
 | 
						|
# check transactions-7 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
SET @@session.sql_mode = 'traditional';
 | 
						|
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
 | 
						|
'', '', 'was inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
ERROR 22012: Division by 0
 | 
						|
COMMIT;
 | 
						|
	
 | 
						|
# check transactions-8 success: 	1
 | 
						|
# INFO: Storage engine used for t1 seems to be unable to revert
 | 
						|
#       changes made by the failing statement.
 | 
						|
SET @@session.sql_mode = '';
 | 
						|
SET AUTOCOMMIT= 1;
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
 | 
						|
	
 | 
						|
# check special-1 success: 	1
 | 
						|
UPDATE t1 SET f_charbig = '';
 | 
						|
	
 | 
						|
# check special-2 success: 	1
 | 
						|
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
 | 
						|
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
	
 | 
						|
# check trigger-1 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
	
 | 
						|
# check trigger-2 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-3 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-4 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-5 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-6 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-7 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-8 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = old.f_int1 + @max_row,
 | 
						|
new.f_int2 = old.f_int2 - @max_row,
 | 
						|
new.f_charbig = '####updated per update trigger####';
 | 
						|
END|
 | 
						|
UPDATE t1
 | 
						|
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
 | 
						|
f_charbig = '####updated per update statement itself####';
 | 
						|
	
 | 
						|
# check trigger-9 success: 	1
 | 
						|
DROP TRIGGER trg_2;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===');
 | 
						|
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = new.f_int1 + @max_row,
 | 
						|
new.f_int2 = new.f_int2 - @max_row,
 | 
						|
new.f_charbig = '####updated per update trigger####';
 | 
						|
END|
 | 
						|
UPDATE t1
 | 
						|
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
 | 
						|
f_charbig = '####updated per update statement itself####';
 | 
						|
	
 | 
						|
# check trigger-10 success: 	1
 | 
						|
DROP TRIGGER trg_2;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===');
 | 
						|
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = @my_max1 + @counter,
 | 
						|
new.f_int2 = @my_min2 - @counter,
 | 
						|
new.f_charbig = '####updated per insert trigger####';
 | 
						|
SET @counter = @counter + 1;
 | 
						|
END|
 | 
						|
SET @counter = 1;
 | 
						|
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
 | 
						|
ORDER BY f_int1;
 | 
						|
DROP TRIGGER trg_3;
 | 
						|
	
 | 
						|
# check trigger-11 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_charbig = '####updated per insert trigger####';
 | 
						|
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = @my_max1 + @counter,
 | 
						|
new.f_int2 = @my_min2 - @counter,
 | 
						|
new.f_charbig = '####updated per insert trigger####';
 | 
						|
SET @counter = @counter + 1;
 | 
						|
END|
 | 
						|
SET @counter = 1;
 | 
						|
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
 | 
						|
INSERT INTO t1 (f_char1, f_char2, f_charbig)
 | 
						|
SELECT CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
 | 
						|
ORDER BY f_int1;
 | 
						|
DROP TRIGGER trg_3;
 | 
						|
	
 | 
						|
# check trigger-12 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_charbig = '####updated per insert trigger####';
 | 
						|
ANALYZE  TABLE t1;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	analyze	status	Engine-independent statistics collected
 | 
						|
test.t1	analyze	status	OK
 | 
						|
CHECK    TABLE t1 EXTENDED;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	check	status	OK
 | 
						|
CHECKSUM TABLE t1 EXTENDED;
 | 
						|
Table	Checksum
 | 
						|
test.t1	<some_value>
 | 
						|
OPTIMIZE TABLE t1;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	optimize	status	OK
 | 
						|
# check layout success:    1
 | 
						|
REPAIR   TABLE t1 EXTENDED;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	repair	status	OK
 | 
						|
# check layout success:    1
 | 
						|
TRUNCATE t1;
 | 
						|
	
 | 
						|
# check TRUNCATE success: 	1
 | 
						|
# check layout success:    1
 | 
						|
# End usability test (inc/partition_check.inc)
 | 
						|
DROP TABLE t1;
 | 
						|
CREATE TABLE t1 (
 | 
						|
f_int1 INTEGER DEFAULT 0,
 | 
						|
f_int2 INTEGER DEFAULT 0,
 | 
						|
f_char1 CHAR(20),
 | 
						|
f_char2 CHAR(20),
 | 
						|
f_charbig VARCHAR(1000)
 | 
						|
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
 | 
						|
)
 | 
						|
PARTITION BY RANGE((f_int1 + f_int2) DIV 2)
 | 
						|
(PARTITION parta VALUES LESS THAN (0)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION partb VALUES LESS THAN (5)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION partc VALUES LESS THAN (10)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION partd VALUES LESS THAN (10 + 5)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION parte VALUES LESS THAN (20)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION partf VALUES LESS THAN (2147483646)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir');
 | 
						|
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
 | 
						|
# Start usability test (inc/partition_check.inc)
 | 
						|
create_command
 | 
						|
SHOW CREATE TABLE t1;
 | 
						|
Table	Create Table
 | 
						|
t1	CREATE TABLE `t1` (
 | 
						|
  `f_int1` int(11) DEFAULT 0,
 | 
						|
  `f_int2` int(11) DEFAULT 0,
 | 
						|
  `f_char1` char(20) DEFAULT NULL,
 | 
						|
  `f_char2` char(20) DEFAULT NULL,
 | 
						|
  `f_charbig` varchar(1000) DEFAULT NULL,
 | 
						|
  UNIQUE KEY `uidx1` (`f_int1`,`f_int2`),
 | 
						|
  UNIQUE KEY `uidx2` (`f_int2`,`f_int1`)
 | 
						|
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | 
						|
 PARTITION BY RANGE ((`f_int1` + `f_int2`) DIV 2)
 | 
						|
(PARTITION `parta` VALUES LESS THAN (0) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `partb` VALUES LESS THAN (5) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `partc` VALUES LESS THAN (10) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `partd` VALUES LESS THAN (15) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `parte` VALUES LESS THAN (20) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `partf` VALUES LESS THAN (2147483646) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM)
 | 
						|
 | 
						|
unified filelist
 | 
						|
t1#P#parta.MYD
 | 
						|
t1#P#parta.MYI
 | 
						|
t1#P#partb.MYD
 | 
						|
t1#P#partb.MYI
 | 
						|
t1#P#partc.MYD
 | 
						|
t1#P#partc.MYI
 | 
						|
t1#P#partd.MYD
 | 
						|
t1#P#partd.MYI
 | 
						|
t1#P#parte.MYD
 | 
						|
t1#P#parte.MYI
 | 
						|
t1#P#partf.MYD
 | 
						|
t1#P#partf.MYI
 | 
						|
t1.frm
 | 
						|
t1.par
 | 
						|
t1#P#parta.MYD
 | 
						|
t1#P#partb.MYD
 | 
						|
t1#P#partc.MYD
 | 
						|
t1#P#partd.MYD
 | 
						|
t1#P#parte.MYD
 | 
						|
t1#P#partf.MYD
 | 
						|
t1#P#parta.MYI
 | 
						|
t1#P#partb.MYI
 | 
						|
t1#P#partc.MYI
 | 
						|
t1#P#partd.MYI
 | 
						|
t1#P#parte.MYI
 | 
						|
t1#P#partf.MYI
 | 
						|
 | 
						|
# check prerequisites-1 success:    1
 | 
						|
# check COUNT(*) success:    1
 | 
						|
# check MIN/MAX(f_int1) success:    1
 | 
						|
# check MIN/MAX(f_int2) success:    1
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
 | 
						|
WHERE f_int1 IN (2,3);
 | 
						|
ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
 | 
						|
# check prerequisites-3 success:    1
 | 
						|
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
 | 
						|
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
 | 
						|
WHERE f_int1 IN (2,3);
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'delete me';
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
 | 
						|
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
 | 
						|
WHERE f_int1 IN (2,3);
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'delete me';
 | 
						|
# check read via f_int1 success: 1
 | 
						|
# check read via f_int2 success: 1
 | 
						|
	
 | 
						|
# check multiple-1 success: 	1
 | 
						|
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
 | 
						|
	
 | 
						|
# check multiple-2 success: 	1
 | 
						|
INSERT INTO t1 SELECT * FROM t0_template
 | 
						|
WHERE MOD(f_int1,3) = 0;
 | 
						|
	
 | 
						|
# check multiple-3 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = f_int1 + @max_row
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
 | 
						|
AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check multiple-4 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
 | 
						|
AND @max_row_div2 + @max_row_div4 + @max_row;
 | 
						|
	
 | 
						|
# check multiple-5 success: 	1
 | 
						|
SELECT COUNT(*) INTO @try_count FROM t0_template
 | 
						|
WHERE MOD(f_int1,3) = 0
 | 
						|
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
 | 
						|
SELECT COUNT(*) INTO @clash_count
 | 
						|
FROM t1 INNER JOIN t0_template USING(f_int1)
 | 
						|
WHERE MOD(f_int1,3) = 0
 | 
						|
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
 | 
						|
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = @cur_value , f_int2 = @cur_value,
 | 
						|
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
 | 
						|
f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-1 success: 	1
 | 
						|
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = @cur_value , f_int2 = @cur_value,
 | 
						|
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
 | 
						|
f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-2 success: 	1
 | 
						|
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
 | 
						|
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
 | 
						|
UPDATE t1 SET f_int1 = @cur_value2
 | 
						|
WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-3 success: 	1
 | 
						|
SET @cur_value1= -1;
 | 
						|
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
 | 
						|
UPDATE t1 SET f_int1 = @cur_value1
 | 
						|
WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-4 success: 	1
 | 
						|
SELECT MAX(f_int1) INTO @cur_value FROM t1;
 | 
						|
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-5 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-6 success: 	1
 | 
						|
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
 | 
						|
ERROR HY000: Table has no partition for value 2147483647
 | 
						|
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
 | 
						|
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
 | 
						|
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
 | 
						|
f_charbig = '#NULL#';
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = NULL , f_int2 = -@max_row,
 | 
						|
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
 | 
						|
f_charbig = '#NULL#';
 | 
						|
# check null success:    1
 | 
						|
	
 | 
						|
# check null-1 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = -@max_row
 | 
						|
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-2 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = NULL
 | 
						|
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-3 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-4 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 = 0 AND f_int2 = 0
 | 
						|
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
 | 
						|
AND f_charbig = '#NULL#';
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
   FROM t0_template source_tab
 | 
						|
WHERE MOD(f_int1,3) = 0
 | 
						|
AND f_int1 BETWEEN @max_row_div2 AND @max_row
 | 
						|
ON DUPLICATE KEY
 | 
						|
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
 | 
						|
f_int2 = 2 * @max_row + source_tab.f_int1,
 | 
						|
f_charbig = 'was updated';
 | 
						|
	
 | 
						|
# check unique-1-a success: 	1
 | 
						|
	
 | 
						|
# check unique-1-b success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===')
 | 
						|
WHERE f_charbig = 'was updated';
 | 
						|
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
 | 
						|
   FROM t0_template source_tab
 | 
						|
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
 | 
						|
	
 | 
						|
# check replace success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
 | 
						|
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
 | 
						|
UPDATE t1 SET f_int2 = f_int1,
 | 
						|
f_char1 = CAST(f_int1 AS CHAR),
 | 
						|
f_char2 = CAST(f_int1 AS CHAR),
 | 
						|
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
 | 
						|
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
 | 
						|
SET AUTOCOMMIT= 0;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
FROM t0_template source_tab
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check transactions-1 success: 	1
 | 
						|
COMMIT WORK;
 | 
						|
	
 | 
						|
# check transactions-2 success: 	1
 | 
						|
ROLLBACK WORK;
 | 
						|
	
 | 
						|
# check transactions-3 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
ROLLBACK WORK;
 | 
						|
	
 | 
						|
# check transactions-4 success: 	1
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
FROM t0_template source_tab
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check transactions-5 success: 	1
 | 
						|
ROLLBACK WORK;
 | 
						|
Warnings:
 | 
						|
Warning	1196	Some non-transactional changed tables couldn't be rolled back
 | 
						|
	
 | 
						|
# check transactions-6 success: 	1
 | 
						|
# INFO: Storage engine used for t1 seems to be not transactional.
 | 
						|
COMMIT;
 | 
						|
	
 | 
						|
# check transactions-7 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
SET @@session.sql_mode = 'traditional';
 | 
						|
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
 | 
						|
'', '', 'was inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
ERROR 22012: Division by 0
 | 
						|
COMMIT;
 | 
						|
	
 | 
						|
# check transactions-8 success: 	1
 | 
						|
# INFO: Storage engine used for t1 seems to be unable to revert
 | 
						|
#       changes made by the failing statement.
 | 
						|
SET @@session.sql_mode = '';
 | 
						|
SET AUTOCOMMIT= 1;
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
 | 
						|
	
 | 
						|
# check special-1 success: 	1
 | 
						|
UPDATE t1 SET f_charbig = '';
 | 
						|
	
 | 
						|
# check special-2 success: 	1
 | 
						|
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
 | 
						|
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
	
 | 
						|
# check trigger-1 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
	
 | 
						|
# check trigger-2 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-3 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-4 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-5 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-6 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-7 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-8 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = old.f_int1 + @max_row,
 | 
						|
new.f_int2 = old.f_int2 - @max_row,
 | 
						|
new.f_charbig = '####updated per update trigger####';
 | 
						|
END|
 | 
						|
UPDATE t1
 | 
						|
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
 | 
						|
f_charbig = '####updated per update statement itself####';
 | 
						|
	
 | 
						|
# check trigger-9 success: 	1
 | 
						|
DROP TRIGGER trg_2;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===');
 | 
						|
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = new.f_int1 + @max_row,
 | 
						|
new.f_int2 = new.f_int2 - @max_row,
 | 
						|
new.f_charbig = '####updated per update trigger####';
 | 
						|
END|
 | 
						|
UPDATE t1
 | 
						|
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
 | 
						|
f_charbig = '####updated per update statement itself####';
 | 
						|
	
 | 
						|
# check trigger-10 success: 	1
 | 
						|
DROP TRIGGER trg_2;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===');
 | 
						|
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = @my_max1 + @counter,
 | 
						|
new.f_int2 = @my_min2 - @counter,
 | 
						|
new.f_charbig = '####updated per insert trigger####';
 | 
						|
SET @counter = @counter + 1;
 | 
						|
END|
 | 
						|
SET @counter = 1;
 | 
						|
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
 | 
						|
ORDER BY f_int1;
 | 
						|
DROP TRIGGER trg_3;
 | 
						|
	
 | 
						|
# check trigger-11 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_charbig = '####updated per insert trigger####';
 | 
						|
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = @my_max1 + @counter,
 | 
						|
new.f_int2 = @my_min2 - @counter,
 | 
						|
new.f_charbig = '####updated per insert trigger####';
 | 
						|
SET @counter = @counter + 1;
 | 
						|
END|
 | 
						|
SET @counter = 1;
 | 
						|
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
 | 
						|
INSERT INTO t1 (f_char1, f_char2, f_charbig)
 | 
						|
SELECT CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
 | 
						|
ORDER BY f_int1;
 | 
						|
DROP TRIGGER trg_3;
 | 
						|
	
 | 
						|
# check trigger-12 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_charbig = '####updated per insert trigger####';
 | 
						|
ANALYZE  TABLE t1;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	analyze	status	Engine-independent statistics collected
 | 
						|
test.t1	analyze	status	OK
 | 
						|
CHECK    TABLE t1 EXTENDED;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	check	status	OK
 | 
						|
CHECKSUM TABLE t1 EXTENDED;
 | 
						|
Table	Checksum
 | 
						|
test.t1	<some_value>
 | 
						|
OPTIMIZE TABLE t1;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	optimize	status	OK
 | 
						|
# check layout success:    1
 | 
						|
REPAIR   TABLE t1 EXTENDED;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	repair	status	OK
 | 
						|
# check layout success:    1
 | 
						|
TRUNCATE t1;
 | 
						|
	
 | 
						|
# check TRUNCATE success: 	1
 | 
						|
# check layout success:    1
 | 
						|
# End usability test (inc/partition_check.inc)
 | 
						|
DROP TABLE t1;
 | 
						|
CREATE TABLE t1 (
 | 
						|
f_int1 INTEGER DEFAULT 0,
 | 
						|
f_int2 INTEGER DEFAULT 0,
 | 
						|
f_char1 CHAR(20),
 | 
						|
f_char2 CHAR(20),
 | 
						|
f_charbig VARCHAR(1000)
 | 
						|
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
 | 
						|
)
 | 
						|
PARTITION BY RANGE(f_int1) SUBPARTITION BY HASH(f_int2) SUBPARTITIONS 2
 | 
						|
(PARTITION parta VALUES LESS THAN (0)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION partb VALUES LESS THAN (5)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION partc VALUES LESS THAN (10)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION partd VALUES LESS THAN (2147483646)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir');
 | 
						|
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
 | 
						|
# Start usability test (inc/partition_check.inc)
 | 
						|
create_command
 | 
						|
SHOW CREATE TABLE t1;
 | 
						|
Table	Create Table
 | 
						|
t1	CREATE TABLE `t1` (
 | 
						|
  `f_int1` int(11) DEFAULT 0,
 | 
						|
  `f_int2` int(11) DEFAULT 0,
 | 
						|
  `f_char1` char(20) DEFAULT NULL,
 | 
						|
  `f_char2` char(20) DEFAULT NULL,
 | 
						|
  `f_charbig` varchar(1000) DEFAULT NULL,
 | 
						|
  UNIQUE KEY `uidx1` (`f_int1`,`f_int2`),
 | 
						|
  UNIQUE KEY `uidx2` (`f_int2`,`f_int1`)
 | 
						|
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | 
						|
 PARTITION BY RANGE (`f_int1`)
 | 
						|
SUBPARTITION BY HASH (`f_int2`)
 | 
						|
SUBPARTITIONS 2
 | 
						|
(PARTITION `parta` VALUES LESS THAN (0) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `partb` VALUES LESS THAN (5) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `partc` VALUES LESS THAN (10) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `partd` VALUES LESS THAN (2147483646) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM)
 | 
						|
 | 
						|
unified filelist
 | 
						|
t1#P#parta#SP#partasp0.MYD
 | 
						|
t1#P#parta#SP#partasp0.MYI
 | 
						|
t1#P#parta#SP#partasp1.MYD
 | 
						|
t1#P#parta#SP#partasp1.MYI
 | 
						|
t1#P#partb#SP#partbsp0.MYD
 | 
						|
t1#P#partb#SP#partbsp0.MYI
 | 
						|
t1#P#partb#SP#partbsp1.MYD
 | 
						|
t1#P#partb#SP#partbsp1.MYI
 | 
						|
t1#P#partc#SP#partcsp0.MYD
 | 
						|
t1#P#partc#SP#partcsp0.MYI
 | 
						|
t1#P#partc#SP#partcsp1.MYD
 | 
						|
t1#P#partc#SP#partcsp1.MYI
 | 
						|
t1#P#partd#SP#partdsp0.MYD
 | 
						|
t1#P#partd#SP#partdsp0.MYI
 | 
						|
t1#P#partd#SP#partdsp1.MYD
 | 
						|
t1#P#partd#SP#partdsp1.MYI
 | 
						|
t1.frm
 | 
						|
t1.par
 | 
						|
t1#P#parta#SP#partasp0.MYD
 | 
						|
t1#P#parta#SP#partasp1.MYD
 | 
						|
t1#P#partb#SP#partbsp0.MYD
 | 
						|
t1#P#partb#SP#partbsp1.MYD
 | 
						|
t1#P#partc#SP#partcsp0.MYD
 | 
						|
t1#P#partc#SP#partcsp1.MYD
 | 
						|
t1#P#partd#SP#partdsp0.MYD
 | 
						|
t1#P#partd#SP#partdsp1.MYD
 | 
						|
t1#P#parta#SP#partasp0.MYI
 | 
						|
t1#P#parta#SP#partasp1.MYI
 | 
						|
t1#P#partb#SP#partbsp0.MYI
 | 
						|
t1#P#partb#SP#partbsp1.MYI
 | 
						|
t1#P#partc#SP#partcsp0.MYI
 | 
						|
t1#P#partc#SP#partcsp1.MYI
 | 
						|
t1#P#partd#SP#partdsp0.MYI
 | 
						|
t1#P#partd#SP#partdsp1.MYI
 | 
						|
 | 
						|
# check prerequisites-1 success:    1
 | 
						|
# check COUNT(*) success:    1
 | 
						|
# check MIN/MAX(f_int1) success:    1
 | 
						|
# check MIN/MAX(f_int2) success:    1
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
 | 
						|
WHERE f_int1 IN (2,3);
 | 
						|
ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
 | 
						|
# check prerequisites-3 success:    1
 | 
						|
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
 | 
						|
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
 | 
						|
WHERE f_int1 IN (2,3);
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'delete me';
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
 | 
						|
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
 | 
						|
WHERE f_int1 IN (2,3);
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'delete me';
 | 
						|
# check read via f_int1 success: 1
 | 
						|
# check read via f_int2 success: 1
 | 
						|
	
 | 
						|
# check multiple-1 success: 	1
 | 
						|
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
 | 
						|
	
 | 
						|
# check multiple-2 success: 	1
 | 
						|
INSERT INTO t1 SELECT * FROM t0_template
 | 
						|
WHERE MOD(f_int1,3) = 0;
 | 
						|
	
 | 
						|
# check multiple-3 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = f_int1 + @max_row
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
 | 
						|
AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check multiple-4 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
 | 
						|
AND @max_row_div2 + @max_row_div4 + @max_row;
 | 
						|
	
 | 
						|
# check multiple-5 success: 	1
 | 
						|
SELECT COUNT(*) INTO @try_count FROM t0_template
 | 
						|
WHERE MOD(f_int1,3) = 0
 | 
						|
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
 | 
						|
SELECT COUNT(*) INTO @clash_count
 | 
						|
FROM t1 INNER JOIN t0_template USING(f_int1)
 | 
						|
WHERE MOD(f_int1,3) = 0
 | 
						|
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
 | 
						|
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = @cur_value , f_int2 = @cur_value,
 | 
						|
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
 | 
						|
f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-1 success: 	1
 | 
						|
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = @cur_value , f_int2 = @cur_value,
 | 
						|
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
 | 
						|
f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-2 success: 	1
 | 
						|
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
 | 
						|
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
 | 
						|
UPDATE t1 SET f_int1 = @cur_value2
 | 
						|
WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-3 success: 	1
 | 
						|
SET @cur_value1= -1;
 | 
						|
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
 | 
						|
UPDATE t1 SET f_int1 = @cur_value1
 | 
						|
WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-4 success: 	1
 | 
						|
SELECT MAX(f_int1) INTO @cur_value FROM t1;
 | 
						|
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-5 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-6 success: 	1
 | 
						|
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
 | 
						|
ERROR HY000: Table has no partition for value 2147483647
 | 
						|
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
 | 
						|
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
 | 
						|
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
 | 
						|
f_charbig = '#NULL#';
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = NULL , f_int2 = -@max_row,
 | 
						|
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
 | 
						|
f_charbig = '#NULL#';
 | 
						|
# check null success:    1
 | 
						|
	
 | 
						|
# check null-1 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = -@max_row
 | 
						|
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-2 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = NULL
 | 
						|
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-3 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-4 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 = 0 AND f_int2 = 0
 | 
						|
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
 | 
						|
AND f_charbig = '#NULL#';
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
   FROM t0_template source_tab
 | 
						|
WHERE MOD(f_int1,3) = 0
 | 
						|
AND f_int1 BETWEEN @max_row_div2 AND @max_row
 | 
						|
ON DUPLICATE KEY
 | 
						|
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
 | 
						|
f_int2 = 2 * @max_row + source_tab.f_int1,
 | 
						|
f_charbig = 'was updated';
 | 
						|
	
 | 
						|
# check unique-1-a success: 	1
 | 
						|
	
 | 
						|
# check unique-1-b success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===')
 | 
						|
WHERE f_charbig = 'was updated';
 | 
						|
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
 | 
						|
   FROM t0_template source_tab
 | 
						|
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
 | 
						|
	
 | 
						|
# check replace success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
 | 
						|
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
 | 
						|
UPDATE t1 SET f_int2 = f_int1,
 | 
						|
f_char1 = CAST(f_int1 AS CHAR),
 | 
						|
f_char2 = CAST(f_int1 AS CHAR),
 | 
						|
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
 | 
						|
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
 | 
						|
SET AUTOCOMMIT= 0;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
FROM t0_template source_tab
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check transactions-1 success: 	1
 | 
						|
COMMIT WORK;
 | 
						|
	
 | 
						|
# check transactions-2 success: 	1
 | 
						|
ROLLBACK WORK;
 | 
						|
	
 | 
						|
# check transactions-3 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
ROLLBACK WORK;
 | 
						|
	
 | 
						|
# check transactions-4 success: 	1
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
FROM t0_template source_tab
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check transactions-5 success: 	1
 | 
						|
ROLLBACK WORK;
 | 
						|
Warnings:
 | 
						|
Warning	1196	Some non-transactional changed tables couldn't be rolled back
 | 
						|
	
 | 
						|
# check transactions-6 success: 	1
 | 
						|
# INFO: Storage engine used for t1 seems to be not transactional.
 | 
						|
COMMIT;
 | 
						|
	
 | 
						|
# check transactions-7 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
SET @@session.sql_mode = 'traditional';
 | 
						|
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
 | 
						|
'', '', 'was inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
ERROR 22012: Division by 0
 | 
						|
COMMIT;
 | 
						|
	
 | 
						|
# check transactions-8 success: 	1
 | 
						|
# INFO: Storage engine used for t1 seems to be unable to revert
 | 
						|
#       changes made by the failing statement.
 | 
						|
SET @@session.sql_mode = '';
 | 
						|
SET AUTOCOMMIT= 1;
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
 | 
						|
	
 | 
						|
# check special-1 success: 	1
 | 
						|
UPDATE t1 SET f_charbig = '';
 | 
						|
	
 | 
						|
# check special-2 success: 	1
 | 
						|
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
 | 
						|
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
	
 | 
						|
# check trigger-1 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
	
 | 
						|
# check trigger-2 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-3 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-4 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-5 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-6 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-7 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-8 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = old.f_int1 + @max_row,
 | 
						|
new.f_int2 = old.f_int2 - @max_row,
 | 
						|
new.f_charbig = '####updated per update trigger####';
 | 
						|
END|
 | 
						|
UPDATE t1
 | 
						|
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
 | 
						|
f_charbig = '####updated per update statement itself####';
 | 
						|
	
 | 
						|
# check trigger-9 success: 	1
 | 
						|
DROP TRIGGER trg_2;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===');
 | 
						|
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = new.f_int1 + @max_row,
 | 
						|
new.f_int2 = new.f_int2 - @max_row,
 | 
						|
new.f_charbig = '####updated per update trigger####';
 | 
						|
END|
 | 
						|
UPDATE t1
 | 
						|
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
 | 
						|
f_charbig = '####updated per update statement itself####';
 | 
						|
	
 | 
						|
# check trigger-10 success: 	1
 | 
						|
DROP TRIGGER trg_2;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===');
 | 
						|
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = @my_max1 + @counter,
 | 
						|
new.f_int2 = @my_min2 - @counter,
 | 
						|
new.f_charbig = '####updated per insert trigger####';
 | 
						|
SET @counter = @counter + 1;
 | 
						|
END|
 | 
						|
SET @counter = 1;
 | 
						|
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
 | 
						|
ORDER BY f_int1;
 | 
						|
DROP TRIGGER trg_3;
 | 
						|
	
 | 
						|
# check trigger-11 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_charbig = '####updated per insert trigger####';
 | 
						|
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = @my_max1 + @counter,
 | 
						|
new.f_int2 = @my_min2 - @counter,
 | 
						|
new.f_charbig = '####updated per insert trigger####';
 | 
						|
SET @counter = @counter + 1;
 | 
						|
END|
 | 
						|
SET @counter = 1;
 | 
						|
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
 | 
						|
INSERT INTO t1 (f_char1, f_char2, f_charbig)
 | 
						|
SELECT CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
 | 
						|
ORDER BY f_int1;
 | 
						|
DROP TRIGGER trg_3;
 | 
						|
	
 | 
						|
# check trigger-12 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_charbig = '####updated per insert trigger####';
 | 
						|
ANALYZE  TABLE t1;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	analyze	status	Engine-independent statistics collected
 | 
						|
test.t1	analyze	status	OK
 | 
						|
CHECK    TABLE t1 EXTENDED;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	check	status	OK
 | 
						|
CHECKSUM TABLE t1 EXTENDED;
 | 
						|
Table	Checksum
 | 
						|
test.t1	<some_value>
 | 
						|
OPTIMIZE TABLE t1;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	optimize	status	OK
 | 
						|
# check layout success:    1
 | 
						|
REPAIR   TABLE t1 EXTENDED;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	repair	status	OK
 | 
						|
# check layout success:    1
 | 
						|
TRUNCATE t1;
 | 
						|
	
 | 
						|
# check TRUNCATE success: 	1
 | 
						|
# check layout success:    1
 | 
						|
# End usability test (inc/partition_check.inc)
 | 
						|
DROP TABLE t1;
 | 
						|
CREATE TABLE t1 (
 | 
						|
f_int1 INTEGER DEFAULT 0,
 | 
						|
f_int2 INTEGER DEFAULT 0,
 | 
						|
f_char1 CHAR(20),
 | 
						|
f_char2 CHAR(20),
 | 
						|
f_charbig VARCHAR(1000)
 | 
						|
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
 | 
						|
)
 | 
						|
PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int2)
 | 
						|
(PARTITION part1 VALUES LESS THAN (0)
 | 
						|
(SUBPARTITION subpart11 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
SUBPARTITION subpart12 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'),
 | 
						|
PARTITION part2 VALUES LESS THAN (5)
 | 
						|
(SUBPARTITION subpart21 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
SUBPARTITION subpart22 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'),
 | 
						|
PARTITION part3 VALUES LESS THAN (10)
 | 
						|
(SUBPARTITION subpart31 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
SUBPARTITION subpart32 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'),
 | 
						|
PARTITION part4 VALUES LESS THAN (2147483646)
 | 
						|
(SUBPARTITION subpart41 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
SUBPARTITION subpart42 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'));
 | 
						|
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
 | 
						|
# Start usability test (inc/partition_check.inc)
 | 
						|
create_command
 | 
						|
SHOW CREATE TABLE t1;
 | 
						|
Table	Create Table
 | 
						|
t1	CREATE TABLE `t1` (
 | 
						|
  `f_int1` int(11) DEFAULT 0,
 | 
						|
  `f_int2` int(11) DEFAULT 0,
 | 
						|
  `f_char1` char(20) DEFAULT NULL,
 | 
						|
  `f_char2` char(20) DEFAULT NULL,
 | 
						|
  `f_charbig` varchar(1000) DEFAULT NULL,
 | 
						|
  UNIQUE KEY `uidx1` (`f_int1`,`f_int2`),
 | 
						|
  UNIQUE KEY `uidx2` (`f_int2`,`f_int1`)
 | 
						|
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | 
						|
 PARTITION BY RANGE (`f_int1`)
 | 
						|
SUBPARTITION BY KEY (`f_int2`)
 | 
						|
(PARTITION `part1` VALUES LESS THAN (0)
 | 
						|
 (SUBPARTITION `subpart11` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
  SUBPARTITION `subpart12` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM),
 | 
						|
 PARTITION `part2` VALUES LESS THAN (5)
 | 
						|
 (SUBPARTITION `subpart21` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
  SUBPARTITION `subpart22` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM),
 | 
						|
 PARTITION `part3` VALUES LESS THAN (10)
 | 
						|
 (SUBPARTITION `subpart31` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
  SUBPARTITION `subpart32` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM),
 | 
						|
 PARTITION `part4` VALUES LESS THAN (2147483646)
 | 
						|
 (SUBPARTITION `subpart41` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
  SUBPARTITION `subpart42` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM))
 | 
						|
 | 
						|
unified filelist
 | 
						|
t1#P#part1#SP#subpart11.MYD
 | 
						|
t1#P#part1#SP#subpart11.MYI
 | 
						|
t1#P#part1#SP#subpart12.MYD
 | 
						|
t1#P#part1#SP#subpart12.MYI
 | 
						|
t1#P#part2#SP#subpart21.MYD
 | 
						|
t1#P#part2#SP#subpart21.MYI
 | 
						|
t1#P#part2#SP#subpart22.MYD
 | 
						|
t1#P#part2#SP#subpart22.MYI
 | 
						|
t1#P#part3#SP#subpart31.MYD
 | 
						|
t1#P#part3#SP#subpart31.MYI
 | 
						|
t1#P#part3#SP#subpart32.MYD
 | 
						|
t1#P#part3#SP#subpart32.MYI
 | 
						|
t1#P#part4#SP#subpart41.MYD
 | 
						|
t1#P#part4#SP#subpart41.MYI
 | 
						|
t1#P#part4#SP#subpart42.MYD
 | 
						|
t1#P#part4#SP#subpart42.MYI
 | 
						|
t1.frm
 | 
						|
t1.par
 | 
						|
t1#P#part1#SP#subpart11.MYD
 | 
						|
t1#P#part1#SP#subpart12.MYD
 | 
						|
t1#P#part2#SP#subpart21.MYD
 | 
						|
t1#P#part2#SP#subpart22.MYD
 | 
						|
t1#P#part3#SP#subpart31.MYD
 | 
						|
t1#P#part3#SP#subpart32.MYD
 | 
						|
t1#P#part4#SP#subpart41.MYD
 | 
						|
t1#P#part4#SP#subpart42.MYD
 | 
						|
t1#P#part1#SP#subpart11.MYI
 | 
						|
t1#P#part1#SP#subpart12.MYI
 | 
						|
t1#P#part2#SP#subpart21.MYI
 | 
						|
t1#P#part2#SP#subpart22.MYI
 | 
						|
t1#P#part3#SP#subpart31.MYI
 | 
						|
t1#P#part3#SP#subpart32.MYI
 | 
						|
t1#P#part4#SP#subpart41.MYI
 | 
						|
t1#P#part4#SP#subpart42.MYI
 | 
						|
 | 
						|
# check prerequisites-1 success:    1
 | 
						|
# check COUNT(*) success:    1
 | 
						|
# check MIN/MAX(f_int1) success:    1
 | 
						|
# check MIN/MAX(f_int2) success:    1
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
 | 
						|
WHERE f_int1 IN (2,3);
 | 
						|
ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
 | 
						|
# check prerequisites-3 success:    1
 | 
						|
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
 | 
						|
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
 | 
						|
WHERE f_int1 IN (2,3);
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'delete me';
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
 | 
						|
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
 | 
						|
WHERE f_int1 IN (2,3);
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'delete me';
 | 
						|
# check read via f_int1 success: 1
 | 
						|
# check read via f_int2 success: 1
 | 
						|
	
 | 
						|
# check multiple-1 success: 	1
 | 
						|
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
 | 
						|
	
 | 
						|
# check multiple-2 success: 	1
 | 
						|
INSERT INTO t1 SELECT * FROM t0_template
 | 
						|
WHERE MOD(f_int1,3) = 0;
 | 
						|
	
 | 
						|
# check multiple-3 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = f_int1 + @max_row
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
 | 
						|
AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check multiple-4 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
 | 
						|
AND @max_row_div2 + @max_row_div4 + @max_row;
 | 
						|
	
 | 
						|
# check multiple-5 success: 	1
 | 
						|
SELECT COUNT(*) INTO @try_count FROM t0_template
 | 
						|
WHERE MOD(f_int1,3) = 0
 | 
						|
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
 | 
						|
SELECT COUNT(*) INTO @clash_count
 | 
						|
FROM t1 INNER JOIN t0_template USING(f_int1)
 | 
						|
WHERE MOD(f_int1,3) = 0
 | 
						|
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
 | 
						|
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = @cur_value , f_int2 = @cur_value,
 | 
						|
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
 | 
						|
f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-1 success: 	1
 | 
						|
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = @cur_value , f_int2 = @cur_value,
 | 
						|
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
 | 
						|
f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-2 success: 	1
 | 
						|
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
 | 
						|
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
 | 
						|
UPDATE t1 SET f_int1 = @cur_value2
 | 
						|
WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-3 success: 	1
 | 
						|
SET @cur_value1= -1;
 | 
						|
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
 | 
						|
UPDATE t1 SET f_int1 = @cur_value1
 | 
						|
WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-4 success: 	1
 | 
						|
SELECT MAX(f_int1) INTO @cur_value FROM t1;
 | 
						|
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-5 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-6 success: 	1
 | 
						|
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
 | 
						|
ERROR HY000: Table has no partition for value 2147483647
 | 
						|
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
 | 
						|
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
 | 
						|
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
 | 
						|
f_charbig = '#NULL#';
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = NULL , f_int2 = -@max_row,
 | 
						|
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
 | 
						|
f_charbig = '#NULL#';
 | 
						|
# check null success:    1
 | 
						|
	
 | 
						|
# check null-1 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = -@max_row
 | 
						|
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-2 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = NULL
 | 
						|
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-3 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-4 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 = 0 AND f_int2 = 0
 | 
						|
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
 | 
						|
AND f_charbig = '#NULL#';
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
   FROM t0_template source_tab
 | 
						|
WHERE MOD(f_int1,3) = 0
 | 
						|
AND f_int1 BETWEEN @max_row_div2 AND @max_row
 | 
						|
ON DUPLICATE KEY
 | 
						|
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
 | 
						|
f_int2 = 2 * @max_row + source_tab.f_int1,
 | 
						|
f_charbig = 'was updated';
 | 
						|
	
 | 
						|
# check unique-1-a success: 	1
 | 
						|
	
 | 
						|
# check unique-1-b success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===')
 | 
						|
WHERE f_charbig = 'was updated';
 | 
						|
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
 | 
						|
   FROM t0_template source_tab
 | 
						|
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
 | 
						|
	
 | 
						|
# check replace success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
 | 
						|
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
 | 
						|
UPDATE t1 SET f_int2 = f_int1,
 | 
						|
f_char1 = CAST(f_int1 AS CHAR),
 | 
						|
f_char2 = CAST(f_int1 AS CHAR),
 | 
						|
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
 | 
						|
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
 | 
						|
SET AUTOCOMMIT= 0;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
FROM t0_template source_tab
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check transactions-1 success: 	1
 | 
						|
COMMIT WORK;
 | 
						|
	
 | 
						|
# check transactions-2 success: 	1
 | 
						|
ROLLBACK WORK;
 | 
						|
	
 | 
						|
# check transactions-3 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
ROLLBACK WORK;
 | 
						|
	
 | 
						|
# check transactions-4 success: 	1
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
FROM t0_template source_tab
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check transactions-5 success: 	1
 | 
						|
ROLLBACK WORK;
 | 
						|
Warnings:
 | 
						|
Warning	1196	Some non-transactional changed tables couldn't be rolled back
 | 
						|
	
 | 
						|
# check transactions-6 success: 	1
 | 
						|
# INFO: Storage engine used for t1 seems to be not transactional.
 | 
						|
COMMIT;
 | 
						|
	
 | 
						|
# check transactions-7 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
SET @@session.sql_mode = 'traditional';
 | 
						|
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
 | 
						|
'', '', 'was inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
ERROR 22012: Division by 0
 | 
						|
COMMIT;
 | 
						|
	
 | 
						|
# check transactions-8 success: 	1
 | 
						|
# INFO: Storage engine used for t1 seems to be unable to revert
 | 
						|
#       changes made by the failing statement.
 | 
						|
SET @@session.sql_mode = '';
 | 
						|
SET AUTOCOMMIT= 1;
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
 | 
						|
	
 | 
						|
# check special-1 success: 	1
 | 
						|
UPDATE t1 SET f_charbig = '';
 | 
						|
	
 | 
						|
# check special-2 success: 	1
 | 
						|
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
 | 
						|
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
	
 | 
						|
# check trigger-1 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
	
 | 
						|
# check trigger-2 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-3 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-4 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-5 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-6 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-7 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-8 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = old.f_int1 + @max_row,
 | 
						|
new.f_int2 = old.f_int2 - @max_row,
 | 
						|
new.f_charbig = '####updated per update trigger####';
 | 
						|
END|
 | 
						|
UPDATE t1
 | 
						|
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
 | 
						|
f_charbig = '####updated per update statement itself####';
 | 
						|
	
 | 
						|
# check trigger-9 success: 	1
 | 
						|
DROP TRIGGER trg_2;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===');
 | 
						|
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = new.f_int1 + @max_row,
 | 
						|
new.f_int2 = new.f_int2 - @max_row,
 | 
						|
new.f_charbig = '####updated per update trigger####';
 | 
						|
END|
 | 
						|
UPDATE t1
 | 
						|
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
 | 
						|
f_charbig = '####updated per update statement itself####';
 | 
						|
	
 | 
						|
# check trigger-10 success: 	1
 | 
						|
DROP TRIGGER trg_2;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===');
 | 
						|
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = @my_max1 + @counter,
 | 
						|
new.f_int2 = @my_min2 - @counter,
 | 
						|
new.f_charbig = '####updated per insert trigger####';
 | 
						|
SET @counter = @counter + 1;
 | 
						|
END|
 | 
						|
SET @counter = 1;
 | 
						|
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
 | 
						|
ORDER BY f_int1;
 | 
						|
DROP TRIGGER trg_3;
 | 
						|
	
 | 
						|
# check trigger-11 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_charbig = '####updated per insert trigger####';
 | 
						|
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = @my_max1 + @counter,
 | 
						|
new.f_int2 = @my_min2 - @counter,
 | 
						|
new.f_charbig = '####updated per insert trigger####';
 | 
						|
SET @counter = @counter + 1;
 | 
						|
END|
 | 
						|
SET @counter = 1;
 | 
						|
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
 | 
						|
INSERT INTO t1 (f_char1, f_char2, f_charbig)
 | 
						|
SELECT CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
 | 
						|
ORDER BY f_int1;
 | 
						|
DROP TRIGGER trg_3;
 | 
						|
	
 | 
						|
# check trigger-12 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_charbig = '####updated per insert trigger####';
 | 
						|
ANALYZE  TABLE t1;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	analyze	status	Engine-independent statistics collected
 | 
						|
test.t1	analyze	status	OK
 | 
						|
CHECK    TABLE t1 EXTENDED;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	check	status	OK
 | 
						|
CHECKSUM TABLE t1 EXTENDED;
 | 
						|
Table	Checksum
 | 
						|
test.t1	<some_value>
 | 
						|
OPTIMIZE TABLE t1;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	optimize	status	OK
 | 
						|
# check layout success:    1
 | 
						|
REPAIR   TABLE t1 EXTENDED;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	repair	status	OK
 | 
						|
# check layout success:    1
 | 
						|
TRUNCATE t1;
 | 
						|
	
 | 
						|
# check TRUNCATE success: 	1
 | 
						|
# check layout success:    1
 | 
						|
# End usability test (inc/partition_check.inc)
 | 
						|
DROP TABLE t1;
 | 
						|
CREATE TABLE t1 (
 | 
						|
f_int1 INTEGER DEFAULT 0,
 | 
						|
f_int2 INTEGER DEFAULT 0,
 | 
						|
f_char1 CHAR(20),
 | 
						|
f_char2 CHAR(20),
 | 
						|
f_charbig VARCHAR(1000)
 | 
						|
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
 | 
						|
)
 | 
						|
PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int2 + 1)
 | 
						|
(PARTITION part1 VALUES IN (0)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'
 | 
						|
(SUBPARTITION sp11 
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
SUBPARTITION sp12
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'),
 | 
						|
PARTITION part2 VALUES IN (1)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'
 | 
						|
(SUBPARTITION sp21 
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
SUBPARTITION sp22
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
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)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'
 | 
						|
(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'));
 | 
						|
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
 | 
						|
# Start usability test (inc/partition_check.inc)
 | 
						|
create_command
 | 
						|
SHOW CREATE TABLE t1;
 | 
						|
Table	Create Table
 | 
						|
t1	CREATE TABLE `t1` (
 | 
						|
  `f_int1` int(11) DEFAULT 0,
 | 
						|
  `f_int2` int(11) DEFAULT 0,
 | 
						|
  `f_char1` char(20) DEFAULT NULL,
 | 
						|
  `f_char2` char(20) DEFAULT NULL,
 | 
						|
  `f_charbig` varchar(1000) DEFAULT NULL,
 | 
						|
  UNIQUE KEY `uidx1` (`f_int1`,`f_int2`),
 | 
						|
  UNIQUE KEY `uidx2` (`f_int2`,`f_int1`)
 | 
						|
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | 
						|
 PARTITION BY LIST (abs(`f_int1` MOD 3))
 | 
						|
SUBPARTITION BY HASH (`f_int2` + 1)
 | 
						|
(PARTITION `part1` VALUES IN (0)
 | 
						|
 (SUBPARTITION `sp11` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
  SUBPARTITION `sp12` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM),
 | 
						|
 PARTITION `part2` VALUES IN (1)
 | 
						|
 (SUBPARTITION `sp21` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
  SUBPARTITION `sp22` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM),
 | 
						|
 PARTITION `part3` VALUES IN (2)
 | 
						|
 (SUBPARTITION `sp31` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
  SUBPARTITION `sp32` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM),
 | 
						|
 PARTITION `part4` VALUES IN (NULL)
 | 
						|
 (SUBPARTITION `sp41` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
  SUBPARTITION `sp42` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM))
 | 
						|
 | 
						|
unified filelist
 | 
						|
t1#P#part1#SP#sp11.MYD
 | 
						|
t1#P#part1#SP#sp11.MYI
 | 
						|
t1#P#part1#SP#sp12.MYD
 | 
						|
t1#P#part1#SP#sp12.MYI
 | 
						|
t1#P#part2#SP#sp21.MYD
 | 
						|
t1#P#part2#SP#sp21.MYI
 | 
						|
t1#P#part2#SP#sp22.MYD
 | 
						|
t1#P#part2#SP#sp22.MYI
 | 
						|
t1#P#part3#SP#sp31.MYD
 | 
						|
t1#P#part3#SP#sp31.MYI
 | 
						|
t1#P#part3#SP#sp32.MYD
 | 
						|
t1#P#part3#SP#sp32.MYI
 | 
						|
t1#P#part4#SP#sp41.MYD
 | 
						|
t1#P#part4#SP#sp41.MYI
 | 
						|
t1#P#part4#SP#sp42.MYD
 | 
						|
t1#P#part4#SP#sp42.MYI
 | 
						|
t1.frm
 | 
						|
t1.par
 | 
						|
t1#P#part1#SP#sp11.MYD
 | 
						|
t1#P#part1#SP#sp12.MYD
 | 
						|
t1#P#part2#SP#sp21.MYD
 | 
						|
t1#P#part2#SP#sp22.MYD
 | 
						|
t1#P#part3#SP#sp31.MYD
 | 
						|
t1#P#part3#SP#sp32.MYD
 | 
						|
t1#P#part4#SP#sp41.MYD
 | 
						|
t1#P#part4#SP#sp42.MYD
 | 
						|
t1#P#part1#SP#sp11.MYI
 | 
						|
t1#P#part1#SP#sp12.MYI
 | 
						|
t1#P#part2#SP#sp21.MYI
 | 
						|
t1#P#part2#SP#sp22.MYI
 | 
						|
t1#P#part3#SP#sp31.MYI
 | 
						|
t1#P#part3#SP#sp32.MYI
 | 
						|
t1#P#part4#SP#sp41.MYI
 | 
						|
t1#P#part4#SP#sp42.MYI
 | 
						|
 | 
						|
# check prerequisites-1 success:    1
 | 
						|
# check COUNT(*) success:    1
 | 
						|
# check MIN/MAX(f_int1) success:    1
 | 
						|
# check MIN/MAX(f_int2) success:    1
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
 | 
						|
WHERE f_int1 IN (2,3);
 | 
						|
ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
 | 
						|
# check prerequisites-3 success:    1
 | 
						|
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
 | 
						|
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
 | 
						|
WHERE f_int1 IN (2,3);
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'delete me';
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
 | 
						|
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
 | 
						|
WHERE f_int1 IN (2,3);
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'delete me';
 | 
						|
# check read via f_int1 success: 1
 | 
						|
# check read via f_int2 success: 1
 | 
						|
	
 | 
						|
# check multiple-1 success: 	1
 | 
						|
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
 | 
						|
	
 | 
						|
# check multiple-2 success: 	1
 | 
						|
INSERT INTO t1 SELECT * FROM t0_template
 | 
						|
WHERE MOD(f_int1,3) = 0;
 | 
						|
	
 | 
						|
# check multiple-3 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = f_int1 + @max_row
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
 | 
						|
AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check multiple-4 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
 | 
						|
AND @max_row_div2 + @max_row_div4 + @max_row;
 | 
						|
	
 | 
						|
# check multiple-5 success: 	1
 | 
						|
SELECT COUNT(*) INTO @try_count FROM t0_template
 | 
						|
WHERE MOD(f_int1,3) = 0
 | 
						|
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
 | 
						|
SELECT COUNT(*) INTO @clash_count
 | 
						|
FROM t1 INNER JOIN t0_template USING(f_int1)
 | 
						|
WHERE MOD(f_int1,3) = 0
 | 
						|
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
 | 
						|
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = @cur_value , f_int2 = @cur_value,
 | 
						|
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
 | 
						|
f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-1 success: 	1
 | 
						|
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = @cur_value , f_int2 = @cur_value,
 | 
						|
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
 | 
						|
f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-2 success: 	1
 | 
						|
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
 | 
						|
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
 | 
						|
UPDATE t1 SET f_int1 = @cur_value2
 | 
						|
WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-3 success: 	1
 | 
						|
SET @cur_value1= -1;
 | 
						|
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
 | 
						|
UPDATE t1 SET f_int1 = @cur_value1
 | 
						|
WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-4 success: 	1
 | 
						|
SELECT MAX(f_int1) INTO @cur_value FROM t1;
 | 
						|
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-5 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-6 success: 	1
 | 
						|
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
 | 
						|
	
 | 
						|
# check single-7 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
 | 
						|
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
 | 
						|
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
 | 
						|
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
 | 
						|
f_charbig = '#NULL#';
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = NULL , f_int2 = -@max_row,
 | 
						|
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
 | 
						|
f_charbig = '#NULL#';
 | 
						|
# check null success:    1
 | 
						|
	
 | 
						|
# check null-1 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = -@max_row
 | 
						|
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-2 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = NULL
 | 
						|
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-3 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-4 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 = 0 AND f_int2 = 0
 | 
						|
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
 | 
						|
AND f_charbig = '#NULL#';
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
   FROM t0_template source_tab
 | 
						|
WHERE MOD(f_int1,3) = 0
 | 
						|
AND f_int1 BETWEEN @max_row_div2 AND @max_row
 | 
						|
ON DUPLICATE KEY
 | 
						|
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
 | 
						|
f_int2 = 2 * @max_row + source_tab.f_int1,
 | 
						|
f_charbig = 'was updated';
 | 
						|
	
 | 
						|
# check unique-1-a success: 	1
 | 
						|
	
 | 
						|
# check unique-1-b success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===')
 | 
						|
WHERE f_charbig = 'was updated';
 | 
						|
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
 | 
						|
   FROM t0_template source_tab
 | 
						|
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
 | 
						|
	
 | 
						|
# check replace success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
 | 
						|
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
 | 
						|
UPDATE t1 SET f_int2 = f_int1,
 | 
						|
f_char1 = CAST(f_int1 AS CHAR),
 | 
						|
f_char2 = CAST(f_int1 AS CHAR),
 | 
						|
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
 | 
						|
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
 | 
						|
SET AUTOCOMMIT= 0;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
FROM t0_template source_tab
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check transactions-1 success: 	1
 | 
						|
COMMIT WORK;
 | 
						|
	
 | 
						|
# check transactions-2 success: 	1
 | 
						|
ROLLBACK WORK;
 | 
						|
	
 | 
						|
# check transactions-3 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
ROLLBACK WORK;
 | 
						|
	
 | 
						|
# check transactions-4 success: 	1
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
FROM t0_template source_tab
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check transactions-5 success: 	1
 | 
						|
ROLLBACK WORK;
 | 
						|
Warnings:
 | 
						|
Warning	1196	Some non-transactional changed tables couldn't be rolled back
 | 
						|
	
 | 
						|
# check transactions-6 success: 	1
 | 
						|
# INFO: Storage engine used for t1 seems to be not transactional.
 | 
						|
COMMIT;
 | 
						|
	
 | 
						|
# check transactions-7 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
SET @@session.sql_mode = 'traditional';
 | 
						|
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
 | 
						|
'', '', 'was inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
ERROR 22012: Division by 0
 | 
						|
COMMIT;
 | 
						|
	
 | 
						|
# check transactions-8 success: 	1
 | 
						|
# INFO: Storage engine used for t1 seems to be unable to revert
 | 
						|
#       changes made by the failing statement.
 | 
						|
SET @@session.sql_mode = '';
 | 
						|
SET AUTOCOMMIT= 1;
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
 | 
						|
	
 | 
						|
# check special-1 success: 	1
 | 
						|
UPDATE t1 SET f_charbig = '';
 | 
						|
	
 | 
						|
# check special-2 success: 	1
 | 
						|
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
 | 
						|
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
	
 | 
						|
# check trigger-1 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
	
 | 
						|
# check trigger-2 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-3 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-4 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-5 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-6 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-7 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-8 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = old.f_int1 + @max_row,
 | 
						|
new.f_int2 = old.f_int2 - @max_row,
 | 
						|
new.f_charbig = '####updated per update trigger####';
 | 
						|
END|
 | 
						|
UPDATE t1
 | 
						|
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
 | 
						|
f_charbig = '####updated per update statement itself####';
 | 
						|
	
 | 
						|
# check trigger-9 success: 	1
 | 
						|
DROP TRIGGER trg_2;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===');
 | 
						|
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = new.f_int1 + @max_row,
 | 
						|
new.f_int2 = new.f_int2 - @max_row,
 | 
						|
new.f_charbig = '####updated per update trigger####';
 | 
						|
END|
 | 
						|
UPDATE t1
 | 
						|
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
 | 
						|
f_charbig = '####updated per update statement itself####';
 | 
						|
	
 | 
						|
# check trigger-10 success: 	1
 | 
						|
DROP TRIGGER trg_2;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===');
 | 
						|
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = @my_max1 + @counter,
 | 
						|
new.f_int2 = @my_min2 - @counter,
 | 
						|
new.f_charbig = '####updated per insert trigger####';
 | 
						|
SET @counter = @counter + 1;
 | 
						|
END|
 | 
						|
SET @counter = 1;
 | 
						|
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
 | 
						|
ORDER BY f_int1;
 | 
						|
DROP TRIGGER trg_3;
 | 
						|
	
 | 
						|
# check trigger-11 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_charbig = '####updated per insert trigger####';
 | 
						|
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = @my_max1 + @counter,
 | 
						|
new.f_int2 = @my_min2 - @counter,
 | 
						|
new.f_charbig = '####updated per insert trigger####';
 | 
						|
SET @counter = @counter + 1;
 | 
						|
END|
 | 
						|
SET @counter = 1;
 | 
						|
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
 | 
						|
INSERT INTO t1 (f_char1, f_char2, f_charbig)
 | 
						|
SELECT CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
 | 
						|
ORDER BY f_int1;
 | 
						|
DROP TRIGGER trg_3;
 | 
						|
	
 | 
						|
# check trigger-12 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_charbig = '####updated per insert trigger####';
 | 
						|
ANALYZE  TABLE t1;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	analyze	status	Engine-independent statistics collected
 | 
						|
test.t1	analyze	status	OK
 | 
						|
CHECK    TABLE t1 EXTENDED;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	check	status	OK
 | 
						|
CHECKSUM TABLE t1 EXTENDED;
 | 
						|
Table	Checksum
 | 
						|
test.t1	<some_value>
 | 
						|
OPTIMIZE TABLE t1;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	optimize	status	OK
 | 
						|
# check layout success:    1
 | 
						|
REPAIR   TABLE t1 EXTENDED;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	repair	status	OK
 | 
						|
# check layout success:    1
 | 
						|
TRUNCATE t1;
 | 
						|
	
 | 
						|
# check TRUNCATE success: 	1
 | 
						|
# check layout success:    1
 | 
						|
# End usability test (inc/partition_check.inc)
 | 
						|
DROP TABLE t1;
 | 
						|
CREATE TABLE t1 (
 | 
						|
f_int1 INTEGER DEFAULT 0,
 | 
						|
f_int2 INTEGER DEFAULT 0,
 | 
						|
f_char1 CHAR(20),
 | 
						|
f_char2 CHAR(20),
 | 
						|
f_charbig VARCHAR(1000)
 | 
						|
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
 | 
						|
)
 | 
						|
PARTITION BY LIST(ABS(MOD(f_int1,2)))
 | 
						|
SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3
 | 
						|
(PARTITION part1 VALUES IN (0)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION part2 VALUES IN (1)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION part3 VALUES IN (NULL)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir');
 | 
						|
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
 | 
						|
# Start usability test (inc/partition_check.inc)
 | 
						|
create_command
 | 
						|
SHOW CREATE TABLE t1;
 | 
						|
Table	Create Table
 | 
						|
t1	CREATE TABLE `t1` (
 | 
						|
  `f_int1` int(11) DEFAULT 0,
 | 
						|
  `f_int2` int(11) DEFAULT 0,
 | 
						|
  `f_char1` char(20) DEFAULT NULL,
 | 
						|
  `f_char2` char(20) DEFAULT NULL,
 | 
						|
  `f_charbig` varchar(1000) DEFAULT NULL,
 | 
						|
  UNIQUE KEY `uidx1` (`f_int1`,`f_int2`),
 | 
						|
  UNIQUE KEY `uidx2` (`f_int2`,`f_int1`)
 | 
						|
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | 
						|
 PARTITION BY LIST (abs(`f_int1` MOD 2))
 | 
						|
SUBPARTITION BY KEY (`f_int2`)
 | 
						|
SUBPARTITIONS 3
 | 
						|
(PARTITION `part1` VALUES IN (0) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `part2` VALUES IN (1) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `part3` VALUES IN (NULL) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM)
 | 
						|
 | 
						|
unified filelist
 | 
						|
t1#P#part1#SP#part1sp0.MYD
 | 
						|
t1#P#part1#SP#part1sp0.MYI
 | 
						|
t1#P#part1#SP#part1sp1.MYD
 | 
						|
t1#P#part1#SP#part1sp1.MYI
 | 
						|
t1#P#part1#SP#part1sp2.MYD
 | 
						|
t1#P#part1#SP#part1sp2.MYI
 | 
						|
t1#P#part2#SP#part2sp0.MYD
 | 
						|
t1#P#part2#SP#part2sp0.MYI
 | 
						|
t1#P#part2#SP#part2sp1.MYD
 | 
						|
t1#P#part2#SP#part2sp1.MYI
 | 
						|
t1#P#part2#SP#part2sp2.MYD
 | 
						|
t1#P#part2#SP#part2sp2.MYI
 | 
						|
t1#P#part3#SP#part3sp0.MYD
 | 
						|
t1#P#part3#SP#part3sp0.MYI
 | 
						|
t1#P#part3#SP#part3sp1.MYD
 | 
						|
t1#P#part3#SP#part3sp1.MYI
 | 
						|
t1#P#part3#SP#part3sp2.MYD
 | 
						|
t1#P#part3#SP#part3sp2.MYI
 | 
						|
t1.frm
 | 
						|
t1.par
 | 
						|
t1#P#part1#SP#part1sp0.MYD
 | 
						|
t1#P#part1#SP#part1sp1.MYD
 | 
						|
t1#P#part1#SP#part1sp2.MYD
 | 
						|
t1#P#part2#SP#part2sp0.MYD
 | 
						|
t1#P#part2#SP#part2sp1.MYD
 | 
						|
t1#P#part2#SP#part2sp2.MYD
 | 
						|
t1#P#part3#SP#part3sp0.MYD
 | 
						|
t1#P#part3#SP#part3sp1.MYD
 | 
						|
t1#P#part3#SP#part3sp2.MYD
 | 
						|
t1#P#part1#SP#part1sp0.MYI
 | 
						|
t1#P#part1#SP#part1sp1.MYI
 | 
						|
t1#P#part1#SP#part1sp2.MYI
 | 
						|
t1#P#part2#SP#part2sp0.MYI
 | 
						|
t1#P#part2#SP#part2sp1.MYI
 | 
						|
t1#P#part2#SP#part2sp2.MYI
 | 
						|
t1#P#part3#SP#part3sp0.MYI
 | 
						|
t1#P#part3#SP#part3sp1.MYI
 | 
						|
t1#P#part3#SP#part3sp2.MYI
 | 
						|
 | 
						|
# check prerequisites-1 success:    1
 | 
						|
# check COUNT(*) success:    1
 | 
						|
# check MIN/MAX(f_int1) success:    1
 | 
						|
# check MIN/MAX(f_int2) success:    1
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
 | 
						|
WHERE f_int1 IN (2,3);
 | 
						|
ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
 | 
						|
# check prerequisites-3 success:    1
 | 
						|
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
 | 
						|
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
 | 
						|
WHERE f_int1 IN (2,3);
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'delete me';
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
 | 
						|
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
 | 
						|
WHERE f_int1 IN (2,3);
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'delete me';
 | 
						|
# check read via f_int1 success: 1
 | 
						|
# check read via f_int2 success: 1
 | 
						|
	
 | 
						|
# check multiple-1 success: 	1
 | 
						|
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
 | 
						|
	
 | 
						|
# check multiple-2 success: 	1
 | 
						|
INSERT INTO t1 SELECT * FROM t0_template
 | 
						|
WHERE MOD(f_int1,3) = 0;
 | 
						|
	
 | 
						|
# check multiple-3 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = f_int1 + @max_row
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
 | 
						|
AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check multiple-4 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
 | 
						|
AND @max_row_div2 + @max_row_div4 + @max_row;
 | 
						|
	
 | 
						|
# check multiple-5 success: 	1
 | 
						|
SELECT COUNT(*) INTO @try_count FROM t0_template
 | 
						|
WHERE MOD(f_int1,3) = 0
 | 
						|
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
 | 
						|
SELECT COUNT(*) INTO @clash_count
 | 
						|
FROM t1 INNER JOIN t0_template USING(f_int1)
 | 
						|
WHERE MOD(f_int1,3) = 0
 | 
						|
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
 | 
						|
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = @cur_value , f_int2 = @cur_value,
 | 
						|
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
 | 
						|
f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-1 success: 	1
 | 
						|
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = @cur_value , f_int2 = @cur_value,
 | 
						|
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
 | 
						|
f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-2 success: 	1
 | 
						|
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
 | 
						|
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
 | 
						|
UPDATE t1 SET f_int1 = @cur_value2
 | 
						|
WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-3 success: 	1
 | 
						|
SET @cur_value1= -1;
 | 
						|
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
 | 
						|
UPDATE t1 SET f_int1 = @cur_value1
 | 
						|
WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-4 success: 	1
 | 
						|
SELECT MAX(f_int1) INTO @cur_value FROM t1;
 | 
						|
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-5 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-6 success: 	1
 | 
						|
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
 | 
						|
	
 | 
						|
# check single-7 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
 | 
						|
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
 | 
						|
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
 | 
						|
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
 | 
						|
f_charbig = '#NULL#';
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = NULL , f_int2 = -@max_row,
 | 
						|
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
 | 
						|
f_charbig = '#NULL#';
 | 
						|
# check null success:    1
 | 
						|
	
 | 
						|
# check null-1 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = -@max_row
 | 
						|
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-2 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = NULL
 | 
						|
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-3 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-4 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 = 0 AND f_int2 = 0
 | 
						|
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
 | 
						|
AND f_charbig = '#NULL#';
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
   FROM t0_template source_tab
 | 
						|
WHERE MOD(f_int1,3) = 0
 | 
						|
AND f_int1 BETWEEN @max_row_div2 AND @max_row
 | 
						|
ON DUPLICATE KEY
 | 
						|
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
 | 
						|
f_int2 = 2 * @max_row + source_tab.f_int1,
 | 
						|
f_charbig = 'was updated';
 | 
						|
	
 | 
						|
# check unique-1-a success: 	1
 | 
						|
	
 | 
						|
# check unique-1-b success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===')
 | 
						|
WHERE f_charbig = 'was updated';
 | 
						|
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
 | 
						|
   FROM t0_template source_tab
 | 
						|
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
 | 
						|
	
 | 
						|
# check replace success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
 | 
						|
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
 | 
						|
UPDATE t1 SET f_int2 = f_int1,
 | 
						|
f_char1 = CAST(f_int1 AS CHAR),
 | 
						|
f_char2 = CAST(f_int1 AS CHAR),
 | 
						|
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
 | 
						|
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
 | 
						|
SET AUTOCOMMIT= 0;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
FROM t0_template source_tab
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check transactions-1 success: 	1
 | 
						|
COMMIT WORK;
 | 
						|
	
 | 
						|
# check transactions-2 success: 	1
 | 
						|
ROLLBACK WORK;
 | 
						|
	
 | 
						|
# check transactions-3 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
ROLLBACK WORK;
 | 
						|
	
 | 
						|
# check transactions-4 success: 	1
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
FROM t0_template source_tab
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check transactions-5 success: 	1
 | 
						|
ROLLBACK WORK;
 | 
						|
Warnings:
 | 
						|
Warning	1196	Some non-transactional changed tables couldn't be rolled back
 | 
						|
	
 | 
						|
# check transactions-6 success: 	1
 | 
						|
# INFO: Storage engine used for t1 seems to be not transactional.
 | 
						|
COMMIT;
 | 
						|
	
 | 
						|
# check transactions-7 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
SET @@session.sql_mode = 'traditional';
 | 
						|
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
 | 
						|
'', '', 'was inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
ERROR 22012: Division by 0
 | 
						|
COMMIT;
 | 
						|
	
 | 
						|
# check transactions-8 success: 	1
 | 
						|
# INFO: Storage engine used for t1 seems to be unable to revert
 | 
						|
#       changes made by the failing statement.
 | 
						|
SET @@session.sql_mode = '';
 | 
						|
SET AUTOCOMMIT= 1;
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
 | 
						|
	
 | 
						|
# check special-1 success: 	1
 | 
						|
UPDATE t1 SET f_charbig = '';
 | 
						|
	
 | 
						|
# check special-2 success: 	1
 | 
						|
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
 | 
						|
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
	
 | 
						|
# check trigger-1 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
	
 | 
						|
# check trigger-2 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-3 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-4 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-5 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-6 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-7 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-8 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = old.f_int1 + @max_row,
 | 
						|
new.f_int2 = old.f_int2 - @max_row,
 | 
						|
new.f_charbig = '####updated per update trigger####';
 | 
						|
END|
 | 
						|
UPDATE t1
 | 
						|
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
 | 
						|
f_charbig = '####updated per update statement itself####';
 | 
						|
	
 | 
						|
# check trigger-9 success: 	1
 | 
						|
DROP TRIGGER trg_2;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===');
 | 
						|
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = new.f_int1 + @max_row,
 | 
						|
new.f_int2 = new.f_int2 - @max_row,
 | 
						|
new.f_charbig = '####updated per update trigger####';
 | 
						|
END|
 | 
						|
UPDATE t1
 | 
						|
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
 | 
						|
f_charbig = '####updated per update statement itself####';
 | 
						|
	
 | 
						|
# check trigger-10 success: 	1
 | 
						|
DROP TRIGGER trg_2;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===');
 | 
						|
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = @my_max1 + @counter,
 | 
						|
new.f_int2 = @my_min2 - @counter,
 | 
						|
new.f_charbig = '####updated per insert trigger####';
 | 
						|
SET @counter = @counter + 1;
 | 
						|
END|
 | 
						|
SET @counter = 1;
 | 
						|
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
 | 
						|
ORDER BY f_int1;
 | 
						|
DROP TRIGGER trg_3;
 | 
						|
	
 | 
						|
# check trigger-11 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_charbig = '####updated per insert trigger####';
 | 
						|
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = @my_max1 + @counter,
 | 
						|
new.f_int2 = @my_min2 - @counter,
 | 
						|
new.f_charbig = '####updated per insert trigger####';
 | 
						|
SET @counter = @counter + 1;
 | 
						|
END|
 | 
						|
SET @counter = 1;
 | 
						|
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
 | 
						|
INSERT INTO t1 (f_char1, f_char2, f_charbig)
 | 
						|
SELECT CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
 | 
						|
ORDER BY f_int1;
 | 
						|
DROP TRIGGER trg_3;
 | 
						|
	
 | 
						|
# check trigger-12 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_charbig = '####updated per insert trigger####';
 | 
						|
ANALYZE  TABLE t1;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	analyze	status	Engine-independent statistics collected
 | 
						|
test.t1	analyze	status	OK
 | 
						|
CHECK    TABLE t1 EXTENDED;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	check	status	OK
 | 
						|
CHECKSUM TABLE t1 EXTENDED;
 | 
						|
Table	Checksum
 | 
						|
test.t1	<some_value>
 | 
						|
OPTIMIZE TABLE t1;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	optimize	status	OK
 | 
						|
# check layout success:    1
 | 
						|
REPAIR   TABLE t1 EXTENDED;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	repair	status	OK
 | 
						|
# check layout success:    1
 | 
						|
TRUNCATE t1;
 | 
						|
	
 | 
						|
# check TRUNCATE success: 	1
 | 
						|
# check layout success:    1
 | 
						|
# End usability test (inc/partition_check.inc)
 | 
						|
DROP TABLE t1;
 | 
						|
#========================================================================
 | 
						|
# 5 use partition_directory with DATA/INDEX DIRECTORY
 | 
						|
#========================================================================
 | 
						|
DROP TABLE IF EXISTS t1;
 | 
						|
CREATE TABLE t1 (
 | 
						|
f_int1 INTEGER DEFAULT 0,
 | 
						|
f_int2 INTEGER DEFAULT 0,
 | 
						|
f_char1 CHAR(20),
 | 
						|
f_char2 CHAR(20),
 | 
						|
f_charbig VARCHAR(1000)
 | 
						|
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
 | 
						|
)
 | 
						|
PARTITION BY HASH(f_int1) PARTITIONS 2
 | 
						|
(PARTITION p1 
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION p2 
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir');
 | 
						|
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
 | 
						|
# Start usability test (inc/partition_check.inc)
 | 
						|
create_command
 | 
						|
SHOW CREATE TABLE t1;
 | 
						|
Table	Create Table
 | 
						|
t1	CREATE TABLE `t1` (
 | 
						|
  `f_int1` int(11) DEFAULT 0,
 | 
						|
  `f_int2` int(11) DEFAULT 0,
 | 
						|
  `f_char1` char(20) DEFAULT NULL,
 | 
						|
  `f_char2` char(20) DEFAULT NULL,
 | 
						|
  `f_charbig` varchar(1000) DEFAULT NULL,
 | 
						|
  UNIQUE KEY `uidx1` (`f_int1`,`f_int2`),
 | 
						|
  UNIQUE KEY `uidx2` (`f_int2`,`f_int1`)
 | 
						|
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | 
						|
 PARTITION BY HASH (`f_int1`)
 | 
						|
(PARTITION `p1` INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `p2` INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM)
 | 
						|
 | 
						|
unified filelist
 | 
						|
t1#P#p1.MYD
 | 
						|
t1#P#p1.MYI
 | 
						|
t1#P#p2.MYD
 | 
						|
t1#P#p2.MYI
 | 
						|
t1.frm
 | 
						|
t1.par
 | 
						|
t1#P#p1.MYI
 | 
						|
t1#P#p2.MYI
 | 
						|
 | 
						|
# check prerequisites-1 success:    1
 | 
						|
# check COUNT(*) success:    1
 | 
						|
# check MIN/MAX(f_int1) success:    1
 | 
						|
# check MIN/MAX(f_int2) success:    1
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
 | 
						|
WHERE f_int1 IN (2,3);
 | 
						|
ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
 | 
						|
# check prerequisites-3 success:    1
 | 
						|
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
 | 
						|
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
 | 
						|
WHERE f_int1 IN (2,3);
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'delete me';
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
 | 
						|
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
 | 
						|
WHERE f_int1 IN (2,3);
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'delete me';
 | 
						|
# check read via f_int1 success: 1
 | 
						|
# check read via f_int2 success: 1
 | 
						|
	
 | 
						|
# check multiple-1 success: 	1
 | 
						|
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
 | 
						|
	
 | 
						|
# check multiple-2 success: 	1
 | 
						|
INSERT INTO t1 SELECT * FROM t0_template
 | 
						|
WHERE MOD(f_int1,3) = 0;
 | 
						|
	
 | 
						|
# check multiple-3 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = f_int1 + @max_row
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
 | 
						|
AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check multiple-4 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
 | 
						|
AND @max_row_div2 + @max_row_div4 + @max_row;
 | 
						|
	
 | 
						|
# check multiple-5 success: 	1
 | 
						|
SELECT COUNT(*) INTO @try_count FROM t0_template
 | 
						|
WHERE MOD(f_int1,3) = 0
 | 
						|
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
 | 
						|
SELECT COUNT(*) INTO @clash_count
 | 
						|
FROM t1 INNER JOIN t0_template USING(f_int1)
 | 
						|
WHERE MOD(f_int1,3) = 0
 | 
						|
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
 | 
						|
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = @cur_value , f_int2 = @cur_value,
 | 
						|
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
 | 
						|
f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-1 success: 	1
 | 
						|
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = @cur_value , f_int2 = @cur_value,
 | 
						|
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
 | 
						|
f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-2 success: 	1
 | 
						|
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
 | 
						|
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
 | 
						|
UPDATE t1 SET f_int1 = @cur_value2
 | 
						|
WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-3 success: 	1
 | 
						|
SET @cur_value1= -1;
 | 
						|
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
 | 
						|
UPDATE t1 SET f_int1 = @cur_value1
 | 
						|
WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-4 success: 	1
 | 
						|
SELECT MAX(f_int1) INTO @cur_value FROM t1;
 | 
						|
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-5 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-6 success: 	1
 | 
						|
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
 | 
						|
	
 | 
						|
# check single-7 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
 | 
						|
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
 | 
						|
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
 | 
						|
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
 | 
						|
f_charbig = '#NULL#';
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = NULL , f_int2 = -@max_row,
 | 
						|
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
 | 
						|
f_charbig = '#NULL#';
 | 
						|
# check null success:    1
 | 
						|
	
 | 
						|
# check null-1 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = -@max_row
 | 
						|
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-2 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = NULL
 | 
						|
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-3 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-4 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 = 0 AND f_int2 = 0
 | 
						|
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
 | 
						|
AND f_charbig = '#NULL#';
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
   FROM t0_template source_tab
 | 
						|
WHERE MOD(f_int1,3) = 0
 | 
						|
AND f_int1 BETWEEN @max_row_div2 AND @max_row
 | 
						|
ON DUPLICATE KEY
 | 
						|
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
 | 
						|
f_int2 = 2 * @max_row + source_tab.f_int1,
 | 
						|
f_charbig = 'was updated';
 | 
						|
	
 | 
						|
# check unique-1-a success: 	1
 | 
						|
	
 | 
						|
# check unique-1-b success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===')
 | 
						|
WHERE f_charbig = 'was updated';
 | 
						|
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
 | 
						|
   FROM t0_template source_tab
 | 
						|
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
 | 
						|
	
 | 
						|
# check replace success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
 | 
						|
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
 | 
						|
UPDATE t1 SET f_int2 = f_int1,
 | 
						|
f_char1 = CAST(f_int1 AS CHAR),
 | 
						|
f_char2 = CAST(f_int1 AS CHAR),
 | 
						|
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
 | 
						|
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
 | 
						|
SET AUTOCOMMIT= 0;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
FROM t0_template source_tab
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check transactions-1 success: 	1
 | 
						|
COMMIT WORK;
 | 
						|
	
 | 
						|
# check transactions-2 success: 	1
 | 
						|
ROLLBACK WORK;
 | 
						|
	
 | 
						|
# check transactions-3 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
ROLLBACK WORK;
 | 
						|
	
 | 
						|
# check transactions-4 success: 	1
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
FROM t0_template source_tab
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check transactions-5 success: 	1
 | 
						|
ROLLBACK WORK;
 | 
						|
Warnings:
 | 
						|
Warning	1196	Some non-transactional changed tables couldn't be rolled back
 | 
						|
	
 | 
						|
# check transactions-6 success: 	1
 | 
						|
# INFO: Storage engine used for t1 seems to be not transactional.
 | 
						|
COMMIT;
 | 
						|
	
 | 
						|
# check transactions-7 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
SET @@session.sql_mode = 'traditional';
 | 
						|
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
 | 
						|
'', '', 'was inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
ERROR 22012: Division by 0
 | 
						|
COMMIT;
 | 
						|
	
 | 
						|
# check transactions-8 success: 	1
 | 
						|
# INFO: Storage engine used for t1 seems to be unable to revert
 | 
						|
#       changes made by the failing statement.
 | 
						|
SET @@session.sql_mode = '';
 | 
						|
SET AUTOCOMMIT= 1;
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
 | 
						|
	
 | 
						|
# check special-1 success: 	1
 | 
						|
UPDATE t1 SET f_charbig = '';
 | 
						|
	
 | 
						|
# check special-2 success: 	1
 | 
						|
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
 | 
						|
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
	
 | 
						|
# check trigger-1 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
	
 | 
						|
# check trigger-2 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-3 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-4 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-5 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-6 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-7 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-8 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = old.f_int1 + @max_row,
 | 
						|
new.f_int2 = old.f_int2 - @max_row,
 | 
						|
new.f_charbig = '####updated per update trigger####';
 | 
						|
END|
 | 
						|
UPDATE t1
 | 
						|
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
 | 
						|
f_charbig = '####updated per update statement itself####';
 | 
						|
	
 | 
						|
# check trigger-9 success: 	1
 | 
						|
DROP TRIGGER trg_2;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===');
 | 
						|
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = new.f_int1 + @max_row,
 | 
						|
new.f_int2 = new.f_int2 - @max_row,
 | 
						|
new.f_charbig = '####updated per update trigger####';
 | 
						|
END|
 | 
						|
UPDATE t1
 | 
						|
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
 | 
						|
f_charbig = '####updated per update statement itself####';
 | 
						|
	
 | 
						|
# check trigger-10 success: 	1
 | 
						|
DROP TRIGGER trg_2;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===');
 | 
						|
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = @my_max1 + @counter,
 | 
						|
new.f_int2 = @my_min2 - @counter,
 | 
						|
new.f_charbig = '####updated per insert trigger####';
 | 
						|
SET @counter = @counter + 1;
 | 
						|
END|
 | 
						|
SET @counter = 1;
 | 
						|
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
 | 
						|
ORDER BY f_int1;
 | 
						|
DROP TRIGGER trg_3;
 | 
						|
	
 | 
						|
# check trigger-11 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_charbig = '####updated per insert trigger####';
 | 
						|
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = @my_max1 + @counter,
 | 
						|
new.f_int2 = @my_min2 - @counter,
 | 
						|
new.f_charbig = '####updated per insert trigger####';
 | 
						|
SET @counter = @counter + 1;
 | 
						|
END|
 | 
						|
SET @counter = 1;
 | 
						|
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
 | 
						|
INSERT INTO t1 (f_char1, f_char2, f_charbig)
 | 
						|
SELECT CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
 | 
						|
ORDER BY f_int1;
 | 
						|
DROP TRIGGER trg_3;
 | 
						|
	
 | 
						|
# check trigger-12 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_charbig = '####updated per insert trigger####';
 | 
						|
ANALYZE  TABLE t1;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	analyze	status	Engine-independent statistics collected
 | 
						|
test.t1	analyze	status	OK
 | 
						|
CHECK    TABLE t1 EXTENDED;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	check	status	OK
 | 
						|
CHECKSUM TABLE t1 EXTENDED;
 | 
						|
Table	Checksum
 | 
						|
test.t1	<some_value>
 | 
						|
OPTIMIZE TABLE t1;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	optimize	status	OK
 | 
						|
# check layout success:    1
 | 
						|
REPAIR   TABLE t1 EXTENDED;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	repair	status	OK
 | 
						|
# check layout success:    1
 | 
						|
TRUNCATE t1;
 | 
						|
	
 | 
						|
# check TRUNCATE success: 	1
 | 
						|
# check layout success:    1
 | 
						|
# End usability test (inc/partition_check.inc)
 | 
						|
DROP TABLE t1;
 | 
						|
CREATE TABLE t1 (
 | 
						|
f_int1 INTEGER DEFAULT 0,
 | 
						|
f_int2 INTEGER DEFAULT 0,
 | 
						|
f_char1 CHAR(20),
 | 
						|
f_char2 CHAR(20),
 | 
						|
f_charbig VARCHAR(1000)
 | 
						|
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
 | 
						|
)
 | 
						|
PARTITION BY HASH(f_int1) PARTITIONS 5
 | 
						|
(PARTITION p1
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir',
 | 
						|
PARTITION p2
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION p3
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION p4,
 | 
						|
PARTITION p5
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir');
 | 
						|
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
 | 
						|
# Start usability test (inc/partition_check.inc)
 | 
						|
create_command
 | 
						|
SHOW CREATE TABLE t1;
 | 
						|
Table	Create Table
 | 
						|
t1	CREATE TABLE `t1` (
 | 
						|
  `f_int1` int(11) DEFAULT 0,
 | 
						|
  `f_int2` int(11) DEFAULT 0,
 | 
						|
  `f_char1` char(20) DEFAULT NULL,
 | 
						|
  `f_char2` char(20) DEFAULT NULL,
 | 
						|
  `f_charbig` varchar(1000) DEFAULT NULL,
 | 
						|
  UNIQUE KEY `uidx1` (`f_int1`,`f_int2`),
 | 
						|
  UNIQUE KEY `uidx2` (`f_int2`,`f_int1`)
 | 
						|
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | 
						|
 PARTITION BY HASH (`f_int1`)
 | 
						|
(PARTITION `p1` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `p2` INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `p3` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `p4` ENGINE = MyISAM,
 | 
						|
 PARTITION `p5` INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM)
 | 
						|
 | 
						|
unified filelist
 | 
						|
t1#P#p1.MYD
 | 
						|
t1#P#p1.MYI
 | 
						|
t1#P#p2.MYD
 | 
						|
t1#P#p2.MYI
 | 
						|
t1#P#p3.MYD
 | 
						|
t1#P#p3.MYI
 | 
						|
t1#P#p4.MYD
 | 
						|
t1#P#p4.MYI
 | 
						|
t1#P#p5.MYD
 | 
						|
t1#P#p5.MYI
 | 
						|
t1.frm
 | 
						|
t1.par
 | 
						|
t1#P#p1.MYD
 | 
						|
t1#P#p3.MYD
 | 
						|
t1#P#p2.MYI
 | 
						|
t1#P#p3.MYI
 | 
						|
t1#P#p5.MYI
 | 
						|
 | 
						|
# check prerequisites-1 success:    1
 | 
						|
# check COUNT(*) success:    1
 | 
						|
# check MIN/MAX(f_int1) success:    1
 | 
						|
# check MIN/MAX(f_int2) success:    1
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
 | 
						|
WHERE f_int1 IN (2,3);
 | 
						|
ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
 | 
						|
# check prerequisites-3 success:    1
 | 
						|
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
 | 
						|
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
 | 
						|
WHERE f_int1 IN (2,3);
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'delete me';
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
 | 
						|
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
 | 
						|
WHERE f_int1 IN (2,3);
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'delete me';
 | 
						|
# check read via f_int1 success: 1
 | 
						|
# check read via f_int2 success: 1
 | 
						|
	
 | 
						|
# check multiple-1 success: 	1
 | 
						|
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
 | 
						|
	
 | 
						|
# check multiple-2 success: 	1
 | 
						|
INSERT INTO t1 SELECT * FROM t0_template
 | 
						|
WHERE MOD(f_int1,3) = 0;
 | 
						|
	
 | 
						|
# check multiple-3 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = f_int1 + @max_row
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
 | 
						|
AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check multiple-4 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
 | 
						|
AND @max_row_div2 + @max_row_div4 + @max_row;
 | 
						|
	
 | 
						|
# check multiple-5 success: 	1
 | 
						|
SELECT COUNT(*) INTO @try_count FROM t0_template
 | 
						|
WHERE MOD(f_int1,3) = 0
 | 
						|
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
 | 
						|
SELECT COUNT(*) INTO @clash_count
 | 
						|
FROM t1 INNER JOIN t0_template USING(f_int1)
 | 
						|
WHERE MOD(f_int1,3) = 0
 | 
						|
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
 | 
						|
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = @cur_value , f_int2 = @cur_value,
 | 
						|
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
 | 
						|
f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-1 success: 	1
 | 
						|
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = @cur_value , f_int2 = @cur_value,
 | 
						|
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
 | 
						|
f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-2 success: 	1
 | 
						|
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
 | 
						|
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
 | 
						|
UPDATE t1 SET f_int1 = @cur_value2
 | 
						|
WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-3 success: 	1
 | 
						|
SET @cur_value1= -1;
 | 
						|
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
 | 
						|
UPDATE t1 SET f_int1 = @cur_value1
 | 
						|
WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-4 success: 	1
 | 
						|
SELECT MAX(f_int1) INTO @cur_value FROM t1;
 | 
						|
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-5 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-6 success: 	1
 | 
						|
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
 | 
						|
	
 | 
						|
# check single-7 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
 | 
						|
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
 | 
						|
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
 | 
						|
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
 | 
						|
f_charbig = '#NULL#';
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = NULL , f_int2 = -@max_row,
 | 
						|
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
 | 
						|
f_charbig = '#NULL#';
 | 
						|
# check null success:    1
 | 
						|
	
 | 
						|
# check null-1 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = -@max_row
 | 
						|
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-2 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = NULL
 | 
						|
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-3 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-4 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 = 0 AND f_int2 = 0
 | 
						|
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
 | 
						|
AND f_charbig = '#NULL#';
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
   FROM t0_template source_tab
 | 
						|
WHERE MOD(f_int1,3) = 0
 | 
						|
AND f_int1 BETWEEN @max_row_div2 AND @max_row
 | 
						|
ON DUPLICATE KEY
 | 
						|
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
 | 
						|
f_int2 = 2 * @max_row + source_tab.f_int1,
 | 
						|
f_charbig = 'was updated';
 | 
						|
	
 | 
						|
# check unique-1-a success: 	1
 | 
						|
	
 | 
						|
# check unique-1-b success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===')
 | 
						|
WHERE f_charbig = 'was updated';
 | 
						|
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
 | 
						|
   FROM t0_template source_tab
 | 
						|
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
 | 
						|
	
 | 
						|
# check replace success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
 | 
						|
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
 | 
						|
UPDATE t1 SET f_int2 = f_int1,
 | 
						|
f_char1 = CAST(f_int1 AS CHAR),
 | 
						|
f_char2 = CAST(f_int1 AS CHAR),
 | 
						|
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
 | 
						|
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
 | 
						|
SET AUTOCOMMIT= 0;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
FROM t0_template source_tab
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check transactions-1 success: 	1
 | 
						|
COMMIT WORK;
 | 
						|
	
 | 
						|
# check transactions-2 success: 	1
 | 
						|
ROLLBACK WORK;
 | 
						|
	
 | 
						|
# check transactions-3 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
ROLLBACK WORK;
 | 
						|
	
 | 
						|
# check transactions-4 success: 	1
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
FROM t0_template source_tab
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check transactions-5 success: 	1
 | 
						|
ROLLBACK WORK;
 | 
						|
Warnings:
 | 
						|
Warning	1196	Some non-transactional changed tables couldn't be rolled back
 | 
						|
	
 | 
						|
# check transactions-6 success: 	1
 | 
						|
# INFO: Storage engine used for t1 seems to be not transactional.
 | 
						|
COMMIT;
 | 
						|
	
 | 
						|
# check transactions-7 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
SET @@session.sql_mode = 'traditional';
 | 
						|
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
 | 
						|
'', '', 'was inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
ERROR 22012: Division by 0
 | 
						|
COMMIT;
 | 
						|
	
 | 
						|
# check transactions-8 success: 	1
 | 
						|
# INFO: Storage engine used for t1 seems to be unable to revert
 | 
						|
#       changes made by the failing statement.
 | 
						|
SET @@session.sql_mode = '';
 | 
						|
SET AUTOCOMMIT= 1;
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
 | 
						|
	
 | 
						|
# check special-1 success: 	1
 | 
						|
UPDATE t1 SET f_charbig = '';
 | 
						|
	
 | 
						|
# check special-2 success: 	1
 | 
						|
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
 | 
						|
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
	
 | 
						|
# check trigger-1 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
	
 | 
						|
# check trigger-2 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-3 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-4 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-5 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-6 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-7 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-8 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = old.f_int1 + @max_row,
 | 
						|
new.f_int2 = old.f_int2 - @max_row,
 | 
						|
new.f_charbig = '####updated per update trigger####';
 | 
						|
END|
 | 
						|
UPDATE t1
 | 
						|
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
 | 
						|
f_charbig = '####updated per update statement itself####';
 | 
						|
	
 | 
						|
# check trigger-9 success: 	1
 | 
						|
DROP TRIGGER trg_2;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===');
 | 
						|
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = new.f_int1 + @max_row,
 | 
						|
new.f_int2 = new.f_int2 - @max_row,
 | 
						|
new.f_charbig = '####updated per update trigger####';
 | 
						|
END|
 | 
						|
UPDATE t1
 | 
						|
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
 | 
						|
f_charbig = '####updated per update statement itself####';
 | 
						|
	
 | 
						|
# check trigger-10 success: 	1
 | 
						|
DROP TRIGGER trg_2;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===');
 | 
						|
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = @my_max1 + @counter,
 | 
						|
new.f_int2 = @my_min2 - @counter,
 | 
						|
new.f_charbig = '####updated per insert trigger####';
 | 
						|
SET @counter = @counter + 1;
 | 
						|
END|
 | 
						|
SET @counter = 1;
 | 
						|
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
 | 
						|
ORDER BY f_int1;
 | 
						|
DROP TRIGGER trg_3;
 | 
						|
	
 | 
						|
# check trigger-11 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_charbig = '####updated per insert trigger####';
 | 
						|
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = @my_max1 + @counter,
 | 
						|
new.f_int2 = @my_min2 - @counter,
 | 
						|
new.f_charbig = '####updated per insert trigger####';
 | 
						|
SET @counter = @counter + 1;
 | 
						|
END|
 | 
						|
SET @counter = 1;
 | 
						|
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
 | 
						|
INSERT INTO t1 (f_char1, f_char2, f_charbig)
 | 
						|
SELECT CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
 | 
						|
ORDER BY f_int1;
 | 
						|
DROP TRIGGER trg_3;
 | 
						|
	
 | 
						|
# check trigger-12 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_charbig = '####updated per insert trigger####';
 | 
						|
ANALYZE  TABLE t1;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	analyze	status	Engine-independent statistics collected
 | 
						|
test.t1	analyze	status	OK
 | 
						|
CHECK    TABLE t1 EXTENDED;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	check	status	OK
 | 
						|
CHECKSUM TABLE t1 EXTENDED;
 | 
						|
Table	Checksum
 | 
						|
test.t1	<some_value>
 | 
						|
OPTIMIZE TABLE t1;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	optimize	status	OK
 | 
						|
# check layout success:    1
 | 
						|
REPAIR   TABLE t1 EXTENDED;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	repair	status	OK
 | 
						|
# check layout success:    1
 | 
						|
TRUNCATE t1;
 | 
						|
	
 | 
						|
# check TRUNCATE success: 	1
 | 
						|
# check layout success:    1
 | 
						|
# End usability test (inc/partition_check.inc)
 | 
						|
DROP TABLE t1;
 | 
						|
CREATE TABLE t1 (
 | 
						|
f_int1 INTEGER DEFAULT 0,
 | 
						|
f_int2 INTEGER DEFAULT 0,
 | 
						|
f_char1 CHAR(20),
 | 
						|
f_char2 CHAR(20),
 | 
						|
f_charbig VARCHAR(1000)
 | 
						|
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
 | 
						|
)
 | 
						|
PARTITION BY LIST(MOD(f_int1,4))
 | 
						|
(PARTITION part_3 VALUES IN (-3)
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION part_2 VALUES IN (-2)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir',
 | 
						|
PARTITION part_1 VALUES IN (-1)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION part_N VALUES IN (NULL)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir',
 | 
						|
PARTITION part0 VALUES IN (0)
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION part1 VALUES IN (1)
 | 
						|
,
 | 
						|
PARTITION part2 VALUES IN (2)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir',
 | 
						|
PARTITION part3 VALUES IN (3)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir');
 | 
						|
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
 | 
						|
# Start usability test (inc/partition_check.inc)
 | 
						|
create_command
 | 
						|
SHOW CREATE TABLE t1;
 | 
						|
Table	Create Table
 | 
						|
t1	CREATE TABLE `t1` (
 | 
						|
  `f_int1` int(11) DEFAULT 0,
 | 
						|
  `f_int2` int(11) DEFAULT 0,
 | 
						|
  `f_char1` char(20) DEFAULT NULL,
 | 
						|
  `f_char2` char(20) DEFAULT NULL,
 | 
						|
  `f_charbig` varchar(1000) DEFAULT NULL,
 | 
						|
  UNIQUE KEY `uidx1` (`f_int1`,`f_int2`),
 | 
						|
  UNIQUE KEY `uidx2` (`f_int2`,`f_int1`)
 | 
						|
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | 
						|
 PARTITION BY LIST (`f_int1` MOD 4)
 | 
						|
(PARTITION `part_3` VALUES IN (-3) INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `part_2` VALUES IN (-2) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `part_1` VALUES IN (-1) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `part_N` VALUES IN (NULL) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `part0` VALUES IN (0) INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `part1` VALUES IN (1) ENGINE = MyISAM,
 | 
						|
 PARTITION `part2` VALUES IN (2) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `part3` VALUES IN (3) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM)
 | 
						|
 | 
						|
unified filelist
 | 
						|
t1#P#part0.MYD
 | 
						|
t1#P#part0.MYI
 | 
						|
t1#P#part1.MYD
 | 
						|
t1#P#part1.MYI
 | 
						|
t1#P#part2.MYD
 | 
						|
t1#P#part2.MYI
 | 
						|
t1#P#part3.MYD
 | 
						|
t1#P#part3.MYI
 | 
						|
t1#P#part_1.MYD
 | 
						|
t1#P#part_1.MYI
 | 
						|
t1#P#part_2.MYD
 | 
						|
t1#P#part_2.MYI
 | 
						|
t1#P#part_3.MYD
 | 
						|
t1#P#part_3.MYI
 | 
						|
t1#P#part_N.MYD
 | 
						|
t1#P#part_N.MYI
 | 
						|
t1.frm
 | 
						|
t1.par
 | 
						|
t1#P#part2.MYD
 | 
						|
t1#P#part3.MYD
 | 
						|
t1#P#part_1.MYD
 | 
						|
t1#P#part_2.MYD
 | 
						|
t1#P#part_N.MYD
 | 
						|
t1#P#part0.MYI
 | 
						|
t1#P#part3.MYI
 | 
						|
t1#P#part_1.MYI
 | 
						|
t1#P#part_3.MYI
 | 
						|
 | 
						|
# check prerequisites-1 success:    1
 | 
						|
# check COUNT(*) success:    1
 | 
						|
# check MIN/MAX(f_int1) success:    1
 | 
						|
# check MIN/MAX(f_int2) success:    1
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
 | 
						|
WHERE f_int1 IN (2,3);
 | 
						|
ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
 | 
						|
# check prerequisites-3 success:    1
 | 
						|
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
 | 
						|
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
 | 
						|
WHERE f_int1 IN (2,3);
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'delete me';
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
 | 
						|
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
 | 
						|
WHERE f_int1 IN (2,3);
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'delete me';
 | 
						|
# check read via f_int1 success: 1
 | 
						|
# check read via f_int2 success: 1
 | 
						|
	
 | 
						|
# check multiple-1 success: 	1
 | 
						|
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
 | 
						|
	
 | 
						|
# check multiple-2 success: 	1
 | 
						|
INSERT INTO t1 SELECT * FROM t0_template
 | 
						|
WHERE MOD(f_int1,3) = 0;
 | 
						|
	
 | 
						|
# check multiple-3 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = f_int1 + @max_row
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
 | 
						|
AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check multiple-4 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
 | 
						|
AND @max_row_div2 + @max_row_div4 + @max_row;
 | 
						|
	
 | 
						|
# check multiple-5 success: 	1
 | 
						|
SELECT COUNT(*) INTO @try_count FROM t0_template
 | 
						|
WHERE MOD(f_int1,3) = 0
 | 
						|
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
 | 
						|
SELECT COUNT(*) INTO @clash_count
 | 
						|
FROM t1 INNER JOIN t0_template USING(f_int1)
 | 
						|
WHERE MOD(f_int1,3) = 0
 | 
						|
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
 | 
						|
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = @cur_value , f_int2 = @cur_value,
 | 
						|
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
 | 
						|
f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-1 success: 	1
 | 
						|
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = @cur_value , f_int2 = @cur_value,
 | 
						|
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
 | 
						|
f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-2 success: 	1
 | 
						|
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
 | 
						|
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
 | 
						|
UPDATE t1 SET f_int1 = @cur_value2
 | 
						|
WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-3 success: 	1
 | 
						|
SET @cur_value1= -1;
 | 
						|
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
 | 
						|
UPDATE t1 SET f_int1 = @cur_value1
 | 
						|
WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-4 success: 	1
 | 
						|
SELECT MAX(f_int1) INTO @cur_value FROM t1;
 | 
						|
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-5 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-6 success: 	1
 | 
						|
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
 | 
						|
	
 | 
						|
# check single-7 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
 | 
						|
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
 | 
						|
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
 | 
						|
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
 | 
						|
f_charbig = '#NULL#';
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = NULL , f_int2 = -@max_row,
 | 
						|
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
 | 
						|
f_charbig = '#NULL#';
 | 
						|
# check null success:    1
 | 
						|
	
 | 
						|
# check null-1 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = -@max_row
 | 
						|
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-2 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = NULL
 | 
						|
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-3 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-4 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 = 0 AND f_int2 = 0
 | 
						|
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
 | 
						|
AND f_charbig = '#NULL#';
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
   FROM t0_template source_tab
 | 
						|
WHERE MOD(f_int1,3) = 0
 | 
						|
AND f_int1 BETWEEN @max_row_div2 AND @max_row
 | 
						|
ON DUPLICATE KEY
 | 
						|
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
 | 
						|
f_int2 = 2 * @max_row + source_tab.f_int1,
 | 
						|
f_charbig = 'was updated';
 | 
						|
	
 | 
						|
# check unique-1-a success: 	1
 | 
						|
	
 | 
						|
# check unique-1-b success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===')
 | 
						|
WHERE f_charbig = 'was updated';
 | 
						|
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
 | 
						|
   FROM t0_template source_tab
 | 
						|
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
 | 
						|
	
 | 
						|
# check replace success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
 | 
						|
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
 | 
						|
UPDATE t1 SET f_int2 = f_int1,
 | 
						|
f_char1 = CAST(f_int1 AS CHAR),
 | 
						|
f_char2 = CAST(f_int1 AS CHAR),
 | 
						|
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
 | 
						|
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
 | 
						|
SET AUTOCOMMIT= 0;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
FROM t0_template source_tab
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check transactions-1 success: 	1
 | 
						|
COMMIT WORK;
 | 
						|
	
 | 
						|
# check transactions-2 success: 	1
 | 
						|
ROLLBACK WORK;
 | 
						|
	
 | 
						|
# check transactions-3 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
ROLLBACK WORK;
 | 
						|
	
 | 
						|
# check transactions-4 success: 	1
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
FROM t0_template source_tab
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check transactions-5 success: 	1
 | 
						|
ROLLBACK WORK;
 | 
						|
Warnings:
 | 
						|
Warning	1196	Some non-transactional changed tables couldn't be rolled back
 | 
						|
	
 | 
						|
# check transactions-6 success: 	1
 | 
						|
# INFO: Storage engine used for t1 seems to be not transactional.
 | 
						|
COMMIT;
 | 
						|
	
 | 
						|
# check transactions-7 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
SET @@session.sql_mode = 'traditional';
 | 
						|
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
 | 
						|
'', '', 'was inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
ERROR 22012: Division by 0
 | 
						|
COMMIT;
 | 
						|
	
 | 
						|
# check transactions-8 success: 	1
 | 
						|
# INFO: Storage engine used for t1 seems to be unable to revert
 | 
						|
#       changes made by the failing statement.
 | 
						|
SET @@session.sql_mode = '';
 | 
						|
SET AUTOCOMMIT= 1;
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
 | 
						|
	
 | 
						|
# check special-1 success: 	1
 | 
						|
UPDATE t1 SET f_charbig = '';
 | 
						|
	
 | 
						|
# check special-2 success: 	1
 | 
						|
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
 | 
						|
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
	
 | 
						|
# check trigger-1 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
	
 | 
						|
# check trigger-2 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-3 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-4 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-5 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-6 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-7 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-8 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = old.f_int1 + @max_row,
 | 
						|
new.f_int2 = old.f_int2 - @max_row,
 | 
						|
new.f_charbig = '####updated per update trigger####';
 | 
						|
END|
 | 
						|
UPDATE t1
 | 
						|
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
 | 
						|
f_charbig = '####updated per update statement itself####';
 | 
						|
	
 | 
						|
# check trigger-9 success: 	1
 | 
						|
DROP TRIGGER trg_2;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===');
 | 
						|
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = new.f_int1 + @max_row,
 | 
						|
new.f_int2 = new.f_int2 - @max_row,
 | 
						|
new.f_charbig = '####updated per update trigger####';
 | 
						|
END|
 | 
						|
UPDATE t1
 | 
						|
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
 | 
						|
f_charbig = '####updated per update statement itself####';
 | 
						|
	
 | 
						|
# check trigger-10 success: 	1
 | 
						|
DROP TRIGGER trg_2;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===');
 | 
						|
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = @my_max1 + @counter,
 | 
						|
new.f_int2 = @my_min2 - @counter,
 | 
						|
new.f_charbig = '####updated per insert trigger####';
 | 
						|
SET @counter = @counter + 1;
 | 
						|
END|
 | 
						|
SET @counter = 1;
 | 
						|
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
 | 
						|
ORDER BY f_int1;
 | 
						|
DROP TRIGGER trg_3;
 | 
						|
	
 | 
						|
# check trigger-11 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_charbig = '####updated per insert trigger####';
 | 
						|
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = @my_max1 + @counter,
 | 
						|
new.f_int2 = @my_min2 - @counter,
 | 
						|
new.f_charbig = '####updated per insert trigger####';
 | 
						|
SET @counter = @counter + 1;
 | 
						|
END|
 | 
						|
SET @counter = 1;
 | 
						|
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
 | 
						|
INSERT INTO t1 (f_char1, f_char2, f_charbig)
 | 
						|
SELECT CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
 | 
						|
ORDER BY f_int1;
 | 
						|
DROP TRIGGER trg_3;
 | 
						|
	
 | 
						|
# check trigger-12 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_charbig = '####updated per insert trigger####';
 | 
						|
ANALYZE  TABLE t1;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	analyze	status	Engine-independent statistics collected
 | 
						|
test.t1	analyze	status	OK
 | 
						|
CHECK    TABLE t1 EXTENDED;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	check	status	OK
 | 
						|
CHECKSUM TABLE t1 EXTENDED;
 | 
						|
Table	Checksum
 | 
						|
test.t1	<some_value>
 | 
						|
OPTIMIZE TABLE t1;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	optimize	status	OK
 | 
						|
# check layout success:    1
 | 
						|
REPAIR   TABLE t1 EXTENDED;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	repair	status	OK
 | 
						|
# check layout success:    1
 | 
						|
TRUNCATE t1;
 | 
						|
	
 | 
						|
# check TRUNCATE success: 	1
 | 
						|
# check layout success:    1
 | 
						|
# End usability test (inc/partition_check.inc)
 | 
						|
DROP TABLE t1;
 | 
						|
CREATE TABLE t1 (
 | 
						|
f_int1 INTEGER DEFAULT 0,
 | 
						|
f_int2 INTEGER DEFAULT 0,
 | 
						|
f_char1 CHAR(20),
 | 
						|
f_char2 CHAR(20),
 | 
						|
f_charbig VARCHAR(1000)
 | 
						|
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
 | 
						|
)
 | 
						|
PARTITION BY RANGE(f_int1)
 | 
						|
(PARTITION parta VALUES LESS THAN (0)
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION partb VALUES LESS THAN (5)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir',
 | 
						|
PARTITION partc VALUES LESS THAN (10)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION partd VALUES LESS THAN (10 + 5),
 | 
						|
PARTITION parte VALUES LESS THAN (20)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir',
 | 
						|
PARTITION partf VALUES LESS THAN (2147483646)
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir');
 | 
						|
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
 | 
						|
# Start usability test (inc/partition_check.inc)
 | 
						|
create_command
 | 
						|
SHOW CREATE TABLE t1;
 | 
						|
Table	Create Table
 | 
						|
t1	CREATE TABLE `t1` (
 | 
						|
  `f_int1` int(11) DEFAULT 0,
 | 
						|
  `f_int2` int(11) DEFAULT 0,
 | 
						|
  `f_char1` char(20) DEFAULT NULL,
 | 
						|
  `f_char2` char(20) DEFAULT NULL,
 | 
						|
  `f_charbig` varchar(1000) DEFAULT NULL,
 | 
						|
  UNIQUE KEY `uidx1` (`f_int1`,`f_int2`),
 | 
						|
  UNIQUE KEY `uidx2` (`f_int2`,`f_int1`)
 | 
						|
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | 
						|
 PARTITION BY RANGE (`f_int1`)
 | 
						|
(PARTITION `parta` VALUES LESS THAN (0) INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `partb` VALUES LESS THAN (5) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `partc` VALUES LESS THAN (10) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `partd` VALUES LESS THAN (15) ENGINE = MyISAM,
 | 
						|
 PARTITION `parte` VALUES LESS THAN (20) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `partf` VALUES LESS THAN (2147483646) INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM)
 | 
						|
 | 
						|
unified filelist
 | 
						|
t1#P#parta.MYD
 | 
						|
t1#P#parta.MYI
 | 
						|
t1#P#partb.MYD
 | 
						|
t1#P#partb.MYI
 | 
						|
t1#P#partc.MYD
 | 
						|
t1#P#partc.MYI
 | 
						|
t1#P#partd.MYD
 | 
						|
t1#P#partd.MYI
 | 
						|
t1#P#parte.MYD
 | 
						|
t1#P#parte.MYI
 | 
						|
t1#P#partf.MYD
 | 
						|
t1#P#partf.MYI
 | 
						|
t1.frm
 | 
						|
t1.par
 | 
						|
t1#P#partb.MYD
 | 
						|
t1#P#partc.MYD
 | 
						|
t1#P#parte.MYD
 | 
						|
t1#P#parta.MYI
 | 
						|
t1#P#partc.MYI
 | 
						|
t1#P#partf.MYI
 | 
						|
 | 
						|
# check prerequisites-1 success:    1
 | 
						|
# check COUNT(*) success:    1
 | 
						|
# check MIN/MAX(f_int1) success:    1
 | 
						|
# check MIN/MAX(f_int2) success:    1
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
 | 
						|
WHERE f_int1 IN (2,3);
 | 
						|
ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
 | 
						|
# check prerequisites-3 success:    1
 | 
						|
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
 | 
						|
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
 | 
						|
WHERE f_int1 IN (2,3);
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'delete me';
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
 | 
						|
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
 | 
						|
WHERE f_int1 IN (2,3);
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'delete me';
 | 
						|
# check read via f_int1 success: 1
 | 
						|
# check read via f_int2 success: 1
 | 
						|
	
 | 
						|
# check multiple-1 success: 	1
 | 
						|
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
 | 
						|
	
 | 
						|
# check multiple-2 success: 	1
 | 
						|
INSERT INTO t1 SELECT * FROM t0_template
 | 
						|
WHERE MOD(f_int1,3) = 0;
 | 
						|
	
 | 
						|
# check multiple-3 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = f_int1 + @max_row
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
 | 
						|
AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check multiple-4 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
 | 
						|
AND @max_row_div2 + @max_row_div4 + @max_row;
 | 
						|
	
 | 
						|
# check multiple-5 success: 	1
 | 
						|
SELECT COUNT(*) INTO @try_count FROM t0_template
 | 
						|
WHERE MOD(f_int1,3) = 0
 | 
						|
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
 | 
						|
SELECT COUNT(*) INTO @clash_count
 | 
						|
FROM t1 INNER JOIN t0_template USING(f_int1)
 | 
						|
WHERE MOD(f_int1,3) = 0
 | 
						|
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
 | 
						|
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = @cur_value , f_int2 = @cur_value,
 | 
						|
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
 | 
						|
f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-1 success: 	1
 | 
						|
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = @cur_value , f_int2 = @cur_value,
 | 
						|
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
 | 
						|
f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-2 success: 	1
 | 
						|
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
 | 
						|
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
 | 
						|
UPDATE t1 SET f_int1 = @cur_value2
 | 
						|
WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-3 success: 	1
 | 
						|
SET @cur_value1= -1;
 | 
						|
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
 | 
						|
UPDATE t1 SET f_int1 = @cur_value1
 | 
						|
WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-4 success: 	1
 | 
						|
SELECT MAX(f_int1) INTO @cur_value FROM t1;
 | 
						|
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-5 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-6 success: 	1
 | 
						|
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
 | 
						|
ERROR HY000: Table has no partition for value 2147483647
 | 
						|
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
 | 
						|
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
 | 
						|
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
 | 
						|
f_charbig = '#NULL#';
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = NULL , f_int2 = -@max_row,
 | 
						|
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
 | 
						|
f_charbig = '#NULL#';
 | 
						|
# check null success:    1
 | 
						|
	
 | 
						|
# check null-1 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = -@max_row
 | 
						|
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-2 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = NULL
 | 
						|
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-3 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-4 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 = 0 AND f_int2 = 0
 | 
						|
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
 | 
						|
AND f_charbig = '#NULL#';
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
   FROM t0_template source_tab
 | 
						|
WHERE MOD(f_int1,3) = 0
 | 
						|
AND f_int1 BETWEEN @max_row_div2 AND @max_row
 | 
						|
ON DUPLICATE KEY
 | 
						|
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
 | 
						|
f_int2 = 2 * @max_row + source_tab.f_int1,
 | 
						|
f_charbig = 'was updated';
 | 
						|
	
 | 
						|
# check unique-1-a success: 	1
 | 
						|
	
 | 
						|
# check unique-1-b success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===')
 | 
						|
WHERE f_charbig = 'was updated';
 | 
						|
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
 | 
						|
   FROM t0_template source_tab
 | 
						|
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
 | 
						|
	
 | 
						|
# check replace success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
 | 
						|
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
 | 
						|
UPDATE t1 SET f_int2 = f_int1,
 | 
						|
f_char1 = CAST(f_int1 AS CHAR),
 | 
						|
f_char2 = CAST(f_int1 AS CHAR),
 | 
						|
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
 | 
						|
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
 | 
						|
SET AUTOCOMMIT= 0;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
FROM t0_template source_tab
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check transactions-1 success: 	1
 | 
						|
COMMIT WORK;
 | 
						|
	
 | 
						|
# check transactions-2 success: 	1
 | 
						|
ROLLBACK WORK;
 | 
						|
	
 | 
						|
# check transactions-3 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
ROLLBACK WORK;
 | 
						|
	
 | 
						|
# check transactions-4 success: 	1
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
FROM t0_template source_tab
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check transactions-5 success: 	1
 | 
						|
ROLLBACK WORK;
 | 
						|
Warnings:
 | 
						|
Warning	1196	Some non-transactional changed tables couldn't be rolled back
 | 
						|
	
 | 
						|
# check transactions-6 success: 	1
 | 
						|
# INFO: Storage engine used for t1 seems to be not transactional.
 | 
						|
COMMIT;
 | 
						|
	
 | 
						|
# check transactions-7 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
SET @@session.sql_mode = 'traditional';
 | 
						|
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
 | 
						|
'', '', 'was inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
ERROR 22012: Division by 0
 | 
						|
COMMIT;
 | 
						|
	
 | 
						|
# check transactions-8 success: 	1
 | 
						|
# INFO: Storage engine used for t1 seems to be unable to revert
 | 
						|
#       changes made by the failing statement.
 | 
						|
SET @@session.sql_mode = '';
 | 
						|
SET AUTOCOMMIT= 1;
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
 | 
						|
	
 | 
						|
# check special-1 success: 	1
 | 
						|
UPDATE t1 SET f_charbig = '';
 | 
						|
	
 | 
						|
# check special-2 success: 	1
 | 
						|
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
 | 
						|
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
	
 | 
						|
# check trigger-1 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
	
 | 
						|
# check trigger-2 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-3 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-4 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-5 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-6 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-7 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-8 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = old.f_int1 + @max_row,
 | 
						|
new.f_int2 = old.f_int2 - @max_row,
 | 
						|
new.f_charbig = '####updated per update trigger####';
 | 
						|
END|
 | 
						|
UPDATE t1
 | 
						|
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
 | 
						|
f_charbig = '####updated per update statement itself####';
 | 
						|
	
 | 
						|
# check trigger-9 success: 	1
 | 
						|
DROP TRIGGER trg_2;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===');
 | 
						|
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = new.f_int1 + @max_row,
 | 
						|
new.f_int2 = new.f_int2 - @max_row,
 | 
						|
new.f_charbig = '####updated per update trigger####';
 | 
						|
END|
 | 
						|
UPDATE t1
 | 
						|
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
 | 
						|
f_charbig = '####updated per update statement itself####';
 | 
						|
	
 | 
						|
# check trigger-10 success: 	1
 | 
						|
DROP TRIGGER trg_2;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===');
 | 
						|
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = @my_max1 + @counter,
 | 
						|
new.f_int2 = @my_min2 - @counter,
 | 
						|
new.f_charbig = '####updated per insert trigger####';
 | 
						|
SET @counter = @counter + 1;
 | 
						|
END|
 | 
						|
SET @counter = 1;
 | 
						|
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
 | 
						|
ORDER BY f_int1;
 | 
						|
DROP TRIGGER trg_3;
 | 
						|
	
 | 
						|
# check trigger-11 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_charbig = '####updated per insert trigger####';
 | 
						|
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = @my_max1 + @counter,
 | 
						|
new.f_int2 = @my_min2 - @counter,
 | 
						|
new.f_charbig = '####updated per insert trigger####';
 | 
						|
SET @counter = @counter + 1;
 | 
						|
END|
 | 
						|
SET @counter = 1;
 | 
						|
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
 | 
						|
INSERT INTO t1 (f_char1, f_char2, f_charbig)
 | 
						|
SELECT CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
 | 
						|
ORDER BY f_int1;
 | 
						|
DROP TRIGGER trg_3;
 | 
						|
	
 | 
						|
# check trigger-12 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_charbig = '####updated per insert trigger####';
 | 
						|
ANALYZE  TABLE t1;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	analyze	status	Engine-independent statistics collected
 | 
						|
test.t1	analyze	status	OK
 | 
						|
CHECK    TABLE t1 EXTENDED;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	check	status	OK
 | 
						|
CHECKSUM TABLE t1 EXTENDED;
 | 
						|
Table	Checksum
 | 
						|
test.t1	<some_value>
 | 
						|
OPTIMIZE TABLE t1;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	optimize	status	OK
 | 
						|
# check layout success:    1
 | 
						|
REPAIR   TABLE t1 EXTENDED;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	repair	status	OK
 | 
						|
# check layout success:    1
 | 
						|
TRUNCATE t1;
 | 
						|
	
 | 
						|
# check TRUNCATE success: 	1
 | 
						|
# check layout success:    1
 | 
						|
# End usability test (inc/partition_check.inc)
 | 
						|
DROP TABLE t1;
 | 
						|
CREATE TABLE t1 (
 | 
						|
f_int1 INTEGER DEFAULT 0,
 | 
						|
f_int2 INTEGER DEFAULT 0,
 | 
						|
f_char1 CHAR(20),
 | 
						|
f_char2 CHAR(20),
 | 
						|
f_charbig VARCHAR(1000)
 | 
						|
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
 | 
						|
)
 | 
						|
PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
 | 
						|
(PARTITION parta VALUES LESS THAN (0)
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
 | 
						|
PARTITION partb VALUES LESS THAN (5)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir',
 | 
						|
PARTITION partc VALUES LESS THAN (10),
 | 
						|
PARTITION partd VALUES LESS THAN (2147483646)
 | 
						|
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir');
 | 
						|
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
 | 
						|
# Start usability test (inc/partition_check.inc)
 | 
						|
create_command
 | 
						|
SHOW CREATE TABLE t1;
 | 
						|
Table	Create Table
 | 
						|
t1	CREATE TABLE `t1` (
 | 
						|
  `f_int1` int(11) DEFAULT 0,
 | 
						|
  `f_int2` int(11) DEFAULT 0,
 | 
						|
  `f_char1` char(20) DEFAULT NULL,
 | 
						|
  `f_char2` char(20) DEFAULT NULL,
 | 
						|
  `f_charbig` varchar(1000) DEFAULT NULL,
 | 
						|
  UNIQUE KEY `uidx1` (`f_int1`,`f_int2`),
 | 
						|
  UNIQUE KEY `uidx2` (`f_int2`,`f_int1`)
 | 
						|
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | 
						|
 PARTITION BY RANGE (`f_int1` DIV 2)
 | 
						|
SUBPARTITION BY HASH (`f_int1`)
 | 
						|
SUBPARTITIONS 2
 | 
						|
(PARTITION `parta` VALUES LESS THAN (0) INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `partb` VALUES LESS THAN (5) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' ENGINE = MyISAM,
 | 
						|
 PARTITION `partc` VALUES LESS THAN (10) ENGINE = MyISAM,
 | 
						|
 PARTITION `partd` VALUES LESS THAN (2147483646) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM)
 | 
						|
 | 
						|
unified filelist
 | 
						|
t1#P#parta#SP#partasp0.MYD
 | 
						|
t1#P#parta#SP#partasp0.MYI
 | 
						|
t1#P#parta#SP#partasp1.MYD
 | 
						|
t1#P#parta#SP#partasp1.MYI
 | 
						|
t1#P#partb#SP#partbsp0.MYD
 | 
						|
t1#P#partb#SP#partbsp0.MYI
 | 
						|
t1#P#partb#SP#partbsp1.MYD
 | 
						|
t1#P#partb#SP#partbsp1.MYI
 | 
						|
t1#P#partc#SP#partcsp0.MYD
 | 
						|
t1#P#partc#SP#partcsp0.MYI
 | 
						|
t1#P#partc#SP#partcsp1.MYD
 | 
						|
t1#P#partc#SP#partcsp1.MYI
 | 
						|
t1#P#partd#SP#partdsp0.MYD
 | 
						|
t1#P#partd#SP#partdsp0.MYI
 | 
						|
t1#P#partd#SP#partdsp1.MYD
 | 
						|
t1#P#partd#SP#partdsp1.MYI
 | 
						|
t1.frm
 | 
						|
t1.par
 | 
						|
t1#P#partb#SP#partbsp0.MYD
 | 
						|
t1#P#partb#SP#partbsp1.MYD
 | 
						|
t1#P#partd#SP#partdsp0.MYD
 | 
						|
t1#P#partd#SP#partdsp1.MYD
 | 
						|
t1#P#parta#SP#partasp0.MYI
 | 
						|
t1#P#parta#SP#partasp1.MYI
 | 
						|
t1#P#partd#SP#partdsp0.MYI
 | 
						|
t1#P#partd#SP#partdsp1.MYI
 | 
						|
 | 
						|
# check prerequisites-1 success:    1
 | 
						|
# check COUNT(*) success:    1
 | 
						|
# check MIN/MAX(f_int1) success:    1
 | 
						|
# check MIN/MAX(f_int2) success:    1
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
 | 
						|
WHERE f_int1 IN (2,3);
 | 
						|
ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
 | 
						|
# check prerequisites-3 success:    1
 | 
						|
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
 | 
						|
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
 | 
						|
WHERE f_int1 IN (2,3);
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'delete me';
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
 | 
						|
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
 | 
						|
WHERE f_int1 IN (2,3);
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'delete me';
 | 
						|
# check read via f_int1 success: 1
 | 
						|
# check read via f_int2 success: 1
 | 
						|
	
 | 
						|
# check multiple-1 success: 	1
 | 
						|
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
 | 
						|
	
 | 
						|
# check multiple-2 success: 	1
 | 
						|
INSERT INTO t1 SELECT * FROM t0_template
 | 
						|
WHERE MOD(f_int1,3) = 0;
 | 
						|
	
 | 
						|
# check multiple-3 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = f_int1 + @max_row
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
 | 
						|
AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check multiple-4 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
 | 
						|
AND @max_row_div2 + @max_row_div4 + @max_row;
 | 
						|
	
 | 
						|
# check multiple-5 success: 	1
 | 
						|
SELECT COUNT(*) INTO @try_count FROM t0_template
 | 
						|
WHERE MOD(f_int1,3) = 0
 | 
						|
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
 | 
						|
SELECT COUNT(*) INTO @clash_count
 | 
						|
FROM t1 INNER JOIN t0_template USING(f_int1)
 | 
						|
WHERE MOD(f_int1,3) = 0
 | 
						|
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
 | 
						|
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = @cur_value , f_int2 = @cur_value,
 | 
						|
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
 | 
						|
f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-1 success: 	1
 | 
						|
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = @cur_value , f_int2 = @cur_value,
 | 
						|
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
 | 
						|
f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-2 success: 	1
 | 
						|
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
 | 
						|
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
 | 
						|
UPDATE t1 SET f_int1 = @cur_value2
 | 
						|
WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-3 success: 	1
 | 
						|
SET @cur_value1= -1;
 | 
						|
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
 | 
						|
UPDATE t1 SET f_int1 = @cur_value1
 | 
						|
WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-4 success: 	1
 | 
						|
SELECT MAX(f_int1) INTO @cur_value FROM t1;
 | 
						|
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-5 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-6 success: 	1
 | 
						|
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
 | 
						|
	
 | 
						|
# check single-7 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
 | 
						|
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
 | 
						|
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
 | 
						|
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
 | 
						|
f_charbig = '#NULL#';
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = NULL , f_int2 = -@max_row,
 | 
						|
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
 | 
						|
f_charbig = '#NULL#';
 | 
						|
# check null success:    1
 | 
						|
	
 | 
						|
# check null-1 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = -@max_row
 | 
						|
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-2 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = NULL
 | 
						|
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-3 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-4 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 = 0 AND f_int2 = 0
 | 
						|
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
 | 
						|
AND f_charbig = '#NULL#';
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
   FROM t0_template source_tab
 | 
						|
WHERE MOD(f_int1,3) = 0
 | 
						|
AND f_int1 BETWEEN @max_row_div2 AND @max_row
 | 
						|
ON DUPLICATE KEY
 | 
						|
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
 | 
						|
f_int2 = 2 * @max_row + source_tab.f_int1,
 | 
						|
f_charbig = 'was updated';
 | 
						|
	
 | 
						|
# check unique-1-a success: 	1
 | 
						|
	
 | 
						|
# check unique-1-b success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===')
 | 
						|
WHERE f_charbig = 'was updated';
 | 
						|
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
 | 
						|
   FROM t0_template source_tab
 | 
						|
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
 | 
						|
	
 | 
						|
# check replace success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
 | 
						|
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
 | 
						|
UPDATE t1 SET f_int2 = f_int1,
 | 
						|
f_char1 = CAST(f_int1 AS CHAR),
 | 
						|
f_char2 = CAST(f_int1 AS CHAR),
 | 
						|
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
 | 
						|
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
 | 
						|
SET AUTOCOMMIT= 0;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
FROM t0_template source_tab
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check transactions-1 success: 	1
 | 
						|
COMMIT WORK;
 | 
						|
	
 | 
						|
# check transactions-2 success: 	1
 | 
						|
ROLLBACK WORK;
 | 
						|
	
 | 
						|
# check transactions-3 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
ROLLBACK WORK;
 | 
						|
	
 | 
						|
# check transactions-4 success: 	1
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
FROM t0_template source_tab
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check transactions-5 success: 	1
 | 
						|
ROLLBACK WORK;
 | 
						|
Warnings:
 | 
						|
Warning	1196	Some non-transactional changed tables couldn't be rolled back
 | 
						|
	
 | 
						|
# check transactions-6 success: 	1
 | 
						|
# INFO: Storage engine used for t1 seems to be not transactional.
 | 
						|
COMMIT;
 | 
						|
	
 | 
						|
# check transactions-7 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
SET @@session.sql_mode = 'traditional';
 | 
						|
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
 | 
						|
'', '', 'was inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
ERROR 22012: Division by 0
 | 
						|
COMMIT;
 | 
						|
	
 | 
						|
# check transactions-8 success: 	1
 | 
						|
# INFO: Storage engine used for t1 seems to be unable to revert
 | 
						|
#       changes made by the failing statement.
 | 
						|
SET @@session.sql_mode = '';
 | 
						|
SET AUTOCOMMIT= 1;
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
 | 
						|
	
 | 
						|
# check special-1 success: 	1
 | 
						|
UPDATE t1 SET f_charbig = '';
 | 
						|
	
 | 
						|
# check special-2 success: 	1
 | 
						|
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
 | 
						|
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
	
 | 
						|
# check trigger-1 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
	
 | 
						|
# check trigger-2 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-3 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-4 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-5 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-6 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-7 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-8 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = old.f_int1 + @max_row,
 | 
						|
new.f_int2 = old.f_int2 - @max_row,
 | 
						|
new.f_charbig = '####updated per update trigger####';
 | 
						|
END|
 | 
						|
UPDATE t1
 | 
						|
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
 | 
						|
f_charbig = '####updated per update statement itself####';
 | 
						|
	
 | 
						|
# check trigger-9 success: 	1
 | 
						|
DROP TRIGGER trg_2;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===');
 | 
						|
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = new.f_int1 + @max_row,
 | 
						|
new.f_int2 = new.f_int2 - @max_row,
 | 
						|
new.f_charbig = '####updated per update trigger####';
 | 
						|
END|
 | 
						|
UPDATE t1
 | 
						|
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
 | 
						|
f_charbig = '####updated per update statement itself####';
 | 
						|
	
 | 
						|
# check trigger-10 success: 	1
 | 
						|
DROP TRIGGER trg_2;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===');
 | 
						|
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = @my_max1 + @counter,
 | 
						|
new.f_int2 = @my_min2 - @counter,
 | 
						|
new.f_charbig = '####updated per insert trigger####';
 | 
						|
SET @counter = @counter + 1;
 | 
						|
END|
 | 
						|
SET @counter = 1;
 | 
						|
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
 | 
						|
ORDER BY f_int1;
 | 
						|
DROP TRIGGER trg_3;
 | 
						|
	
 | 
						|
# check trigger-11 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_charbig = '####updated per insert trigger####';
 | 
						|
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = @my_max1 + @counter,
 | 
						|
new.f_int2 = @my_min2 - @counter,
 | 
						|
new.f_charbig = '####updated per insert trigger####';
 | 
						|
SET @counter = @counter + 1;
 | 
						|
END|
 | 
						|
SET @counter = 1;
 | 
						|
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
 | 
						|
INSERT INTO t1 (f_char1, f_char2, f_charbig)
 | 
						|
SELECT CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
 | 
						|
ORDER BY f_int1;
 | 
						|
DROP TRIGGER trg_3;
 | 
						|
	
 | 
						|
# check trigger-12 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_charbig = '####updated per insert trigger####';
 | 
						|
ANALYZE  TABLE t1;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	analyze	status	Engine-independent statistics collected
 | 
						|
test.t1	analyze	status	OK
 | 
						|
CHECK    TABLE t1 EXTENDED;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	check	status	OK
 | 
						|
CHECKSUM TABLE t1 EXTENDED;
 | 
						|
Table	Checksum
 | 
						|
test.t1	<some_value>
 | 
						|
OPTIMIZE TABLE t1;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	optimize	status	OK
 | 
						|
# check layout success:    1
 | 
						|
REPAIR   TABLE t1 EXTENDED;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	repair	status	OK
 | 
						|
# check layout success:    1
 | 
						|
TRUNCATE t1;
 | 
						|
	
 | 
						|
# check TRUNCATE success: 	1
 | 
						|
# check layout success:    1
 | 
						|
# End usability test (inc/partition_check.inc)
 | 
						|
DROP TABLE t1;
 | 
						|
CREATE TABLE t1 (
 | 
						|
f_int1 INTEGER DEFAULT 0,
 | 
						|
f_int2 INTEGER DEFAULT 0,
 | 
						|
f_char1 CHAR(20),
 | 
						|
f_char2 CHAR(20),
 | 
						|
f_charbig VARCHAR(1000)
 | 
						|
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
 | 
						|
)
 | 
						|
/*!50100 PARTITION BY RANGE(f_int1)
 | 
						|
SUBPARTITION BY KEY(f_int1)
 | 
						|
(PARTITION part1 VALUES LESS THAN (0) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
 | 
						|
(SUBPARTITION subpart11,
 | 
						|
SUBPARTITION subpart12),
 | 
						|
PARTITION part2 VALUES LESS THAN (5) INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'
 | 
						|
(SUBPARTITION subpart21,
 | 
						|
SUBPARTITION subpart22),
 | 
						|
PARTITION part3 VALUES LESS THAN (10) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'
 | 
						|
(SUBPARTITION subpart31,
 | 
						|
SUBPARTITION subpart32),
 | 
						|
PARTITION part4 VALUES LESS THAN (2147483646)
 | 
						|
(SUBPARTITION subpart41,
 | 
						|
SUBPARTITION subpart42)) */;
 | 
						|
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
 | 
						|
# Start usability test (inc/partition_check.inc)
 | 
						|
create_command
 | 
						|
SHOW CREATE TABLE t1;
 | 
						|
Table	Create Table
 | 
						|
t1	CREATE TABLE `t1` (
 | 
						|
  `f_int1` int(11) DEFAULT 0,
 | 
						|
  `f_int2` int(11) DEFAULT 0,
 | 
						|
  `f_char1` char(20) DEFAULT NULL,
 | 
						|
  `f_char2` char(20) DEFAULT NULL,
 | 
						|
  `f_charbig` varchar(1000) DEFAULT NULL,
 | 
						|
  UNIQUE KEY `uidx1` (`f_int1`,`f_int2`),
 | 
						|
  UNIQUE KEY `uidx2` (`f_int2`,`f_int1`)
 | 
						|
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | 
						|
 PARTITION BY RANGE (`f_int1`)
 | 
						|
SUBPARTITION BY KEY (`f_int1`)
 | 
						|
(PARTITION `part1` VALUES LESS THAN (0)
 | 
						|
 (SUBPARTITION `subpart11` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' ENGINE = MyISAM,
 | 
						|
  SUBPARTITION `subpart12` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' ENGINE = MyISAM),
 | 
						|
 PARTITION `part2` VALUES LESS THAN (5)
 | 
						|
 (SUBPARTITION `subpart21` INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
  SUBPARTITION `subpart22` INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM),
 | 
						|
 PARTITION `part3` VALUES LESS THAN (10)
 | 
						|
 (SUBPARTITION `subpart31` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
  SUBPARTITION `subpart32` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM),
 | 
						|
 PARTITION `part4` VALUES LESS THAN (2147483646)
 | 
						|
 (SUBPARTITION `subpart41` ENGINE = MyISAM,
 | 
						|
  SUBPARTITION `subpart42` ENGINE = MyISAM))
 | 
						|
 | 
						|
unified filelist
 | 
						|
t1#P#part1#SP#subpart11.MYD
 | 
						|
t1#P#part1#SP#subpart11.MYI
 | 
						|
t1#P#part1#SP#subpart12.MYD
 | 
						|
t1#P#part1#SP#subpart12.MYI
 | 
						|
t1#P#part2#SP#subpart21.MYD
 | 
						|
t1#P#part2#SP#subpart21.MYI
 | 
						|
t1#P#part2#SP#subpart22.MYD
 | 
						|
t1#P#part2#SP#subpart22.MYI
 | 
						|
t1#P#part3#SP#subpart31.MYD
 | 
						|
t1#P#part3#SP#subpart31.MYI
 | 
						|
t1#P#part3#SP#subpart32.MYD
 | 
						|
t1#P#part3#SP#subpart32.MYI
 | 
						|
t1#P#part4#SP#subpart41.MYD
 | 
						|
t1#P#part4#SP#subpart41.MYI
 | 
						|
t1#P#part4#SP#subpart42.MYD
 | 
						|
t1#P#part4#SP#subpart42.MYI
 | 
						|
t1.frm
 | 
						|
t1.par
 | 
						|
t1#P#part1#SP#subpart11.MYD
 | 
						|
t1#P#part1#SP#subpart12.MYD
 | 
						|
t1#P#part3#SP#subpart31.MYD
 | 
						|
t1#P#part3#SP#subpart32.MYD
 | 
						|
t1#P#part2#SP#subpart21.MYI
 | 
						|
t1#P#part2#SP#subpart22.MYI
 | 
						|
t1#P#part3#SP#subpart31.MYI
 | 
						|
t1#P#part3#SP#subpart32.MYI
 | 
						|
 | 
						|
# check prerequisites-1 success:    1
 | 
						|
# check COUNT(*) success:    1
 | 
						|
# check MIN/MAX(f_int1) success:    1
 | 
						|
# check MIN/MAX(f_int2) success:    1
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
 | 
						|
WHERE f_int1 IN (2,3);
 | 
						|
ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
 | 
						|
# check prerequisites-3 success:    1
 | 
						|
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
 | 
						|
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
 | 
						|
WHERE f_int1 IN (2,3);
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'delete me';
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
 | 
						|
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
 | 
						|
WHERE f_int1 IN (2,3);
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'delete me';
 | 
						|
# check read via f_int1 success: 1
 | 
						|
# check read via f_int2 success: 1
 | 
						|
	
 | 
						|
# check multiple-1 success: 	1
 | 
						|
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
 | 
						|
	
 | 
						|
# check multiple-2 success: 	1
 | 
						|
INSERT INTO t1 SELECT * FROM t0_template
 | 
						|
WHERE MOD(f_int1,3) = 0;
 | 
						|
	
 | 
						|
# check multiple-3 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = f_int1 + @max_row
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
 | 
						|
AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check multiple-4 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
 | 
						|
AND @max_row_div2 + @max_row_div4 + @max_row;
 | 
						|
	
 | 
						|
# check multiple-5 success: 	1
 | 
						|
SELECT COUNT(*) INTO @try_count FROM t0_template
 | 
						|
WHERE MOD(f_int1,3) = 0
 | 
						|
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
 | 
						|
SELECT COUNT(*) INTO @clash_count
 | 
						|
FROM t1 INNER JOIN t0_template USING(f_int1)
 | 
						|
WHERE MOD(f_int1,3) = 0
 | 
						|
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
 | 
						|
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = @cur_value , f_int2 = @cur_value,
 | 
						|
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
 | 
						|
f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-1 success: 	1
 | 
						|
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = @cur_value , f_int2 = @cur_value,
 | 
						|
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
 | 
						|
f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-2 success: 	1
 | 
						|
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
 | 
						|
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
 | 
						|
UPDATE t1 SET f_int1 = @cur_value2
 | 
						|
WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-3 success: 	1
 | 
						|
SET @cur_value1= -1;
 | 
						|
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
 | 
						|
UPDATE t1 SET f_int1 = @cur_value1
 | 
						|
WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-4 success: 	1
 | 
						|
SELECT MAX(f_int1) INTO @cur_value FROM t1;
 | 
						|
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-5 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-6 success: 	1
 | 
						|
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
 | 
						|
ERROR HY000: Table has no partition for value 2147483647
 | 
						|
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
 | 
						|
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
 | 
						|
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
 | 
						|
f_charbig = '#NULL#';
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = NULL , f_int2 = -@max_row,
 | 
						|
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
 | 
						|
f_charbig = '#NULL#';
 | 
						|
# check null success:    1
 | 
						|
	
 | 
						|
# check null-1 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = -@max_row
 | 
						|
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-2 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = NULL
 | 
						|
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-3 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-4 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 = 0 AND f_int2 = 0
 | 
						|
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
 | 
						|
AND f_charbig = '#NULL#';
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
   FROM t0_template source_tab
 | 
						|
WHERE MOD(f_int1,3) = 0
 | 
						|
AND f_int1 BETWEEN @max_row_div2 AND @max_row
 | 
						|
ON DUPLICATE KEY
 | 
						|
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
 | 
						|
f_int2 = 2 * @max_row + source_tab.f_int1,
 | 
						|
f_charbig = 'was updated';
 | 
						|
	
 | 
						|
# check unique-1-a success: 	1
 | 
						|
	
 | 
						|
# check unique-1-b success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===')
 | 
						|
WHERE f_charbig = 'was updated';
 | 
						|
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
 | 
						|
   FROM t0_template source_tab
 | 
						|
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
 | 
						|
	
 | 
						|
# check replace success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
 | 
						|
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
 | 
						|
UPDATE t1 SET f_int2 = f_int1,
 | 
						|
f_char1 = CAST(f_int1 AS CHAR),
 | 
						|
f_char2 = CAST(f_int1 AS CHAR),
 | 
						|
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
 | 
						|
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
 | 
						|
SET AUTOCOMMIT= 0;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
FROM t0_template source_tab
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check transactions-1 success: 	1
 | 
						|
COMMIT WORK;
 | 
						|
	
 | 
						|
# check transactions-2 success: 	1
 | 
						|
ROLLBACK WORK;
 | 
						|
	
 | 
						|
# check transactions-3 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
ROLLBACK WORK;
 | 
						|
	
 | 
						|
# check transactions-4 success: 	1
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
FROM t0_template source_tab
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check transactions-5 success: 	1
 | 
						|
ROLLBACK WORK;
 | 
						|
Warnings:
 | 
						|
Warning	1196	Some non-transactional changed tables couldn't be rolled back
 | 
						|
	
 | 
						|
# check transactions-6 success: 	1
 | 
						|
# INFO: Storage engine used for t1 seems to be not transactional.
 | 
						|
COMMIT;
 | 
						|
	
 | 
						|
# check transactions-7 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
SET @@session.sql_mode = 'traditional';
 | 
						|
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
 | 
						|
'', '', 'was inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
ERROR 22012: Division by 0
 | 
						|
COMMIT;
 | 
						|
	
 | 
						|
# check transactions-8 success: 	1
 | 
						|
# INFO: Storage engine used for t1 seems to be unable to revert
 | 
						|
#       changes made by the failing statement.
 | 
						|
SET @@session.sql_mode = '';
 | 
						|
SET AUTOCOMMIT= 1;
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
 | 
						|
	
 | 
						|
# check special-1 success: 	1
 | 
						|
UPDATE t1 SET f_charbig = '';
 | 
						|
	
 | 
						|
# check special-2 success: 	1
 | 
						|
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
 | 
						|
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
	
 | 
						|
# check trigger-1 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
	
 | 
						|
# check trigger-2 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-3 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-4 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-5 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-6 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-7 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-8 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = old.f_int1 + @max_row,
 | 
						|
new.f_int2 = old.f_int2 - @max_row,
 | 
						|
new.f_charbig = '####updated per update trigger####';
 | 
						|
END|
 | 
						|
UPDATE t1
 | 
						|
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
 | 
						|
f_charbig = '####updated per update statement itself####';
 | 
						|
	
 | 
						|
# check trigger-9 success: 	1
 | 
						|
DROP TRIGGER trg_2;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===');
 | 
						|
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = new.f_int1 + @max_row,
 | 
						|
new.f_int2 = new.f_int2 - @max_row,
 | 
						|
new.f_charbig = '####updated per update trigger####';
 | 
						|
END|
 | 
						|
UPDATE t1
 | 
						|
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
 | 
						|
f_charbig = '####updated per update statement itself####';
 | 
						|
	
 | 
						|
# check trigger-10 success: 	1
 | 
						|
DROP TRIGGER trg_2;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===');
 | 
						|
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = @my_max1 + @counter,
 | 
						|
new.f_int2 = @my_min2 - @counter,
 | 
						|
new.f_charbig = '####updated per insert trigger####';
 | 
						|
SET @counter = @counter + 1;
 | 
						|
END|
 | 
						|
SET @counter = 1;
 | 
						|
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
 | 
						|
ORDER BY f_int1;
 | 
						|
DROP TRIGGER trg_3;
 | 
						|
	
 | 
						|
# check trigger-11 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_charbig = '####updated per insert trigger####';
 | 
						|
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = @my_max1 + @counter,
 | 
						|
new.f_int2 = @my_min2 - @counter,
 | 
						|
new.f_charbig = '####updated per insert trigger####';
 | 
						|
SET @counter = @counter + 1;
 | 
						|
END|
 | 
						|
SET @counter = 1;
 | 
						|
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
 | 
						|
INSERT INTO t1 (f_char1, f_char2, f_charbig)
 | 
						|
SELECT CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
 | 
						|
ORDER BY f_int1;
 | 
						|
DROP TRIGGER trg_3;
 | 
						|
	
 | 
						|
# check trigger-12 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_charbig = '####updated per insert trigger####';
 | 
						|
ANALYZE  TABLE t1;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	analyze	status	Engine-independent statistics collected
 | 
						|
test.t1	analyze	status	OK
 | 
						|
CHECK    TABLE t1 EXTENDED;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	check	status	OK
 | 
						|
CHECKSUM TABLE t1 EXTENDED;
 | 
						|
Table	Checksum
 | 
						|
test.t1	<some_value>
 | 
						|
OPTIMIZE TABLE t1;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	optimize	status	OK
 | 
						|
# check layout success:    1
 | 
						|
REPAIR   TABLE t1 EXTENDED;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	repair	status	OK
 | 
						|
# check layout success:    1
 | 
						|
TRUNCATE t1;
 | 
						|
	
 | 
						|
# check TRUNCATE success: 	1
 | 
						|
# check layout success:    1
 | 
						|
# End usability test (inc/partition_check.inc)
 | 
						|
DROP TABLE t1;
 | 
						|
CREATE TABLE t1 (
 | 
						|
f_int1 INTEGER DEFAULT 0,
 | 
						|
f_int2 INTEGER DEFAULT 0,
 | 
						|
f_char1 CHAR(20),
 | 
						|
f_char2 CHAR(20),
 | 
						|
f_charbig VARCHAR(1000)
 | 
						|
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
 | 
						|
)
 | 
						|
/*!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')) */;
 | 
						|
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
 | 
						|
# Start usability test (inc/partition_check.inc)
 | 
						|
create_command
 | 
						|
SHOW CREATE TABLE t1;
 | 
						|
Table	Create Table
 | 
						|
t1	CREATE TABLE `t1` (
 | 
						|
  `f_int1` int(11) DEFAULT 0,
 | 
						|
  `f_int2` int(11) DEFAULT 0,
 | 
						|
  `f_char1` char(20) DEFAULT NULL,
 | 
						|
  `f_char2` char(20) DEFAULT NULL,
 | 
						|
  `f_charbig` varchar(1000) DEFAULT NULL,
 | 
						|
  UNIQUE KEY `uidx1` (`f_int1`,`f_int2`),
 | 
						|
  UNIQUE KEY `uidx2` (`f_int2`,`f_int1`)
 | 
						|
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | 
						|
 PARTITION BY LIST (abs(`f_int1` MOD 3))
 | 
						|
SUBPARTITION BY HASH (`f_int1` + 1)
 | 
						|
(PARTITION `part1` VALUES IN (0)
 | 
						|
 (SUBPARTITION `sp11` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
  SUBPARTITION `sp12` INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM),
 | 
						|
 PARTITION `part2` VALUES IN (1)
 | 
						|
 (SUBPARTITION `sp21` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' ENGINE = MyISAM,
 | 
						|
  SUBPARTITION `sp22` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM),
 | 
						|
 PARTITION `part3` VALUES IN (2)
 | 
						|
 (SUBPARTITION `sp31` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
  SUBPARTITION `sp32` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM),
 | 
						|
 PARTITION `part4` VALUES IN (NULL)
 | 
						|
 (SUBPARTITION `sp41` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM,
 | 
						|
  SUBPARTITION `sp42` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MyISAM))
 | 
						|
 | 
						|
unified filelist
 | 
						|
t1#P#part1#SP#sp11.MYD
 | 
						|
t1#P#part1#SP#sp11.MYI
 | 
						|
t1#P#part1#SP#sp12.MYD
 | 
						|
t1#P#part1#SP#sp12.MYI
 | 
						|
t1#P#part2#SP#sp21.MYD
 | 
						|
t1#P#part2#SP#sp21.MYI
 | 
						|
t1#P#part2#SP#sp22.MYD
 | 
						|
t1#P#part2#SP#sp22.MYI
 | 
						|
t1#P#part3#SP#sp31.MYD
 | 
						|
t1#P#part3#SP#sp31.MYI
 | 
						|
t1#P#part3#SP#sp32.MYD
 | 
						|
t1#P#part3#SP#sp32.MYI
 | 
						|
t1#P#part4#SP#sp41.MYD
 | 
						|
t1#P#part4#SP#sp41.MYI
 | 
						|
t1#P#part4#SP#sp42.MYD
 | 
						|
t1#P#part4#SP#sp42.MYI
 | 
						|
t1.frm
 | 
						|
t1.par
 | 
						|
t1#P#part1#SP#sp11.MYD
 | 
						|
t1#P#part2#SP#sp21.MYD
 | 
						|
t1#P#part2#SP#sp22.MYD
 | 
						|
t1#P#part3#SP#sp31.MYD
 | 
						|
t1#P#part3#SP#sp32.MYD
 | 
						|
t1#P#part4#SP#sp41.MYD
 | 
						|
t1#P#part4#SP#sp42.MYD
 | 
						|
t1#P#part1#SP#sp11.MYI
 | 
						|
t1#P#part1#SP#sp12.MYI
 | 
						|
t1#P#part2#SP#sp22.MYI
 | 
						|
t1#P#part3#SP#sp31.MYI
 | 
						|
t1#P#part3#SP#sp32.MYI
 | 
						|
t1#P#part4#SP#sp41.MYI
 | 
						|
t1#P#part4#SP#sp42.MYI
 | 
						|
 | 
						|
# check prerequisites-1 success:    1
 | 
						|
# check COUNT(*) success:    1
 | 
						|
# check MIN/MAX(f_int1) success:    1
 | 
						|
# check MIN/MAX(f_int2) success:    1
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
 | 
						|
WHERE f_int1 IN (2,3);
 | 
						|
ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
 | 
						|
# check prerequisites-3 success:    1
 | 
						|
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
 | 
						|
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
 | 
						|
WHERE f_int1 IN (2,3);
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'delete me';
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
 | 
						|
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
 | 
						|
WHERE f_int1 IN (2,3);
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'delete me';
 | 
						|
# check read via f_int1 success: 1
 | 
						|
# check read via f_int2 success: 1
 | 
						|
	
 | 
						|
# check multiple-1 success: 	1
 | 
						|
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
 | 
						|
	
 | 
						|
# check multiple-2 success: 	1
 | 
						|
INSERT INTO t1 SELECT * FROM t0_template
 | 
						|
WHERE MOD(f_int1,3) = 0;
 | 
						|
	
 | 
						|
# check multiple-3 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = f_int1 + @max_row
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
 | 
						|
AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check multiple-4 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
 | 
						|
AND @max_row_div2 + @max_row_div4 + @max_row;
 | 
						|
	
 | 
						|
# check multiple-5 success: 	1
 | 
						|
SELECT COUNT(*) INTO @try_count FROM t0_template
 | 
						|
WHERE MOD(f_int1,3) = 0
 | 
						|
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
 | 
						|
SELECT COUNT(*) INTO @clash_count
 | 
						|
FROM t1 INNER JOIN t0_template USING(f_int1)
 | 
						|
WHERE MOD(f_int1,3) = 0
 | 
						|
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
 | 
						|
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = @cur_value , f_int2 = @cur_value,
 | 
						|
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
 | 
						|
f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-1 success: 	1
 | 
						|
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = @cur_value , f_int2 = @cur_value,
 | 
						|
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
 | 
						|
f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-2 success: 	1
 | 
						|
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
 | 
						|
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
 | 
						|
UPDATE t1 SET f_int1 = @cur_value2
 | 
						|
WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-3 success: 	1
 | 
						|
SET @cur_value1= -1;
 | 
						|
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
 | 
						|
UPDATE t1 SET f_int1 = @cur_value1
 | 
						|
WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-4 success: 	1
 | 
						|
SELECT MAX(f_int1) INTO @cur_value FROM t1;
 | 
						|
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-5 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
 | 
						|
	
 | 
						|
# check single-6 success: 	1
 | 
						|
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
 | 
						|
	
 | 
						|
# check single-7 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
 | 
						|
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
 | 
						|
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
 | 
						|
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
 | 
						|
f_charbig = '#NULL#';
 | 
						|
INSERT INTO t1
 | 
						|
SET f_int1 = NULL , f_int2 = -@max_row,
 | 
						|
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
 | 
						|
f_charbig = '#NULL#';
 | 
						|
# check null success:    1
 | 
						|
	
 | 
						|
# check null-1 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = -@max_row
 | 
						|
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-2 success: 	1
 | 
						|
UPDATE t1 SET f_int1 = NULL
 | 
						|
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-3 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
 | 
						|
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
 | 
						|
	
 | 
						|
# check null-4 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 = 0 AND f_int2 = 0
 | 
						|
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
 | 
						|
AND f_charbig = '#NULL#';
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
   FROM t0_template source_tab
 | 
						|
WHERE MOD(f_int1,3) = 0
 | 
						|
AND f_int1 BETWEEN @max_row_div2 AND @max_row
 | 
						|
ON DUPLICATE KEY
 | 
						|
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
 | 
						|
f_int2 = 2 * @max_row + source_tab.f_int1,
 | 
						|
f_charbig = 'was updated';
 | 
						|
	
 | 
						|
# check unique-1-a success: 	1
 | 
						|
	
 | 
						|
# check unique-1-b success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===')
 | 
						|
WHERE f_charbig = 'was updated';
 | 
						|
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
 | 
						|
   FROM t0_template source_tab
 | 
						|
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
 | 
						|
	
 | 
						|
# check replace success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
 | 
						|
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
 | 
						|
UPDATE t1 SET f_int2 = f_int1,
 | 
						|
f_char1 = CAST(f_int1 AS CHAR),
 | 
						|
f_char2 = CAST(f_int1 AS CHAR),
 | 
						|
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
 | 
						|
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
 | 
						|
SET AUTOCOMMIT= 0;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
FROM t0_template source_tab
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check transactions-1 success: 	1
 | 
						|
COMMIT WORK;
 | 
						|
	
 | 
						|
# check transactions-2 success: 	1
 | 
						|
ROLLBACK WORK;
 | 
						|
	
 | 
						|
# check transactions-3 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
ROLLBACK WORK;
 | 
						|
	
 | 
						|
# check transactions-4 success: 	1
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, '', '', 'was inserted'
 | 
						|
FROM t0_template source_tab
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
	
 | 
						|
# check transactions-5 success: 	1
 | 
						|
ROLLBACK WORK;
 | 
						|
Warnings:
 | 
						|
Warning	1196	Some non-transactional changed tables couldn't be rolled back
 | 
						|
	
 | 
						|
# check transactions-6 success: 	1
 | 
						|
# INFO: Storage engine used for t1 seems to be not transactional.
 | 
						|
COMMIT;
 | 
						|
	
 | 
						|
# check transactions-7 success: 	1
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
SET @@session.sql_mode = 'traditional';
 | 
						|
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
 | 
						|
'', '', 'was inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
 | 
						|
ERROR 22012: Division by 0
 | 
						|
COMMIT;
 | 
						|
	
 | 
						|
# check transactions-8 success: 	1
 | 
						|
# INFO: Storage engine used for t1 seems to be unable to revert
 | 
						|
#       changes made by the failing statement.
 | 
						|
SET @@session.sql_mode = '';
 | 
						|
SET AUTOCOMMIT= 1;
 | 
						|
DELETE FROM t1 WHERE f_charbig = 'was inserted';
 | 
						|
COMMIT WORK;
 | 
						|
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
 | 
						|
	
 | 
						|
# check special-1 success: 	1
 | 
						|
UPDATE t1 SET f_charbig = '';
 | 
						|
	
 | 
						|
# check special-2 success: 	1
 | 
						|
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
 | 
						|
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
	
 | 
						|
# check trigger-1 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
	
 | 
						|
# check trigger-2 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-3 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-4 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = new.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-5 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-6 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-7 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
 | 
						|
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
 | 
						|
'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
 | 
						|
f_charbig = 'updated by trigger'
 | 
						|
      WHERE f_int1 = - old.f_int1;
 | 
						|
END|
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
 | 
						|
	
 | 
						|
# check trigger-8 success: 	1
 | 
						|
DROP TRIGGER trg_1;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = 'just inserted'
 | 
						|
   WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
 | 
						|
DELETE FROM t0_aux
 | 
						|
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
 | 
						|
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = old.f_int1 + @max_row,
 | 
						|
new.f_int2 = old.f_int2 - @max_row,
 | 
						|
new.f_charbig = '####updated per update trigger####';
 | 
						|
END|
 | 
						|
UPDATE t1
 | 
						|
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
 | 
						|
f_charbig = '####updated per update statement itself####';
 | 
						|
	
 | 
						|
# check trigger-9 success: 	1
 | 
						|
DROP TRIGGER trg_2;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===');
 | 
						|
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = new.f_int1 + @max_row,
 | 
						|
new.f_int2 = new.f_int2 - @max_row,
 | 
						|
new.f_charbig = '####updated per update trigger####';
 | 
						|
END|
 | 
						|
UPDATE t1
 | 
						|
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
 | 
						|
f_charbig = '####updated per update statement itself####';
 | 
						|
	
 | 
						|
# check trigger-10 success: 	1
 | 
						|
DROP TRIGGER trg_2;
 | 
						|
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_int2 = CAST(f_char1 AS SIGNED INT),
 | 
						|
f_charbig = CONCAT('===',f_char1,'===');
 | 
						|
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = @my_max1 + @counter,
 | 
						|
new.f_int2 = @my_min2 - @counter,
 | 
						|
new.f_charbig = '####updated per insert trigger####';
 | 
						|
SET @counter = @counter + 1;
 | 
						|
END|
 | 
						|
SET @counter = 1;
 | 
						|
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
 | 
						|
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
 | 
						|
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
 | 
						|
ORDER BY f_int1;
 | 
						|
DROP TRIGGER trg_3;
 | 
						|
	
 | 
						|
# check trigger-11 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_charbig = '####updated per insert trigger####';
 | 
						|
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
 | 
						|
BEGIN
 | 
						|
SET new.f_int1 = @my_max1 + @counter,
 | 
						|
new.f_int2 = @my_min2 - @counter,
 | 
						|
new.f_charbig = '####updated per insert trigger####';
 | 
						|
SET @counter = @counter + 1;
 | 
						|
END|
 | 
						|
SET @counter = 1;
 | 
						|
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
 | 
						|
INSERT INTO t1 (f_char1, f_char2, f_charbig)
 | 
						|
SELECT CAST(f_int1 AS CHAR),
 | 
						|
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
 | 
						|
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
 | 
						|
ORDER BY f_int1;
 | 
						|
DROP TRIGGER trg_3;
 | 
						|
	
 | 
						|
# check trigger-12 success: 	1
 | 
						|
DELETE FROM t1
 | 
						|
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
 | 
						|
AND f_charbig = '####updated per insert trigger####';
 | 
						|
ANALYZE  TABLE t1;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	analyze	status	Engine-independent statistics collected
 | 
						|
test.t1	analyze	status	OK
 | 
						|
CHECK    TABLE t1 EXTENDED;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	check	status	OK
 | 
						|
CHECKSUM TABLE t1 EXTENDED;
 | 
						|
Table	Checksum
 | 
						|
test.t1	<some_value>
 | 
						|
OPTIMIZE TABLE t1;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	optimize	status	OK
 | 
						|
# check layout success:    1
 | 
						|
REPAIR   TABLE t1 EXTENDED;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.t1	repair	status	OK
 | 
						|
# check layout success:    1
 | 
						|
TRUNCATE t1;
 | 
						|
	
 | 
						|
# check TRUNCATE success: 	1
 | 
						|
# check layout success:    1
 | 
						|
# End usability test (inc/partition_check.inc)
 | 
						|
DROP TABLE t1;
 | 
						|
DROP VIEW  IF EXISTS v1;
 | 
						|
DROP TABLE IF EXISTS t1;
 | 
						|
DROP TABLE IF EXISTS t0_aux;
 | 
						|
DROP TABLE IF EXISTS t0_definition;
 | 
						|
DROP TABLE IF EXISTS t0_template;
 |