Commit 5479f8de authored by unknown's avatar unknown
Browse files

Merge c-870ae253.1238-1-64736c10.cust.bredbandsbolaget.se:/home/pappa/clean-mysql-5.1-new

into  c-870ae253.1238-1-64736c10.cust.bredbandsbolaget.se:/home/pappa/bug19067


sql/partition_element.h:
  Auto merged
sql/partition_info.cc:
  Auto merged
sql/sql_partition.cc:
  Auto merged
sql/sql_show.cc:
  Auto merged
sql/sql_table.cc:
  Manual merge
parents 3065eeb3 10f57138
Loading
Loading
Loading
Loading
+18 −1
Original line number Diff line number Diff line
drop table if exists t1;
create table t1 (a int)
partition by range (a)
subpartition by key (a)
(partition p0 values less than (1));
alter table t1 add partition (partition p1 values less than (2));
show create table t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` int(11) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY RANGE (a) SUBPARTITION BY KEY (a) (PARTITION p0 VALUES LESS THAN (1) ENGINE = MyISAM, PARTITION p1 VALUES LESS THAN (2) ENGINE = MyISAM)
alter table t1 reorganize partition p1 into (partition p1 values less than (3));
show create table t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` int(11) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY RANGE (a) SUBPARTITION BY KEY (a) (PARTITION p0 VALUES LESS THAN (1) ENGINE = MyISAM, PARTITION p1 VALUES LESS THAN (3) ENGINE = MyISAM)
drop table t1;
CREATE TABLE t1 (
a int not null,
b int not null,
@@ -570,7 +587,7 @@ show create table t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` int(11) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY RANGE (a) SUBPARTITION BY HASH (a) (PARTITION p0 VALUES LESS THAN (100) )
) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY RANGE (a) SUBPARTITION BY HASH (a) (PARTITION p0 VALUES LESS THAN (100) ENGINE = MyISAM)
alter table t1 add partition (partition p1 values less than (200)
(subpartition subpart21));
show create table t1;
+2 −2
Original line number Diff line number Diff line
@@ -996,7 +996,7 @@ Table Create Table
t1	CREATE TABLE `t1` (
  `f1` int(11) DEFAULT NULL,
  `f2` char(20) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY RANGE (f1) SUBPARTITION BY HASH (f1) SUBPARTITIONS 2 (PARTITION part1 VALUES LESS THAN (100) , PARTITION part2 VALUES LESS THAN (2147483647) )
) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY RANGE (f1) SUBPARTITION BY HASH (f1) SUBPARTITIONS 2 (PARTITION part1 VALUES LESS THAN (100) ENGINE = MyISAM, PARTITION part2 VALUES LESS THAN (2147483647) ENGINE = MyISAM)
SELECT COUNT(*) = 0 AS my_value FROM t1;
my_value
1
@@ -1098,7 +1098,7 @@ Table Create Table
t1	CREATE TABLE `t1` (
  `f1` int(11) DEFAULT NULL,
  `f2` char(20) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY RANGE (f1) SUBPARTITION BY HASH (f1) SUBPARTITIONS 1 (PARTITION part1 VALUES LESS THAN (100) , PARTITION part2 VALUES LESS THAN (2147483647) )
) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY RANGE (f1) SUBPARTITION BY HASH (f1) SUBPARTITIONS 1 (PARTITION part1 VALUES LESS THAN (100) ENGINE = MyISAM, PARTITION part2 VALUES LESS THAN (2147483647) ENGINE = MyISAM)
SELECT COUNT(*) = 0 AS my_value FROM t1;
my_value
1
+14 −0
Original line number Diff line number Diff line
@@ -9,6 +9,19 @@
drop table if exists t1;
--enable_warnings

#
# BUG 19067 ALTER TABLE .. ADD PARTITION for subpartitioned table crashes
#
create table t1 (a int)
partition by range (a)
subpartition by key (a)
(partition p0 values less than (1));
alter table t1 add partition (partition p1 values less than (2));
show create table t1;
alter table t1 reorganize partition p1 into (partition p1 values less than (3));
show create table t1;
drop table t1;

#
# Partition by key no partition defined => OK
#
@@ -1009,4 +1022,5 @@ select auto_increment from information_schema.tables where table_name='t1';
select * from t1;
drop table t1;


--echo End of 5.1 tests
+16 −0
Original line number Diff line number Diff line
@@ -67,5 +67,21 @@ class partition_element :public Sql_alloc {
    subpartitions.empty();
    list_val_list.empty();
  }
  partition_element(partition_element *part_elem)
  : partition_name(NULL), range_value(0), has_null_value(FALSE)
  {
    subpartitions.empty();
    list_val_list.empty();

    part_max_rows= part_elem->part_max_rows;
    part_min_rows= part_elem->part_min_rows;
    tablespace_name= part_elem->tablespace_name;
    part_comment= part_elem->part_comment;
    data_file_name= part_elem->data_file_name;
    index_file_name= part_elem->index_file_name;
    engine_type= part_elem->engine_type;
    part_state= part_elem->part_state;
    nodegroup_id= part_elem->nodegroup_id;
  }
  ~partition_element() {}
};
+10 −10
Original line number Diff line number Diff line
@@ -266,7 +266,7 @@ bool partition_info::set_up_default_subpartitions(handler *file,
    j= 0;
    do
    {
      partition_element *subpart_elem= new partition_element();
      partition_element *subpart_elem= new partition_element(part_elem);
      if (likely(subpart_elem != 0 &&
          (!part_elem->subpartitions.push_back(subpart_elem))))
      {
@@ -719,6 +719,8 @@ bool partition_info::check_partition_info(handlerton **eng_type,
    do
    {
      partition_element *part_elem= part_it++;
      if (part_elem->engine_type == NULL)
        part_elem->engine_type= default_engine_type;
      if (!is_sub_partitioned())
      {
        if (check_table_name(part_elem->partition_name,
@@ -727,8 +729,6 @@ bool partition_info::check_partition_info(handlerton **eng_type,
          my_error(ER_WRONG_PARTITION_NAME, MYF(0));
          goto end;
        }
        if (part_elem->engine_type == NULL)
          part_elem->engine_type= default_engine_type;
        DBUG_PRINT("info", ("engine = %d",
                   ha_legacy_type(part_elem->engine_type)));
        engine_array[part_count++]= part_elem->engine_type;
@@ -739,18 +739,18 @@ bool partition_info::check_partition_info(handlerton **eng_type,
        List_iterator<partition_element> sub_it(part_elem->subpartitions);
        do
        {
          part_elem= sub_it++;
          if (check_table_name(part_elem->partition_name,
                               strlen(part_elem->partition_name)))
          partition_element *sub_elem= sub_it++;
          if (check_table_name(sub_elem->partition_name,
                               strlen(sub_elem->partition_name)))
          {
            my_error(ER_WRONG_PARTITION_NAME, MYF(0));
            goto end;
          }
          if (part_elem->engine_type == NULL)
            part_elem->engine_type= default_engine_type;
          if (sub_elem->engine_type == NULL)
            sub_elem->engine_type= default_engine_type;
          DBUG_PRINT("info", ("engine = %u",
                     ha_legacy_type(part_elem->engine_type)));
          engine_array[part_count++]= part_elem->engine_type;
                     ha_legacy_type(sub_elem->engine_type)));
          engine_array[part_count++]= sub_elem->engine_type;
        } while (++j < no_subparts);
      }
    } while (++i < no_parts);
Loading