call mtr.add_suppression("InnoDB: Table .* does not exist in the InnoDB internal data dictionary .*"); call mtr.add_suppression("Deadlock found when trying to get lock; try restarting transaction"); # # Bug#11766879/Bug#60106: DIFF BETWEEN # OF INDEXES IN MYSQL VS INNODB, # PARTITONING, ON INDEX CREATE # Bug#12696518: MEMORY LEAKS IN HA_PARTITION (VALGRIND TESTS ON TRUNK) # CREATE TABLE t1 ( id bigint NOT NULL AUTO_INCREMENT, time date, id2 bigint not null, PRIMARY KEY (id,time) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 /*!50100 PARTITION BY RANGE(TO_DAYS(time)) (PARTITION p10 VALUES LESS THAN (734708) ENGINE = InnoDB, PARTITION p20 VALUES LESS THAN MAXVALUE ENGINE = InnoDB) */; INSERT INTO t1 (time,id2) VALUES ('2011-07-24',1); INSERT INTO t1 (time,id2) VALUES ('2011-07-25',1); INSERT INTO t1 (time,id2) VALUES ('2011-07-25',1); CREATE UNIQUE INDEX uk_time_id2 on t1(time,id2); ERROR 23000: Duplicate entry '2011-07-25-1' for key 'uk_time_id2' SELECT COUNT(*) FROM t1; COUNT(*) 3 SHOW CREATE TABLE t1; Table Create Table t1 CREATE TABLE `t1` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `time` date NOT NULL, `id2` bigint(20) NOT NULL, PRIMARY KEY (`id`,`time`) ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci PARTITION BY RANGE (to_days(`time`)) (PARTITION `p10` VALUES LESS THAN (734708) ENGINE = InnoDB, PARTITION `p20` VALUES LESS THAN MAXVALUE ENGINE = InnoDB) DROP TABLE t1; call mtr.add_suppression("InnoDB: Error: table `test`.`t1` .* InnoDB internal"); # # Bug#55091: Server crashes on ADD PARTITION after a failed attempt # SET @old_innodb_file_per_table = @@global.innodb_file_per_table; SET @old_innodb_strict_mode = @@global.innodb_strict_mode; SET @@global.innodb_file_per_table = ON, @@global.innodb_strict_mode = ON; Warnings: Warning 1287 '@@innodb_file_per_table' is deprecated and will be removed in a future release connect con1,localhost,root,,; CREATE TABLE t1 (id INT NOT NULL PRIMARY KEY, user_num CHAR(10) ) ENGINE = InnoDB KEY_BLOCK_SIZE=4 PARTITION BY HASH(id) PARTITIONS 1; t1#P#p0.ibd t1.frm t1.par SHOW CREATE TABLE t1; Table Create Table t1 CREATE TABLE `t1` ( `id` int(11) NOT NULL, `user_num` char(10) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci KEY_BLOCK_SIZE=4 PARTITION BY HASH (`id`) PARTITIONS 1 SET GLOBAL innodb_file_per_table = OFF; Warnings: Warning 1287 '@@innodb_file_per_table' is deprecated and will be removed in a future release disconnect con1; connect con2,localhost,root,,; LOCK TABLE t1 WRITE; # ALTER fails because COMPRESSED/KEY_BLOCK_SIZE # are incompatible with innodb_file_per_table = OFF; ALTER TABLE t1 ADD PARTITION PARTITIONS 1; ERROR HY000: Got error 140 "Wrong create options" from storage engine InnoDB t1#P#p0.ibd t1.frm t1.par # This SET is not needed to reproduce the bug, # it is here just to make the test case more realistic SET innodb_strict_mode = OFF; ALTER TABLE t1 ADD PARTITION PARTITIONS 2; Warnings: Warning 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_per_table. Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=4. Warning 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_per_table. Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=4. Warning 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_per_table. Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=4. t1.frm t1.par ALTER TABLE t1 REBUILD PARTITION p0; Warnings: Warning 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_per_table. Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=4. UNLOCK TABLES; SHOW CREATE TABLE t1; Table Create Table t1 CREATE TABLE `t1` ( `id` int(11) NOT NULL, `user_num` char(10) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci KEY_BLOCK_SIZE=4 PARTITION BY HASH (`id`) PARTITIONS 3 DROP TABLE t1; disconnect con2; connection default; SET @@global.innodb_strict_mode = @old_innodb_strict_mode; SET @@global.innodb_file_per_table = @old_innodb_file_per_table; Warnings: Warning 1287 '@@innodb_file_per_table' is deprecated and will be removed in a future release SET @save_detect= @@GLOBAL.innodb_deadlock_detect; SET @save_report= @@GLOBAL.innodb_deadlock_report; SET GLOBAL innodb_deadlock_detect=ON; SET GLOBAL innodb_deadlock_report=BASIC; SET NAMES utf8; CREATE TABLE `t``\""e` (a INT, PRIMARY KEY (a)) ENGINE=InnoDB PARTITION BY RANGE (a) SUBPARTITION BY HASH (a) (PARTITION `p0``\""e` VALUES LESS THAN (100) (SUBPARTITION `sp0``\""e`, SUBPARTITION `sp1``\""e`), PARTITION `p1``\""e` VALUES LESS THAN (MAXVALUE) (SUBPARTITION `sp2``\""e`, SUBPARTITION `sp3``\""e`)); INSERT INTO `t``\""e` VALUES (0), (2), (6), (10), (14), (18), (22); START TRANSACTION; connect con1,localhost,root,,; SET NAMES utf8; START TRANSACTION; connection default; UPDATE `t``\""e` SET a = 16 WHERE a = 0; connection con1; UPDATE `t``\""e` SET a = 8 WHERE a = 22; UPDATE `t``\""e` SET a = 12 WHERE a = 0; connection default; SELECT lock_table, COUNT(*) FROM INFORMATION_SCHEMA.INNODB_LOCKS GROUP BY lock_table; lock_table COUNT(*) `test`.`t``\""e` /* Partition `p0``\""e`, Subpartition `sp0``\""e` */ 2 set @old_sql_mode = @@sql_mode; set sql_mode = 'ANSI_QUOTES'; SELECT lock_table, COUNT(*) FROM INFORMATION_SCHEMA.INNODB_LOCKS GROUP BY lock_table; lock_table COUNT(*) "test"."t`\""""e" /* Partition "p0`\""""e", Subpartition "sp0`\""""e" */ 2 set @@sql_mode = @old_sql_mode; UPDATE `t``\""e` SET a = 4 WHERE a = 22; ERROR 40001: Deadlock found when trying to get lock; try restarting transaction # First table reported in 'SHOW ENGINE InnoDB STATUS' SHOW ENGINE InnoDB STATUS; Type Name Status InnoDB index PRIMARY of table `test`.`t``\""e` /* Partition `p0``\""e`, Subpartition `sp0``\""e` */ set @old_sql_mode = @@sql_mode; set sql_mode = 'ANSI_QUOTES'; SHOW ENGINE InnoDB STATUS; Type Name Status InnoDB index PRIMARY of table `test`.`t``\""e` /* Partition `p0``\""e`, Subpartition `sp0``\""e` */ SET GLOBAL innodb_deadlock_detect= @save_detect; SET GLOBAL innodb_deadlock_report= @save_report; set @@sql_mode = @old_sql_mode; connection con1; ROLLBACK; disconnect con1; connection default; DROP TABLE `t``\""e`;