BUG#33429: No check for maxvalue before adding partition

mysql-test/r/partition_range.result:
  Added new test cases
mysql-test/t/partition_range.test:
  Added new test cases
sql/sql_partition.cc:
  Added check that last partition hasn't got maxvalue defined when
  executing ADD PARTITION
This commit is contained in:
unknown 2008-01-28 16:11:43 +01:00
parent 4bacd53715
commit 21e654a828
3 changed files with 28 additions and 1 deletions

View file

@ -1,4 +1,15 @@
drop table if exists t1, t2;
create table t1 (a int)
partition by range (a)
( partition p0 values less than (maxvalue));
alter table t1 add partition (partition p1 values less than (100000));
ERROR HY000: MAXVALUE can only be used in last partition definition
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (a) (PARTITION p0 VALUES LESS THAN MAXVALUE ENGINE = MyISAM) */
drop table t1;
create table t1 (a int unsigned)
partition by range (a)
(partition pnull values less than (0),

View file

@ -9,6 +9,17 @@
drop table if exists t1, t2;
--enable_warnings
#
# BUG 33429: Succeeds in adding partition when maxvalue on last partition
#
create table t1 (a int)
partition by range (a)
( partition p0 values less than (maxvalue));
--error ER_PARTITION_MAXVALUE_ERROR
alter table t1 add partition (partition p1 values less than (100000));
show create table t1;
drop table t1;
#
# BUG 18198: Various tests for partition functions
#

View file

@ -4313,7 +4313,12 @@ uint prep_alter_part_table(THD *thd, TABLE *table, Alter_info *alter_info,
{
my_error(ER_NO_BINLOG_ERROR, MYF(0));
DBUG_RETURN(TRUE);
}
}
if (tab_part_info->defined_max_value)
{
my_error(ER_PARTITION_MAXVALUE_ERROR, MYF(0));
DBUG_RETURN(TRUE);
}
if (no_new_partitions == 0)
{
my_error(ER_ADD_PARTITION_NO_NEW_PARTITION, MYF(0));