422 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
		
		
			
		
	
	
			422 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
| 
								 | 
							
								drop table if exists t1, t2;
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Bug#56287: crash when using Partition datetime in sub in query
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								CREATE TABLE t1
							 | 
						||
| 
								 | 
							
								(c1 bigint(20) unsigned NOT NULL AUTO_INCREMENT,
							 | 
						||
| 
								 | 
							
								c2 varchar(40) not null default '',
							 | 
						||
| 
								 | 
							
								c3 datetime not  NULL,
							 | 
						||
| 
								 | 
							
								PRIMARY KEY (c1,c3),
							 | 
						||
| 
								 | 
							
								KEY partidx(c3))
							 | 
						||
| 
								 | 
							
								ENGINE=InnoDB
							 | 
						||
| 
								 | 
							
								PARTITION BY RANGE (TO_DAYS(c3))
							 | 
						||
| 
								 | 
							
								(PARTITION p200912 VALUES LESS THAN (to_days('2010-01-01')),
							 | 
						||
| 
								 | 
							
								PARTITION p201103 VALUES LESS THAN (to_days('2011-04-01')),
							 | 
						||
| 
								 | 
							
								PARTITION p201912 VALUES LESS THAN MAXVALUE);
							 | 
						||
| 
								 | 
							
								insert into t1(c2,c3) values ("Test row",'2010-01-01 00:00:00');
							 | 
						||
| 
								 | 
							
								SELECT PARTITION_NAME, TABLE_ROWS FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_NAME = 't1' AND TABLE_SCHEMA = 'test';
							 | 
						||
| 
								 | 
							
								PARTITION_NAME	TABLE_ROWS
							 | 
						||
| 
								 | 
							
								p200912	0
							 | 
						||
| 
								 | 
							
								p201103	1
							 | 
						||
| 
								 | 
							
								p201912	0
							 | 
						||
| 
								 | 
							
								SELECT count(*) FROM t1 p where c3 in
							 | 
						||
| 
								 | 
							
								(select c3 from t1 t where t.c3 < date '2011-04-26 19:19:44'
							 | 
						||
| 
								 | 
							
								 and t.c3 > date '2011-04-26 19:18:44') ;
							 | 
						||
| 
								 | 
							
								count(*)
							 | 
						||
| 
								 | 
							
								0
							 | 
						||
| 
								 | 
							
								DROP TABLE t1;
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Bug#51830: Incorrect partition pruning on range partition (regression)
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								CREATE TABLE t1 (a INT NOT NULL)
							 | 
						||
| 
								 | 
							
								ENGINE = InnoDB
							 | 
						||
| 
								 | 
							
								PARTITION BY RANGE(a)
							 | 
						||
| 
								 | 
							
								(PARTITION p10 VALUES LESS THAN (10),
							 | 
						||
| 
								 | 
							
								PARTITION p30 VALUES LESS THAN (30),
							 | 
						||
| 
								 | 
							
								PARTITION p50 VALUES LESS THAN (50),
							 | 
						||
| 
								 | 
							
								PARTITION p70 VALUES LESS THAN (70),
							 | 
						||
| 
								 | 
							
								PARTITION p90 VALUES LESS THAN (90));
							 | 
						||
| 
								 | 
							
								INSERT INTO t1 VALUES (10),(30),(50);
							 | 
						||
| 
								 | 
							
								INSERT INTO t1 VALUES (70);
							 | 
						||
| 
								 | 
							
								INSERT INTO t1 VALUES (80);
							 | 
						||
| 
								 | 
							
								INSERT INTO t1 VALUES (89);
							 | 
						||
| 
								 | 
							
								INSERT INTO t1 VALUES (90);
							 | 
						||
| 
								 | 
							
								ERROR HY000: Table has no partition for value 90
							 | 
						||
| 
								 | 
							
								INSERT INTO t1 VALUES (100);
							 | 
						||
| 
								 | 
							
								ERROR HY000: Table has no partition for value 100
							 | 
						||
| 
								 | 
							
								insert INTO t1 VALUES (110);
							 | 
						||
| 
								 | 
							
								ERROR HY000: Table has no partition for value 110
							 | 
						||
| 
								 | 
							
								EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a > 90;
							 | 
						||
| 
								 | 
							
								id	select_type	table	partitions	type	possible_keys	key	key_len	ref	rows	Extra
							 | 
						||
| 
								 | 
							
								1	SIMPLE	t1		ALL	NULL	NULL	NULL	NULL	0	Using where
							 | 
						||
| 
								 | 
							
								EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a >= 90;
							 | 
						||
| 
								 | 
							
								id	select_type	table	partitions	type	possible_keys	key	key_len	ref	rows	Extra
							 | 
						||
| 
								 | 
							
								1	SIMPLE	t1		ALL	NULL	NULL	NULL	NULL	0	Using where
							 | 
						||
| 
								 | 
							
								EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a = 90;
							 | 
						||
| 
								 | 
							
								id	select_type	table	partitions	type	possible_keys	key	key_len	ref	rows	Extra
							 | 
						||
| 
								 | 
							
								1	SIMPLE	t1		ALL	NULL	NULL	NULL	NULL	0	Using where
							 | 
						||
