Commit 29cd6ff6 authored by unknown's avatar unknown
Browse files

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
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -428,4 +428,8 @@ partition by list (a)
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
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
+3 −1
Original line number Diff line number Diff line
@@ -141,7 +141,9 @@ DROP TABLE t1;
CREATE TABLE t1 (a INT) PARTITION BY HASH(a);
ALTER TABLE t1 ADD PARTITION PARTITIONS 4;
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 p2 VALUES IN (2) (SUBPARTITION p1b)
);
+9 −0
Original line number Diff line number Diff line
@@ -552,4 +552,13 @@ alter table t1 rebuild partition;

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
+3 −1
Original line number Diff line number Diff line
@@ -205,7 +205,9 @@ DROP TABLE t1;
#BUG 15408: Partitions: subpartition names are not unique
#
--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 p2 VALUES IN (2) (SUBPARTITION p1b)
);
+7 −0
Original line number Diff line number Diff line
@@ -692,6 +692,13 @@ bool check_partition_info(partition_info *part_info,handlerton **eng_type,
  char *same_name;
  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() &&
              (!(part_info->part_type == RANGE_PARTITION ||
                 part_info->part_type == LIST_PARTITION))))