From 14e1d69aeaa09075fe3ec609d5ccdcf899508d7d Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 3 Jun 2006 18:37:31 -0400 Subject: [PATCH] BUG#19067: Crash for default subpartitioning when altering the table mysql-test/r/information_schema_part.result: Bug fix sql/partition_element.h: Review fixes sql/sql_partition.cc: Review fixes --- mysql-test/r/information_schema_part.result | 2 +- sql/partition_element.h | 26 +++++++++------------ sql/sql_partition.cc | 5 ++-- 3 files changed, 15 insertions(+), 18 deletions(-) diff --git a/mysql-test/r/information_schema_part.result b/mysql-test/r/information_schema_part.result index e1bc6ef8700..ef3ee19656b 100644 --- a/mysql-test/r/information_schema_part.result +++ b/mysql-test/r/information_schema_part.result @@ -119,7 +119,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 LINEAR HASH (a) (PARTITION p0 VALUES LESS THAN (10) ) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY RANGE (a) SUBPARTITION BY LINEAR HASH (a) (PARTITION p0 VALUES LESS THAN (10) ENGINE = MyISAM) select SUBPARTITION_METHOD FROM information_schema.partitions WHERE table_schema="test" AND table_name="t1"; SUBPARTITION_METHOD diff --git a/sql/partition_element.h b/sql/partition_element.h index bd68d8b18ea..90d0bda87c1 100644 --- a/sql/partition_element.h +++ b/sql/partition_element.h @@ -64,24 +64,20 @@ public: engine_type(NULL),part_state(PART_NORMAL), nodegroup_id(UNDEF_NODEGROUP), has_null_value(FALSE) { - subpartitions.empty(); - list_val_list.empty(); } partition_element(partition_element *part_elem) - : partition_name(NULL), range_value(0), has_null_value(FALSE) + : part_max_rows(part_elem->part_max_rows), + part_min_rows(part_elem->part_min_rows), + partition_name(NULL), + tablespace_name(part_elem->tablespace_name), + range_value(0), 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), + 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() {} }; diff --git a/sql/sql_partition.cc b/sql/sql_partition.cc index 69104ea2ba8..a4f3be9ee41 100644 --- a/sql/sql_partition.cc +++ b/sql/sql_partition.cc @@ -1886,9 +1886,10 @@ char *generate_partition_syntax(partition_info *part_info, err+= add_partition_values(fptr, part_info, part_elem); if (!part_info->is_sub_partitioned() || part_info->use_default_subpartitions) + { err+= add_partition_options(fptr, part_elem); - if (part_info->is_sub_partitioned() && - (!part_info->use_default_subpartitions)) + } + else { err+= add_space(fptr); err+= add_begin_parenthesis(fptr);