| 
								 | 
							
								EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a = 89;
							 | 
						||
| 
								 | 
							
								id	select_type	table	partitions	type	possible_keys	key	key_len	ref	rows	Extra
							 | 
						||
| 
								 | 
							
								1	SIMPLE	t1	p90	ALL	NULL	NULL	NULL	NULL	3	Using where
							 | 
						||
| 
								 | 
							
								EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a >= 89;
							 | 
						||
| 
								 | 
							
								id	select_type	table	partitions	type	possible_keys	key	key_len	ref	rows	Extra
							 | 
						||
| 
								 | 
							
								1	SIMPLE	t1	p90	ALL	NULL	NULL	NULL	NULL	3	Using where
							 | 
						||
| 
								 | 
							
								EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a > 89;
							 | 
						||
| 
								 | 
							
								id	select_type	table	partitions	type	possible_keys	key	key_len	ref	rows	Extra
							 | 
						||
| 
								 | 
							
								1	SIMPLE	t1		ALL	NULL	NULL	NULL	NULL	0	Using where
							 | 
						||
| 
								 | 
							
								EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a = 100;
							 | 
						||
| 
								 | 
							
								id	select_type	table	partitions	type	possible_keys	key	key_len	ref	rows	Extra
							 | 
						||
| 
								 | 
							
								1	SIMPLE	t1		ALL	NULL	NULL	NULL	NULL	0	Using where
							 | 
						||
| 
								 | 
							
								EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a >= 100;
							 | 
						||
| 
								 | 
							
								id	select_type	table	partitions	type	possible_keys	key	key_len	ref	rows	Extra
							 | 
						||
| 
								 | 
							
								1	SIMPLE	t1		ALL	NULL	NULL	NULL	NULL	0	Using where
							 | 
						||
| 
								 | 
							
								EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a > 100;
							 | 
						||
| 
								 | 
							
								id	select_type	table	partitions	type	possible_keys	key	key_len	ref	rows	Extra
							 | 
						||
| 
								 | 
							
								1	SIMPLE	t1		ALL	NULL	NULL	NULL	NULL	0	Using where
							 | 
						||
| 
								 | 
							
								DROP TABLE t1;
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Bug#50104: Partitioned table with just 1 partion works with fk
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								CREATE TABLE t2 (
							 | 
						||
| 
								 | 
							
								id INT,
							 | 
						||
| 
								 | 
							
								PRIMARY KEY (id)
							 | 
						||
| 
								 | 
							
								) ENGINE=InnoDB ;
							 | 
						||
| 
								 | 
							
								CREATE TABLE t1 (
							 | 
						||
| 
								 | 
							
								id INT NOT NULL AUTO_INCREMENT,
							 | 
						||
| 
								 | 
							
								parent_id INT DEFAULT NULL,
							 | 
						||
| 
								 | 
							
								PRIMARY KEY (id),
							 | 
						||
| 
								 | 
							
								KEY parent_id (parent_id)
							 | 
						||
| 
								 | 
							
								) ENGINE=InnoDB;
							 | 
						||
| 
								 | 
							
								ALTER TABLE t1 PARTITION BY HASH (id) PARTITIONS 1;
							 | 
						||
| 
								 | 
							
								ALTER TABLE t1 ADD CONSTRAINT test_ibfk_1 FOREIGN KEY (parent_id) REFERENCES t2 (id);
							 | 
						||
| 
								 | 
							
								ERROR HY000: Foreign key clause is not yet supported in conjunction with partitioning
							 | 
						||
| 
								 | 
							
								ALTER TABLE t1 PARTITION BY HASH (id) PARTITIONS 2;
							 | 
						||
| 
								 | 
							
								ALTER TABLE t1 ADD CONSTRAINT test_ibfk_1 FOREIGN KEY (parent_id) REFERENCES t2 (id);
							 | 
						||
| 
								 | 
							
								ERROR HY000: Foreign key clause is not yet supported in conjunction with partitioning
							 | 
						||
| 
								 | 
							
								DROP TABLE t1, t2;
							 | 
						||
| 
								 | 
							
								create table t1 (a int not null,
							 | 
						||
| 
								 | 
							
								b datetime not null,
							 | 
						||
| 
								 | 
							
								primary key (a,b))
							 | 
						||
| 
								 | 
							
								engine=innodb
							 | 
						||
| 
								 | 
							
								partition by range (to_days(b))
							 | 
						||
| 
								 | 
							
								subpartition by hash (a)
							 | 
						||
| 
								 | 
							
								subpartitions 2
							 | 
						||
| 
								 | 
							
								( partition p0 values less than (to_days('2009-01-01')),
							 | 
						||
| 
								 | 
							
								partition p1 values less than (to_days('2009-02-01')),
							 | 
						||
| 
								 | 
							
								partition p2 values less than (to_days('2009-03-01')),
							 | 
						||
| 
								 | 
							
								partition p3 values less than maxvalue);
							 | 
						||
| 
								 | 
							
								alter table t1 reorganize partition p1,p2 into
							 | 
						||
| 
								 | 
							
								( partition p2 values less than (to_days('2009-03-01')));
							 | 
						||
| 
								 | 
							
								drop table t1;
							 | 
						||
