@ -4,7 +4,7 @@ partition by key (a,a);
ERROR HY000: Duplicate partition field name a
create table t1 (a int, b int)
partition by list column_list(a,a)
( partition p values in (column_list (1,1)));
( partition p values in ((1,1)));
ERROR HY000: Duplicate partition field name a
create table t1 (a int signed)
partition by list (a)
@ -26,10 +26,8 @@ a
drop table t1;
create table t1 (a int signed)
partition by list column_list(a)
( partition p0 values in (column_list(1), column_list(3), column_list(5),
column_list(7), column_list(9), column_list(NULL)),
partition p1 values in (column_list(2), column_list(4), column_list(6),
column_list(8), column_list(0)));
( partition p0 values in (1, 3, 5, 7, 9, NULL),
partition p1 values in (2, 4, 6, 8, 0));
insert into t1 values (NULL),(0),(1),(2),(2),(4),(4),(4),(8),(8);
select * from t1 where a <= NULL;
a
@ -46,10 +44,9 @@ a
drop table t1;
create table t1 (a int, b int)
partition by list column_list(a,b)
( partition p0 values in (column_list(1, NULL), column_list(2, NULL),
column_list(NULL, NULL)),
partition p1 values in (column_list(1,1), column_list(2,2)),
partition p2 values in (column_list(3, NULL), column_list(NULL, 1)));
( partition p0 values in ((1, NULL), (2, NULL), (NULL, NULL)),
partition p1 values in ((1,1), (2,2)),
partition p2 values in ((3, NULL), (NULL, 1)));
insert into t1 values (3, NULL);
insert into t1 values (NULL, 1);
insert into t1 values (NULL, NULL);
@ -81,9 +78,9 @@ t1 CREATE TABLE `t1` (
`b` int(11) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
/*!50100 PARTITION BY LIST COLUMN_LIST(a,b)
(PARTITION p0 VALUES IN ( COLUMN_LIST (1,NULL), COLUMN_LIST (2,NULL), COLUMN_LIST (NULL,NULL)) ENGINE = MyISAM,
PARTITION p1 VALUES IN ( COLUMN_LIST (1,1), COLUMN_LIST (2,2)) ENGINE = MyISAM,
PARTITION p2 VALUES IN ( COLUMN_LIST (3,NULL), COLUMN_LIST (NULL,1)) ENGINE = MyISAM) */
(PARTITION p0 VALUES IN ((1,NULL),(2,NULL),(NULL,NULL)) ENGINE = MyISAM,
PARTITION p1 VALUES IN ((1,1),(2,2)) ENGINE = MyISAM,
PARTITION p2 VALUES IN ((3,NULL),(NULL,1)) ENGINE = MyISAM) */
drop table t1;
create table t1 (a int)
partition by list (a)
@ -104,8 +101,13 @@ ERROR HY000: Table has no partition for value 5
drop table t1;
create table t1 (a int)
partition by list column_list(a)
( partition p0 values in (column_list(2), column_list(1)),
partition p1 values in (column_list(4), column_list(NULL), column_list(3)));
( partition p0 values in (2, 1),
partition p1 values in ((4), (NULL), (3)));
ERROR 42000: Row expressions in VALUES IN only allowed for multi-field column partitioning near '))' at line 4
create table t1 (a int)
partition by list column_list(a)
( partition p0 values in (2, 1),
partition p1 values in (4, NULL, 3));
insert into t1 values (1);
insert into t1 values (2);
insert into t1 values (3);
@ -119,26 +121,26 @@ t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
/*!50100 PARTITION BY LIST COLUMN_LIST(a)
(PARTITION p0 VALUES IN ( COLUMN_LIST( 2) , COLUMN_LIST( 1) ) ENGINE = MyISAM,
PARTITION p1 VALUES IN ( COLUMN_LIST( 4) , COLUMN_LIST( NULL) , COLUMN_LIST( 3) ) ENGINE = MyISAM) */
(PARTITION p0 VALUES IN (2,1) ENGINE = MyISAM,
PARTITION p1 VALUES IN (4,NULL,3) ENGINE = MyISAM) */
drop table t1;
create table t1 (a int, b char(10), c varchar(25), d datetime)
partition by range column_list(a,b,c,d)
subpartition by hash (to_seconds(d))
subpartitions 4
( partition p0 values less than (column_list( 1, NULL, MAXVALUE, NULL) ),
partition p1 values less than (column_list( 1, 'a', MAXVALUE, TO_DAYS('1999-01-01') )),
partition p2 values less than (column_list( 1, 'a', MAXVALUE, MAXVALUE) ),
partition p3 values less than (column_list( 1, MAXVALUE, MAXVALUE, MAXVALUE) ));
( partition p0 values less than (1, NULL, MAXVALUE, NULL),
partition p1 values less than (1, 'a', MAXVALUE, TO_DAYS('1999-01-01')),
partition p2 values less than (1, 'a', MAXVALUE, MAXVALUE),
partition p3 values less than (1, MAXVALUE, MAXVALUE, MAXVALUE));
drop table t1;
create table t1 (a int, b char(10), c varchar(5), d int)
partition by range column_list(a,b,c)
subpartition by key (c,d)
subpartitions 3
( partition p0 values less than (column_list( 1,'abc','abc') ),
partition p1 values less than (column_list( 2,'abc','abc') ),
partition p2 values less than (column_list( 3,'abc','abc') ),
partition p3 values less than (column_list( 4,'abc','abc') ));
( partition p0 values less than (1,'abc','abc'),
partition p1 values less than (2,'abc','abc'),
partition p2 values less than (3,'abc','abc'),
partition p3 values less than (4,'abc','abc'));
insert into t1 values (1,'a','b',1),(2,'a','b',2),(3,'a','b',3);
insert into t1 values (1,'b','c',1),(2,'b','c',2),(3,'b','c',3);
insert into t1 values (1,'c','d',1),(2,'c','d',2),(3,'c','d',3);
@ -151,8 +153,8 @@ a b c d
drop table t1;
create table t1 (a int, b varchar(2), c int)
partition by range column_list (a, b, c)
(partition p0 values less than (column_list( 1, 'A', 1) ),
partition p1 values less than (column_list( 1, 'B', 1) ));
(partition p0 values less than (1, 'A', 1),
partition p1 values less than (1, 'B', 1));
insert into t1 values (1, 'A', 1);
explain partitions select * from t1 where a = 1 AND b <= 'A' and c = 1;
id select_type table partitions type possible_keys key key_len ref rows Extra
@ -163,7 +165,7 @@ a b c
drop table t1;
create table t1 (a char, b char, c char)
partition by list column_list(a)
( partition p0 values in (column_list( 'a') ));
( partition p0 values in ('a'));
insert into t1 (a) values ('a');
select * from t1 where a = 'a';
a b c
@ -171,32 +173,32 @@ a NULL NULL
drop table t1;
create table t1 (d timestamp)
partition by range column_list(d)
( partition p0 values less than (column_list( '2000-01-01') ),
partition p1 values less than (column_list( '2040-01-01') ));
( partition p0 values less than ('2000-01-01'),
partition p1 values less than ('2040-01-01'));
ERROR HY000: Partition column values of incorrect type
create table t1 (a int, b int)
partition by range column_list(a,b)
(partition p0 values less than (column_list( null, 10) ));
(partition p0 values less than (null, 10));
drop table t1;
create table t1 (d date)
partition by range column_list(d)
( partition p0 values less than (column_list( '2000-01-01') ),
partition p1 values less than (column_list( '2009-01-01') ));
( partition p0 values less than ('2000-01-01'),
partition p1 values less than ('2009-01-01'));
drop table t1;
create table t1 (d date)
partition by range column_list(d)
( partition p0 values less than (column_list( '1999-01-01') ),
partition p1 values less than (column_list( '2000-01-01') ));
( partition p0 values less than ('1999-01-01'),
partition p1 values less than ('2000-01-01'));
drop table t1;
create table t1 (d date)
partition by range column_list(d)
( partition p0 values less than (column_list( '2000-01-01') ),
partition p1 values less than (column_list( '3000-01-01') ));
( partition p0 values less than ('2000-01-01'),
partition p1 values less than ('3000-01-01'));
drop table t1;
create table t1 (a int, b int)
partition by range column_list(a,b)
(partition p2 values less than (column_list( 99,99) ),
partition p1 values less than (column_list( 99,999) ));
(partition p2 values less than (99,99),
partition p1 values less than (99,999));
insert into t1 values (99,998);
select * from t1 where b = 998;
a b
@ -210,23 +212,23 @@ int
drop table t1;
create table t1 (a int, b int)
partition by list column_list(a,b)
(partition p0 values in (column_list (maxvalue,maxvalue)));
(partition p0 values in ((maxvalue,maxvalue)));
ERROR 42000: Cannot use MAXVALUE as value in List partitioning near 'maxvalue,maxvalue)))' at line 3
create table t1 (a int, b int)
partition by range column_list(a,b)
(partition p0 values less than (column_list( maxvalue,maxvalue) ));
(partition p0 values less than (maxvalue,maxvalue));
drop table t1;
create table t1 (a int)
partition by list column_list(a)
(partition p0 values in (column_list( 0) ));
(partition p0 values in (0));
select partition_method from information_schema.partitions where table_name='t1';
partition_method
LIST COLUMN_LIST
drop table t1;
create table t1 (a char(6))
partition by range column_list(a)
(partition p0 values less than (column_list( 'H23456') ),
partition p1 values less than (column_list( 'M23456') ));
(partition p0 values less than ('H23456'),
partition p1 values less than ('M23456'));
insert into t1 values ('F23456');
select * from t1;
a
@ -234,13 +236,13 @@ F23456
drop table t1;
create table t1 (a char(6))
partition by range column_list(a)
(partition p0 values less than (column_list( H23456) ),
partition p1 values less than (column_list( M23456) ));
(partition p0 values less than (H23456),
partition p1 values less than (M23456));
ERROR 42S22: Unknown column 'H23456' in 'field list'
create table t1 (a char(6))
partition by range column_list(a)
(partition p0 values less than (column_list( 23456) ),
partition p1 values less than (column_list( 23456) ));
(partition p0 values less than (23456),
partition p1 values less than (23456));
ERROR HY000: VALUES LESS THAN value must be strictly increasing for each partition
create table t1 (a int, b int)
partition by range column_list(a,b)
@ -248,14 +250,14 @@ partition by range column_list(a,b)
ERROR 42000: Inconsistency in usage of column lists for partitioning near '))' at line 3
create table t1 (a int, b int)
partition by range column_list(a,b)
(partition p0 values less than (column_list( 1,1,1) );
(partition p0 values less than (1,1,1);
ERROR HY000: Inconsistency in usage of column lists for partitioning
create table t1 (a int, b int)
partition by range column_list(a,b)
(partition p0 values less than (column_list( 1, NULL) ),
partition p1 values less than (column_list( 2, maxvalue) ),
partition p2 values less than (column_list( 3, 3) ),
partition p3 values less than (column_list( 10, NULL) ));
(partition p0 values less than (1, NULL),
partition p1 values less than (2, maxvalue),
partition p2 values less than (3, 3),
partition p3 values less than (10, NULL));
insert into t1 values (10,0);
ERROR HY000: Table has no partition for value from column_list
insert into t1 values (0,1),(1,1),(2,1),(3,1),(3,4),(4,9),(9,1);
@ -270,9 +272,9 @@ a b
9 1
alter table t1
partition by range column_list(b,a)
(partition p0 values less than (column_list( 1,2) ),
partition p1 values less than (column_list( 3,3) ),
partition p2 values less than (column_list( 9,5) ));
(partition p0 values less than (1,2),
partition p1 values less than (3,3),
partition p2 values less than (9,5));
explain partitions select * from t1 where b < 2;
id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t1 p0,p1 ALL NULL NULL NULL NULL 7 Using where
@ -294,21 +296,21 @@ a b
3 1
9 1
alter table t1 reorganize partition p1 into
(partition p11 values less than (column_list( 2,2) ),
partition p12 values less than (column_list( 3,3) ));
(partition p11 values less than (2,2),
partition p12 values less than (3,3));
alter table t1 reorganize partition p0 into
(partition p01 values less than (column_list( 0,3) ),
partition p02 values less than (column_list( 1,1) ));
(partition p01 values less than (0,3),
partition p02 values less than (1,1));
ERROR HY000: Reorganize of range partitions cannot change total ranges except for last partition where it can extend the range
alter table t1 reorganize partition p2 into
(partition p2 values less than(column_list( 9,6,1) ));
(partition p2 values less than(9,6,1));
ERROR HY000: Inconsistency in usage of column lists for partitioning
alter table t1 reorganize partition p2 into
(partition p2 values less than (10));
ERROR HY000: Inconsistency in usage of column lists for partitioning
alter table t1 reorganize partition p2 into
(partition p21 values less than (column_list( 4,7) ),
partition p22 values less than (column_list( 9,5) ));
(partition p21 values less than (4,7),
partition p22 values less than (9,5));
explain partitions select * from t1 where b < 4;
id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t1 p0,p11,p12,p21 ALL NULL NULL NULL NULL 7 Using where
@ -324,13 +326,13 @@ create table t1 (a int, b int)
partition by list column_list(a,b)
subpartition by hash (b)
subpartitions 2
(partition p0 values in (column_list (0,0), column_list (1,1)),
partition p1 values in (column_list (1000,1000)));
(partition p0 values in ((0,0), (1,1)),
partition p1 values in ((1000,1000)));
insert into t1 values (1000,1000);
drop table t1;
create table t1 (a char, b char, c char)
partition by range column_list(a,b,c)
( partition p0 values less than (column_list( 'a','b','c') ));
( partition p0 values less than ('a','b','c'));
alter table t1 add partition
(partition p1 values less than (column_list( 'b','c','d') ));
(partition p1 values less than ('b','c','d'));
drop table t1;