A seguir está a instrução create table que está funcionando conforme o esperado. Mas se eu tiver uma tabela sem nenhuma partição e se eu tentar adicionar partições, parece que não consigo adicionar mais de 16 valores nela.
CREATE TABLE `mypart` (
`part_id` int(11) DEFAULT NULL
) ENGINE=MyISAM
PARTITION BY LIST (part_id)
(
PARTITION Jan10 VALUES IN (1,2,3,4,5) ENGINE = MyISAM,
PARTITION Mar10 VALUES IN (734201,734202,734203,734204,734205,734206,734207,734208,734209,734210,734211,734212,734213,734214,734215,734216, 734217) ENGINE = MyISAM
);
Todas as instruções a seguir devem ser executadas com sucesso e criar uma tabela conforme mostrado acima.
drop table mypart;
create table mypart (`part_id` int) ENGINE=MyISAM ;
alter table mypart partition by list(part_id) (PARTITION Jan10 VALUES IN (1, 2, 3, 4, 5));
mysql> alter table mypart add PARTITION (PARTITION Mar10 VALUES IN (734201, 734202, 734203, 734204, 734205, 734206, 734207, 734208, 734209, 734210, 734211, 734212, 734213, 734214, 734215,734216, 734217 ) ) ;
ERROR 1657 (HY000): Cannot have more than one value for this type of LIST partitioning
Neste ponto, a segunda instrução alter table não funciona e, portanto, não posso ter os 17 valores para a partição Mar10, conforme mostrado no primeiro exemplo. Se eu excluir o último valor 734217, a instrução alter table será bem-sucedida!
mysql> alter table mypart add PARTITION (PARTITION Mar10 VALUES IN (734201, 734202, 734203, 734204, 734205, 734206, 734207, 734208, 734209, 734210, 734211, 734212, 734213, 734214, 734215,734216));
Query OK, 0 rows affected (0.09 sec)
Records: 0 Duplicates: 0 Warnings: 0
Existe algum limite na instrução alter table que não se aplica à instrução create table?
Este é um bug que foi corrigido no MySQL 5.6.5.
Consulte http://bugs.mysql.com/bug.php?id=62505