| 
								 | 
							
								CREATE TABLE t1 (id INT PRIMARY KEY, data INT) ENGINE = InnoDB 
							 | 
						||
| 
								 | 
							
								PARTITION BY RANGE(id) ( 
							 | 
						||
| 
								 | 
							
								PARTITION p0 VALUES LESS THAN (5), 
							 | 
						||
| 
								 | 
							
								PARTITION p1 VALUES LESS THAN (10), 
							 | 
						||
| 
								 | 
							
								PARTITION p2 VALUES LESS THAN MAXVALUE 
							 | 
						||
| 
								 | 
							
								);
							 | 
						||
| 
								 | 
							
								INSERT INTO t1 VALUES (1,1), (2,2), (3,3), (4,4), (5,5), (6,6), (7,7), (8,8),
							 | 
						||
| 
								 | 
							
								(9,9), (10,10), (11,11);
							 | 
						||
| 
								 | 
							
								SET @old_tx_isolation := @@session.tx_isolation;
							 | 
						||
| 
								 | 
							
								SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
							 | 
						||
| 
								 | 
							
								SET autocommit = 0;
							 | 
						||
| 
								 | 
							
								UPDATE t1 SET DATA = data*2 WHERE id = 3;
							 | 
						||
| 
								 | 
							
								SHOW ENGINE InnoDB STATUS;
							 | 
						||
| 
								 | 
							
								Type	Name	Status
							 | 
						||
| 
								 | 
							
								InnoDB		2 lock struct(s) 1 row lock(s)
							 | 
						||
| 
								 | 
							
								UPDATE t1 SET data = data*2 WHERE data = 2;
							 | 
						||
| 
								 | 
							
								SHOW ENGINE InnoDB STATUS;
							 | 
						||
| 
								 | 
							
								Type	Name	Status
							 | 
						||
| 
								 | 
							
								InnoDB		6 lock struct(s) 2 row lock(s)
							 | 
						||
| 
								 | 
							
								SET @@session.tx_isolation = @old_tx_isolation;
							 | 
						||
| 
								 | 
							
								DROP TABLE t1;
							 | 
						||
| 
								 | 
							
								# Bug#37721, test of ORDER BY on PK and WHERE on INDEX
							 | 
						||
| 
								 | 
							
								CREATE TABLE t1 (
							 | 
						||
| 
								 | 
							
								a INT,
							 | 
						||
| 
								 | 
							
								b INT,
							 | 
						||
| 
								 | 
							
								PRIMARY KEY (a),
							 | 
						||
| 
								 | 
							
								INDEX (b))
							 | 
						||
| 
								 | 
							
								ENGINE InnoDB
							 | 
						||
| 
								 | 
							
								PARTITION BY HASH(a)
							 | 
						||
| 
								 | 
							
								PARTITIONS 3;
							 | 
						||
| 
								 | 
							
								INSERT INTO t1 VALUES (0,0),(4,0),(2,0);
							 | 
						||
| 
								 | 
							
								SELECT a FROM t1 WHERE b = 0 ORDER BY a ASC;
							 | 
						||
| 
								 | 
							
								a
							 | 
						||
| 
								 | 
							
								0
							 | 
						||
| 
								 | 
							
								2
							 | 
						||
| 
								 | 
							
								4
							 | 
						||
| 
								 | 
							
								SELECT a FROM t1 WHERE b = 0 ORDER BY a DESC;
							 | 
						||
| 
								 | 
							
								a
							 | 
						||
| 
								 | 
							
								4
							 | 
						||
| 
								 | 
							
								2
							 | 
						||
| 
								 | 
							
								0
							 | 
						||
| 
								 | 
							
								ALTER TABLE t1 DROP INDEX b;
							 | 
						||
| 
								 | 
							
								SELECT a FROM t1 WHERE b = 0 ORDER BY a ASC;
							 | 
						||
| 
								 | 
							
								a
							 | 
						||
| 
								 | 
							
								0
							 | 
						||
| 
								 | 
							
								2
							 | 
						||
| 
								 | 
							
								4
							 | 
						||
| 
								 | 
							
								SELECT a FROM t1 WHERE b = 0 ORDER BY a DESC;
							 | 
						||
| 
								 | 
							
								a
							 | 
						||
| 
								 | 
							
								4
							 | 
						||
| 
								 | 
							
								2
							 | 
						||
| 
								 | 
							
								0
							 | 
						||
| 
								 | 
							
								DROP TABLE t1;
							 | 
						||
| 
								 | 
							
								CREATE TABLE t1 (
							 | 
						||
| 
								 | 
							
								a VARCHAR(600),
							 | 
						||
| 
								 | 
							
								b VARCHAR(600),
							 | 
						||
| 
								 | 
							
								PRIMARY KEY (a),
							 | 
						||
| 
								 | 
							
								INDEX (b))
							 | 
						||
| 
								 | 
							
								ENGINE InnoDB
							 | 
						||
| 
								 | 
							
								PARTITION BY KEY(a)
							 | 
						||
| 
								 | 
							
								PARTITIONS 3;
							 | 
						||
| 
								 | 
							
								INSERT INTO t1 VALUES (concat(repeat('MySQL',100),'1'),repeat('0',257));
							 | 
						||
