Commit 21e654a8 authored by unknown's avatar unknown

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
parent 4bacd537
drop table if exists t1, t2; 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) create table t1 (a int unsigned)
partition by range (a) partition by range (a)
(partition pnull values less than (0), (partition pnull values less than (0),
......
...@@ -9,6 +9,17 @@ ...@@ -9,6 +9,17 @@
drop table if exists t1, t2; drop table if exists t1, t2;
--enable_warnings --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 # BUG 18198: Various tests for partition functions
# #
......
...@@ -4313,7 +4313,12 @@ uint prep_alter_part_table(THD *thd, TABLE *table, Alter_info *alter_info, ...@@ -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)); my_error(ER_NO_BINLOG_ERROR, MYF(0));
DBUG_RETURN(TRUE); 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) if (no_new_partitions == 0)
{ {
my_error(ER_ADD_PARTITION_NO_NEW_PARTITION, MYF(0)); my_error(ER_ADD_PARTITION_NO_NEW_PARTITION, MYF(0));
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment