mirror of
https://github.com/MariaDB/server.git
synced 2025-01-17 04:22:27 +01:00
2fdb556e04
This patch changes the main name of 3 byte character set from utf8 to utf8mb3. New old_mode UTF8_IS_UTF8MB3 is added and set TRUE by default, so that utf8 would mean utf8mb3. If not set, utf8 would mean utf8mb4.
162 lines
5.6 KiB
Text
162 lines
5.6 KiB
Text
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
|
|
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;
|
|
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 KEY_BLOCK_SIZE=4
|
|
PARTITION BY HASH (`id`)
|
|
PARTITIONS 1
|
|
SET GLOBAL innodb_file_per_table = OFF;
|
|
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 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;
|
|
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`;
|