| 
								 | 
							
								INSERT INTO t1 VALUES (concat(repeat('MySQL',100),'3'),repeat('0',257));
							 | 
						||
| 
								 | 
							
								INSERT INTO t1 VALUES (concat(repeat('MySQL',100),'2'),repeat('0',257));
							 | 
						||
| 
								 | 
							
								SELECT right(a,1) FROM t1 WHERE b = repeat('0',257) ORDER BY a ASC;
							 | 
						||
| 
								 | 
							
								right(a,1)
							 | 
						||
| 
								 | 
							
								1
							 | 
						||
| 
								 | 
							
								2
							 | 
						||
| 
								 | 
							
								3
							 | 
						||
| 
								 | 
							
								SELECT right(a,1) FROM t1 WHERE b = repeat('0',257) ORDER BY a DESC;
							 | 
						||
| 
								 | 
							
								right(a,1)
							 | 
						||
| 
								 | 
							
								3
							 | 
						||
| 
								 | 
							
								2
							 | 
						||
| 
								 | 
							
								1
							 | 
						||
| 
								 | 
							
								ALTER TABLE t1 DROP INDEX b;
							 | 
						||
| 
								 | 
							
								SELECT right(a,1) FROM t1 WHERE b = repeat('0',257) ORDER BY a ASC;
							 | 
						||
| 
								 | 
							
								right(a,1)
							 | 
						||
| 
								 | 
							
								1
							 | 
						||
| 
								 | 
							
								2
							 | 
						||
| 
								 | 
							
								3
							 | 
						||
| 
								 | 
							
								SELECT right(a,1) FROM t1 WHERE b = repeat('0',257) ORDER BY a DESC;
							 | 
						||
| 
								 | 
							
								right(a,1)
							 | 
						||
| 
								 | 
							
								3
							 | 
						||
| 
								 | 
							
								2
							 | 
						||
| 
								 | 
							
								1
							 | 
						||
| 
								 | 
							
								DROP TABLE t1;
							 | 
						||
| 
								 | 
							
								# Bug#32948
							 | 
						||
| 
								 | 
							
								CREATE TABLE t1 (c1 INT, PRIMARY KEY (c1)) ENGINE=INNODB;
							 | 
						||
| 
								 | 
							
								CREATE TABLE t2 (c1 INT, PRIMARY KEY (c1),
							 | 
						||
| 
								 | 
							
								FOREIGN KEY (c1) REFERENCES t1 (c1)
							 | 
						||
| 
								 | 
							
								ON DELETE CASCADE)
							 | 
						||
| 
								 | 
							
								ENGINE=INNODB;
							 | 
						||
| 
								 | 
							
								ALTER TABLE t1 PARTITION BY HASH(c1) PARTITIONS 5;
							 | 
						||
| 
								 | 
							
								ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails
							 | 
						||
| 
								 | 
							
								ALTER TABLE t1 ENGINE=MyISAM;
							 | 
						||
| 
								 | 
							
								ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails
							 | 
						||
| 
								 | 
							
								DROP TABLE t2;
							 | 
						||
| 
								 | 
							
								DROP TABLE t1;
							 | 
						||
| 
								 | 
							
								create table t1 (a int) engine=innodb partition by hash(a) ;
							 | 
						||
| 
								 | 
							
								show table status like 't1';
							 | 
						||
| 
								 | 
							
								Name	Engine	Version	Row_format	Rows	Avg_row_length	Data_length	Max_data_length	Index_length	Data_free	Auto_increment	Create_time	Update_time	Check_time	Collation	Checksum	Create_options	Comment
							 | 
						||
| 
								 | 
							
								t1	InnoDB	10	Compact	2	8192	16384	0	0	#	NULL	NULL	NULL	NULL	latin1_swedish_ci	NULL	partitioned	
							 | 
						||
| 
								 | 
							
								drop table t1;
							 | 
						||
| 
								 | 
							
								create table t1 (a int)
							 | 
						||
| 
								 | 
							
								engine = innodb
							 | 
						||
| 
								 | 
							
								partition by key (a);
							 | 
						||
| 
								 | 
							
								show table status;
							 | 
						||
| 
								 | 
							
								Name	Engine	Version	Row_format	Rows	Avg_row_length	Data_length	Max_data_length	Index_length	Data_free	Auto_increment	Create_time	Update_time	Check_time	Collation	Checksum	Create_options	Comment
							 | 
						||
| 
								 | 
							
								t1	InnoDB	10	Compact	2	8192	16384	0	0	#	NULL	NULL	NULL	NULL	latin1_swedish_ci	NULL	partitioned	
							 | 
						||
| 
								 | 
							
								insert into t1 values (0), (1), (2), (3);
							 | 
						||
| 
								 | 
							
								show table status;
							 | 
						||
| 
								 | 
							
								Name	Engine	Version	Row_format	Rows	Avg_row_length	Data_length	Max_data_length	Index_length	Data_free	Auto_increment	Create_time	Update_time	Check_time	Collation	Checksum	Create_options	Comment
							 | 
						||
