Commit 29cd6ff6 authored by unknown's avatar unknown

BUG#15961: SUBPARTITION defined in non-subpartitioned table no error

Made sure that no subpartition stuff in non-subpartitioned table


mysql-test/r/partition.result:
  New test case
mysql-test/r/partition_mgm_err.result:
  Fixed bug in test case
mysql-test/t/partition.test:
  New test case
mysql-test/t/partition_mgm_err.test:
  Fixed bug in test case
sql/sql_partition.cc:
  Made sure that no subpartition stuff in non-subpartitioned table
parent a264a79e
...@@ -428,4 +428,8 @@ partition by list (a) ...@@ -428,4 +428,8 @@ partition by list (a)
alter table t1 rebuild partition; alter table t1 rebuild partition;
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
drop table t1; drop table t1;
create table t1 (a int)
partition by hash (a)
(partition p0 (subpartition sp0));
ERROR HY000: It is only possible to mix RANGE/LIST partitioning with HASH/KEY partitioning for subpartitioning
End of 5.1 tests End of 5.1 tests
...@@ -141,7 +141,9 @@ DROP TABLE t1; ...@@ -141,7 +141,9 @@ DROP TABLE t1;
CREATE TABLE t1 (a INT) PARTITION BY HASH(a); CREATE TABLE t1 (a INT) PARTITION BY HASH(a);
ALTER TABLE t1 ADD PARTITION PARTITIONS 4; ALTER TABLE t1 ADD PARTITION PARTITIONS 4;
DROP TABLE t1; DROP TABLE t1;
CREATE TABLE t1 (s1 int, s2 int) PARTITION BY LIST (s1) ( CREATE TABLE t1 (s1 int, s2 int)
PARTITION BY LIST (s1)
SUBPARTITION BY KEY (s2) (
PARTITION p1 VALUES IN (0) (SUBPARTITION p1b), PARTITION p1 VALUES IN (0) (SUBPARTITION p1b),
PARTITION p2 VALUES IN (2) (SUBPARTITION p1b) PARTITION p2 VALUES IN (2) (SUBPARTITION p1b)
); );
......
...@@ -552,4 +552,13 @@ alter table t1 rebuild partition; ...@@ -552,4 +552,13 @@ alter table t1 rebuild partition;
drop table t1; drop table t1;
#
# BUG 15961 No error when subpartition defined without subpartition by clause
#
--error ER_SUBPARTITION_ERROR
create table t1 (a int)
partition by hash (a)
(partition p0 (subpartition sp0));
--echo End of 5.1 tests --echo End of 5.1 tests
...@@ -205,7 +205,9 @@ DROP TABLE t1; ...@@ -205,7 +205,9 @@ DROP TABLE t1;
#BUG 15408: Partitions: subpartition names are not unique #BUG 15408: Partitions: subpartition names are not unique
# #
--error ER_SAME_NAME_PARTITION --error ER_SAME_NAME_PARTITION
CREATE TABLE t1 (s1 int, s2 int) PARTITION BY LIST (s1) ( CREATE TABLE t1 (s1 int, s2 int)
PARTITION BY LIST (s1)
SUBPARTITION BY KEY (s2) (
PARTITION p1 VALUES IN (0) (SUBPARTITION p1b), PARTITION p1 VALUES IN (0) (SUBPARTITION p1b),
PARTITION p2 VALUES IN (2) (SUBPARTITION p1b) PARTITION p2 VALUES IN (2) (SUBPARTITION p1b)
); );
...@@ -692,6 +692,13 @@ bool check_partition_info(partition_info *part_info,handlerton **eng_type, ...@@ -692,6 +692,13 @@ bool check_partition_info(partition_info *part_info,handlerton **eng_type,
char *same_name; char *same_name;
DBUG_ENTER("check_partition_info"); DBUG_ENTER("check_partition_info");
if (unlikely(!part_info->is_sub_partitioned() &&
!(part_info->use_default_subpartitions &&
part_info->use_default_no_subpartitions)))
{
my_error(ER_SUBPARTITION_ERROR, MYF(0));
goto end;
}
if (unlikely(part_info->is_sub_partitioned() && if (unlikely(part_info->is_sub_partitioned() &&
(!(part_info->part_type == RANGE_PARTITION || (!(part_info->part_type == RANGE_PARTITION ||
part_info->part_type == LIST_PARTITION)))) part_info->part_type == LIST_PARTITION))))
......
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