| 
								 | 
							
								t1	InnoDB	10	Compact	4	4096	16384	0	0	#	NULL	NULL	NULL	NULL	latin1_swedish_ci	NULL	partitioned	
							 | 
						||
| 
								 | 
							
								drop table t1;
							 | 
						||
| 
								 | 
							
								create table t1 (a int auto_increment primary key)
							 | 
						||
| 
								 | 
							
								engine = innodb
							 | 
						||
| 
								 | 
							
								partition by key (a);
							 | 
						||
| 
								 | 
							
								show table status;
							 | 
						||
| 
								 | 
							
								Name	Engine	Version	Row_format	Rows	Avg_row_length	Data_length	Max_data_length	Index_length	Data_free	Auto_increment	Create_time	Update_time	Check_time	Collation	Checksum	Create_options	Comment
							 | 
						||
| 
								 | 
							
								t1	InnoDB	10	Compact	2	8192	16384	0	0	#	1	NULL	NULL	NULL	latin1_swedish_ci	NULL	partitioned	
							 | 
						||
| 
								 | 
							
								insert into t1 values (NULL), (NULL), (NULL), (NULL);
							 | 
						||
| 
								 | 
							
								show table status;
							 | 
						||
| 
								 | 
							
								Name	Engine	Version	Row_format	Rows	Avg_row_length	Data_length	Max_data_length	Index_length	Data_free	Auto_increment	Create_time	Update_time	Check_time	Collation	Checksum	Create_options	Comment
							 | 
						||
| 
								 | 
							
								t1	InnoDB	10	Compact	4	4096	16384	0	0	#	5	NULL	NULL	NULL	latin1_swedish_ci	NULL	partitioned	
							 | 
						||
| 
								 | 
							
								insert into t1 values (NULL), (NULL), (NULL), (NULL);
							 | 
						||
| 
								 | 
							
								show table status;
							 | 
						||
| 
								 | 
							
								Name	Engine	Version	Row_format	Rows	Avg_row_length	Data_length	Max_data_length	Index_length	Data_free	Auto_increment	Create_time	Update_time	Check_time	Collation	Checksum	Create_options	Comment
							 | 
						||
| 
								 | 
							
								t1	InnoDB	10	Compact	8	2048	16384	0	0	#	9	NULL	NULL	NULL	latin1_swedish_ci	NULL	partitioned	
							 | 
						||
| 
								 | 
							
								drop table t1;
							 | 
						||
| 
								 | 
							
								create table t1 (a int)
							 | 
						||
| 
								 | 
							
								partition by key (a)
							 | 
						||
| 
								 | 
							
								(partition p1 engine = innodb);
							 | 
						||
| 
								 | 
							
								alter table t1 rebuild partition p1;
							 | 
						||
| 
								 | 
							
								alter table t1 rebuild partition p1;
							 | 
						||
| 
								 | 
							
								alter table t1 rebuild partition p1;
							 | 
						||
| 
								 | 
							
								alter table t1 rebuild partition p1;
							 | 
						||
| 
								 | 
							
								alter table t1 rebuild partition p1;
							 | 
						||
| 
								 | 
							
								alter table t1 rebuild partition p1;
							 | 
						||
| 
								 | 
							
								alter table t1 rebuild partition p1;
							 | 
						||
| 
								 | 
							
								drop table t1;
							 | 
						||
| 
								 | 
							
								create table t1 (a date)
							 | 
						||
| 
								 | 
							
								engine = innodb
							 | 
						||
| 
								 | 
							
								partition by range (year(a))
							 | 
						||
| 
								 | 
							
								(partition p0 values less than (2006),
							 | 
						||
| 
								 | 
							
								partition p1 values less than (2007));
							 | 
						||
| 
								 | 
							
								explain partitions select * from t1
							 | 
						||
| 
								 | 
							
								where a between '2006-01-01' and '2007-06-01';
							 | 
						||
| 
								 | 
							
								id	select_type	table	partitions	type	possible_keys	key	key_len	ref	rows	Extra
							 | 
						||
| 
								 | 
							
								1	SIMPLE	t1	p1	ALL	NULL	NULL	NULL	NULL	2	Using where
							 | 
						||
| 
								 | 
							
								drop table t1;
							 | 
						||
| 
								 | 
							
								create table t1 (a int)
							 | 
						||
| 
								 | 
							
								engine = x
							 | 
						||
| 
								 | 
							
								partition by key (a);
							 | 
						||
| 
								 | 
							
								Warnings:
							 | 
						||
| 
								 | 
							
								Warning	1286	Unknown table engine 'x'
							 | 
						||
| 
								 | 
							
								Warning	1266	Using storage engine MyISAM for table 't1'
							 | 
						||
| 
								 | 
							
								show create table t1;
							 | 
						||
| 
								 | 
							
								Table	Create Table
							 | 
						||
| 
								 | 
							
								t1	CREATE TABLE `t1` (
							 | 
						||
| 
								 | 
							
								  `a` int(11) DEFAULT NULL
							 | 
						||
| 
								 | 
							
								) ENGINE=MyISAM DEFAULT CHARSET=latin1
							 | 
						||
| 
								 | 
							
								/*!50100 PARTITION BY KEY (a) */
							 | 
						||
| 
								 | 
							
								drop table t1;
							 | 
						||
| 
								 | 
							
								create table t1 (a int)
							 | 
						||
| 
								 | 
							
								engine = innodb
							 | 
						||
| 
								 | 
							
								partition by list (a)
							 | 
						||
| 
								 | 
							
								(partition p0 values in (0));
							 | 
						||
| 
								 | 
							
								alter table t1 engine = x;
							 | 
						||
| 
								 | 
							
								ERROR HY000: The mix of handlers in the partitions is not allowed in this version of MySQL
							 | 
						||
| 
								 | 
							
								show create table t1;
							 | 
						||
| 
								 | 
							
								Table	Create Table
							 | 
						||
| 
								 | 
							
								t1	CREATE TABLE `t1` (
							 | 
						||
| 
								 | 
							
								  `a` int(11) DEFAULT NULL
							 | 
						||
| 
								 | 
							
								) ENGINE=InnoDB DEFAULT CHARSET=latin1
							 | 
						||
| 
								 | 
							
								/*!50100 PARTITION BY LIST (a)
							 | 
						||
| 
								 | 
							
								(PARTITION p0 VALUES IN (0) ENGINE = InnoDB) */
							 | 
						||
| 
								 | 
							
								drop table t1;
							 | 
						||
| 
								 | 
							
								create table t1
							 | 
						||
| 
								 | 
							
								(
							 | 
						||
| 
								 | 
							
								id int unsigned auto_increment,
							 | 
						||
| 
								 | 
							
								time datetime not null,
							 | 
						||
| 
								 | 
							
								first_name varchar(40),
							 | 
						||
| 
								 | 
							
								last_name varchar(50),
							 | 
						||
| 
								 | 
							
								primary key (id, time),
							 | 
						||
| 
								 | 
							
								index first_index (first_name),
							 | 
						||
| 
								 | 
							
								index last_index (last_name)	
							 | 
						||
| 
								 | 
							
								) engine=Innodb partition by range (to_days(time)) (
							 | 
						||
| 
								 | 
							
								partition p1 values less than (to_days('2007-02-07')),
							 | 
						||
| 
								 | 
							
								partition p2 values less than (to_days('2007-02-08')),
							 | 
						||
| 
								 | 
							
								partition p3 values less than MAXVALUE
							 | 
						||
| 
								 | 
							
								);
							 | 
						||
| 
								 | 
							
								insert into t1 (time, first_name, last_name) values ('2007-02-07', 'Q', 'Robert'),
							 | 
						||
| 
								 | 
							
								('2007-02-07', 'Mark', 'Nate'), ('2007-02-07', 'Nate', 'Oscar'),
							 | 
						||
| 
								 | 
							
								('2007-02-07', 'Zack', 'Alice'), ('2007-02-07', 'Jack', 'Kathy'),
							 | 
						||
| 
								 | 
							
								('2007-02-06', 'Alice', 'Alice'), ('2007-02-06', 'Brian', 'Charles'),
							 | 
						||
| 
								 | 
							
								('2007-02-06', 'Charles', 'David'), ('2007-02-06', 'David', 'Eric'),
							 | 
						||
| 
								 | 
							
								('2007-02-07', 'Hector', 'Isaac'), ('2007-02-07', 'Oscar', 'Patricia'),
							 | 
						||
| 
								 | 
							
								('2007-02-07', 'Patricia', 'Q'), ('2007-02-07', 'X', 'Yuri'),
							 | 
						||
| 
								 | 
							
								('2007-02-07', 'Robert', 'Shawn'), ('2007-02-07', 'Kathy', 'Lois'),
							 | 
						||
| 
								 | 
							
								('2007-02-07', 'Eric', 'Francis'), ('2007-02-06', 'Shawn', 'Theron'),
							 | 
						||
| 
								 | 
							
								('2007-02-06', 'U', 'Vincent'), ('2007-02-06', 'Francis', 'George'),
							 | 
						||
| 
								 | 
							
								('2007-02-06', 'George', 'Hector'), ('2007-02-06', 'Vincent', 'Walter'),
							 | 
						||
| 
								 | 
							
								('2007-02-06', 'Walter', 'X'), ('2007-02-07', 'Lois', 'Mark'),
							 | 
						||
| 
								 | 
							
								('2007-02-07', 'Yuri', 'Zack'), ('2007-02-07', 'Isaac', 'Jack'),
							 | 
						||
| 
								 | 
							
								('2007-02-07', 'Sharon', 'Mark'), ('2007-02-07', 'Michael', 'Michelle'),
							 | 
						||
| 
								 | 
							
								('2007-02-07', 'Derick', 'Nathan'), ('2007-02-07', 'Peter', 'Xavier'),
							 | 
						||
| 
								 | 
							
								('2007-02-07', 'Fred', 'Harold'), ('2007-02-07', 'Katherine', 'Lisa'),
							 | 
						||
| 
								 | 
							
								('2007-02-07', 'Tom', 'Rina'), ('2007-02-07', 'Jerry', 'Victor'),
							 | 
						||
| 
								 | 
							
								('2007-02-07', 'Alexander', 'Terry'), ('2007-02-07', 'Justin', 'John'),
							 | 
						||
| 
								 | 
							
								('2007-02-07', 'Greg', 'Ernest'), ('2007-02-07', 'Robert', 'Q'),
							 | 
						||
| 
								 | 
							
								('2007-02-07', 'Nate', 'Mark'), ('2007-02-07', 'Oscar', 'Nate'),
							 | 
						||
| 
								 | 
							
								('2007-02-07', 'Alice', 'Zack'), ('2007-02-07', 'Kathy', 'Jack'),
							 | 
						||
| 
								 | 
							
								('2007-02-06', 'Alice', 'Alice'), ('2007-02-06', 'Charles', 'Brian'),
							 | 
						||
| 
								 | 
							
								('2007-02-06', 'David', 'Charles'), ('2007-02-06', 'Eric', 'David'),
							 | 
						||
| 
								 | 
							
								('2007-02-07', 'Isaac', 'Hector'), ('2007-02-07', 'Patricia', 'Oscar'),
							 | 
						||
| 
								 | 
							
								('2007-02-07', 'Q', 'Patricia'), ('2007-02-07', 'Yuri', 'X'),
							 | 
						||
| 
								 | 
							
								('2007-02-07', 'Shawn', 'Robert'), ('2007-02-07', 'Lois', 'Kathy'),
							 | 
						||
| 
								 | 
							
								('2007-02-07', 'Francis', 'Eric'), ('2007-02-06', 'Theron', 'Shawn'),
							 | 
						||
| 
								 | 
							
								('2007-02-06', 'Vincent', 'U'), ('2007-02-06', 'George', 'Francis'),
							 | 
						||
| 
								 | 
							
								('2007-02-06', 'Hector', 'George'), ('2007-02-06', 'Walter', 'Vincent'),
							 | 
						||
| 
								 | 
							
								('2007-02-06', 'X', 'Walter'), ('2007-02-07', 'Mark', 'Lois'),
							 | 
						||
| 
								 | 
							
								('2007-02-07', 'Zack', 'Yuri'), ('2007-02-07', 'Jack', 'Isaac'),
							 | 
						||
| 
								 | 
							
								('2007-02-07', 'Mark', 'Sharon'), ('2007-02-07', 'Michelle', 'Michael'),
							 | 
						||
| 
								 | 
							
								('2007-02-07', 'Nathan', 'Derick'), ('2007-02-07', 'Xavier', 'Peter'),
							 | 
						||
| 
								 | 
							
								('2007-02-07', 'Harold', 'Fred'), ('2007-02-07', 'Lisa', 'Katherine'),
							 | 
						||
| 
								 | 
							
								('2007-02-07', 'Rina', 'Tom'), ('2007-02-07', 'Victor', 'Jerry'),
							 | 
						||
| 
								 | 
							
								('2007-02-07', 'Terry', 'Alexander'), ('2007-02-07', 'John', 'Justin'),
							 | 
						||
| 
								 | 
							
								('2007-02-07', 'Ernest', 'Greg');
							 | 
						||
| 
								 | 
							
								SELECT * FROM t1 WHERE first_name='Andy' OR last_name='Jake';
							 | 
						||
| 
								 | 
							
								id	time	first_name	last_name
							 | 
						||
| 
								 | 
							
								drop table t1;
							 | 
						||
| 
								 | 
							
								CREATE TABLE t1 (a DOUBLE NOT NULL, KEY(a)) ENGINE=InnoDB
							 | 
						||
| 
								 | 
							
								PARTITION BY KEY(a) PARTITIONS 10;
							 | 
						||
| 
								 | 
							
								INSERT INTO t1 VALUES(1),(2);
							 | 
						||
| 
								 | 
							
								SELECT COUNT(*) FROM t1;
							 | 
						||
| 
								 | 
							
								COUNT(*)
							 | 
						||
| 
								 | 
							
								2
							 | 
						||
| 
								 | 
							
								DROP TABLE t1;
							 | 
						||
| 
								 | 
							
								create table t1 (int_column int, char_column char(5))
							 | 
						||
| 
								 | 
							
								PARTITION BY RANGE (int_column) subpartition by key (char_column) subpartitions 2
							 | 
						||
| 
								 | 
							
								(PARTITION p1 VALUES LESS THAN (5) ENGINE = InnoDB);
							 | 
						||
| 
								 | 
							
								alter table t1
							 | 
						||
| 
								 | 
							
								ENGINE = MyISAM
							 | 
						||
| 
								 | 
							
								PARTITION BY RANGE (int_column)
							 | 
						||
| 
								 | 
							
								subpartition by key (char_column) subpartitions 2
							 | 
						||
| 
								 | 
							
								(PARTITION p1 VALUES LESS THAN (5));
							 | 
						||
| 
								 | 
							
								show create table t1;
							 | 
						||
| 
								 | 
							
								Table	Create Table
							 | 
						||
| 
								 | 
							
								t1	CREATE TABLE `t1` (
							 | 
						||
| 
								 | 
							
								  `int_column` int(11) DEFAULT NULL,
							 | 
						||
| 
								 | 
							
								  `char_column` char(5) DEFAULT NULL
							 | 
						||
| 
								 | 
							
								) ENGINE=MyISAM DEFAULT CHARSET=latin1
							 | 
						||
| 
								 | 
							
								/*!50100 PARTITION BY RANGE (int_column)
							 | 
						||
| 
								 | 
							
								SUBPARTITION BY KEY (char_column)
							 | 
						||
| 
								 | 
							
								SUBPARTITIONS 2
							 | 
						||
| 
								 | 
							
								(PARTITION p1 VALUES LESS THAN (5) ENGINE = MyISAM) */
							 | 
						||
| 
								 | 
							
								drop table t1;
							 | 
						||
| 
								 | 
							
								CREATE TABLE t1 (a INT) ENGINE=InnoDB
							 | 
						||
| 
								 | 
							
								PARTITION BY list(a) (PARTITION p1 VALUES IN (1));
							 | 
						||
| 
								 | 
							
								CREATE INDEX i1 ON t1 (a);
							 | 
						||
| 
								 | 
							
								DROP TABLE t1;
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Bug#47343: InnoDB fails to clean-up after lock wait timeout on
							 | 
						||
| 
								 | 
							
								#            REORGANIZE PARTITION
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								CREATE TABLE t1 (
							 | 
						||
| 
								 | 
							
								a INT,
							 | 
						||
| 
								 | 
							
								b DATE NOT NULL,
							 | 
						||
| 
								 | 
							
								PRIMARY KEY (a, b)
							 | 
						||
| 
								 | 
							
								) ENGINE=InnoDB
							 | 
						||
| 
								 | 
							
								PARTITION BY RANGE (a) (
							 | 
						||
| 
								 | 
							
								PARTITION pMAX VALUES LESS THAN MAXVALUE
							 | 
						||
| 
								 | 
							
								) ;
							 | 
						||
| 
								 | 
							
								INSERT INTO t1 VALUES (1, '2001-01-01'), (2, '2002-02-02'), (3, '2003-03-03');
							 | 
						||
| 
								 | 
							
								START TRANSACTION;
							 | 
						||
| 
								 | 
							
								SELECT * FROM t1 FOR UPDATE;
							 | 
						||
| 
								 | 
							
								a	b
							 | 
						||
| 
								 | 
							
								1	2001-01-01
							 | 
						||
| 
								 | 
							
								2	2002-02-02
							 | 
						||
| 
								 | 
							
								3	2003-03-03
							 | 
						||
| 
								 | 
							
								# Connection con1
							 | 
						||
| 
								 | 
							
								ALTER TABLE t1 REORGANIZE PARTITION pMAX INTO
							 | 
						||
| 
								 | 
							
								(PARTITION p3 VALUES LESS THAN (3),
							 | 
						||
| 
								 | 
							
								PARTITION pMAX VALUES LESS THAN MAXVALUE);
							 | 
						||
| 
								 | 
							
								ERROR HY000: Lock wait timeout exceeded; try restarting transaction
							 | 
						||
| 
								 | 
							
								SHOW WARNINGS;
							 | 
						||
| 
								 | 
							
								Level	Code	Message
							 | 
						||
| 
								 | 
							
								Error	1205	Lock wait timeout exceeded; try restarting transaction
							 | 
						||
| 
								 | 
							
								ALTER TABLE t1 REORGANIZE PARTITION pMAX INTO
							 | 
						||
| 
								 | 
							
								(PARTITION p3 VALUES LESS THAN (3),
							 | 
						||
| 
								 | 
							
								PARTITION pMAX VALUES LESS THAN MAXVALUE);
							 | 
						||
| 
								 | 
							
								ERROR HY000: Lock wait timeout exceeded; try restarting transaction
							 | 
						||
| 
								 | 
							
								SHOW WARNINGS;
							 | 
						||
| 
								 | 
							
								Level	Code	Message
							 | 
						||
| 
								 | 
							
								Error	1205	Lock wait timeout exceeded; try restarting transaction
							 | 
						||
| 
								 | 
							
								t1.frm
							 | 
						||
| 
								 | 
							
								t1.par
							 | 
						||
| 
								 | 
							
								# Connection default
							 | 
						||
| 
								 | 
							
								SELECT * FROM t1;
							 | 
						||
| 
								 | 
							
								a	b
							 | 
						||
| 
								 | 
							
								1	2001-01-01
							 | 
						||
| 
								 | 
							
								2	2002-02-02
							 | 
						||
| 
								 | 
							
								3	2003-03-03
							 | 
						||
| 
								 | 
							
								COMMIT;
							 | 
						||
| 
								 | 
							
								DROP TABLE t1;
							 | 
						||
| 
								 | 
							
								CREATE TABLE t1 (i1 int NOT NULL primary key, f1 int) ENGINE = InnoDB
							 | 
						||
| 
								 | 
							
								PARTITION BY HASH(i1) PARTITIONS 2;
							 | 
						||
| 
								 | 
							
								INSERT INTO t1 VALUES (1,1), (2,2);
							 | 
						||
| 
								 | 
							
								SELECT * FROM t1 WHERE i1 = ( SELECT i1 FROM t1 WHERE f1=0 LIMIT 1 );
							 | 
						||
| 
								 | 
							
								i1	f1
							 | 
						||
| 
								 | 
							
								DROP TABLE t1;
							 |