Commit b05f270c authored by reggie@linux.site's avatar reggie@linux.site

Merge rburnett@bk-internal.mysql.com:/home/bk/mysql-5.1-new

into  linux.site:/home/reggie/work/mysql-5.1-bug17631
parents 9b41bb7a 795659e7
...@@ -642,7 +642,7 @@ drop table t1; ...@@ -642,7 +642,7 @@ drop table t1;
create table t1 (a int) engine=innodb partition by hash(a) ; create table t1 (a int) engine=innodb partition by hash(a) ;
show table status like 't1'; show table status like 't1';
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
t1 PARTITION 10 Compact 2 8192 16384 0 0 0 NULL NULL NULL NULL latin1_swedish_ci NULL t1 InnoDB 10 Compact 2 8192 16384 0 0 0 NULL NULL NULL NULL latin1_swedish_ci NULL partitioned
drop table t1; drop table t1;
create table t2 (s1 int not null auto_increment, primary key (s1)) partition by list (s1) (partition p1 values in (1),partition p2 values in (2),partition p3 values in (3),partition p4 values in (4)); create table t2 (s1 int not null auto_increment, primary key (s1)) partition by list (s1) (partition p1 values in (1),partition p2 values in (2),partition p3 values in (3),partition p4 values in (4));
insert into t2 values (null),(null),(null); insert into t2 values (null),(null),(null);
...@@ -819,4 +819,14 @@ explain partitions select * from t1 where a is null or a < 0 or a > 1; ...@@ -819,4 +819,14 @@ explain partitions select * from t1 where a is null or a < 0 or a > 1;
id select_type table partitions type possible_keys key key_len ref rows Extra id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t1 pn,p2 ALL NULL NULL NULL NULL 2 Using where 1 SIMPLE t1 pn,p2 ALL NULL NULL NULL NULL 2 Using where
drop table t1; drop table t1;
CREATE TABLE t1 (id INT NOT NULL PRIMARY KEY, name VARCHAR(20))
ENGINE=MyISAM DEFAULT CHARSET=latin1
PARTITION BY RANGE(id)
(PARTITION p0 VALUES LESS THAN (10) ENGINE = MyISAM,
PARTITION p1 VALUES LESS THAN (20) ENGINE = MyISAM,
PARTITION p2 VALUES LESS THAN (30) ENGINE = MyISAM);
SHOW TABLE STATUS;
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
t1 MyISAM 10 Dynamic 0 0 0 0 0 0 NULL NULL NULL NULL latin1_swedish_ci NULL partitioned
DROP TABLE t1;
End of 5.1 tests End of 5.1 tests
...@@ -924,4 +924,17 @@ select * from t1 where a is null or a < 0 or a > 1; ...@@ -924,4 +924,17 @@ select * from t1 where a is null or a < 0 or a > 1;
explain partitions select * from t1 where a is null or a < 0 or a > 1; explain partitions select * from t1 where a is null or a < 0 or a > 1;
drop table t1; drop table t1;
#
#Bug# 17631 SHOW TABLE STATUS reports wrong engine
#
CREATE TABLE t1 (id INT NOT NULL PRIMARY KEY, name VARCHAR(20))
ENGINE=MyISAM DEFAULT CHARSET=latin1
PARTITION BY RANGE(id)
(PARTITION p0 VALUES LESS THAN (10) ENGINE = MyISAM,
PARTITION p1 VALUES LESS THAN (20) ENGINE = MyISAM,
PARTITION p2 VALUES LESS THAN (30) ENGINE = MyISAM);
--replace_column 6 0 7 0 8 0 9 0 12 NULL 13 NULL 14 NULL
SHOW TABLE STATUS;
DROP TABLE t1;
--echo End of 5.1 tests --echo End of 5.1 tests
...@@ -258,6 +258,13 @@ void ha_partition::init_handler_variables() ...@@ -258,6 +258,13 @@ void ha_partition::init_handler_variables()
} }
const char *ha_partition::table_type() const
{
// we can do this since we only support a single engine type
return m_file[0]->table_type();
}
/* /*
Destructor method Destructor method
......
...@@ -524,8 +524,7 @@ class ha_partition :public handler ...@@ -524,8 +524,7 @@ class ha_partition :public handler
virtual const char *index_type(uint inx); virtual const char *index_type(uint inx);
/* The name of the table type that will be used for display purposes */ /* The name of the table type that will be used for display purposes */
virtual const char *table_type() const virtual const char *table_type() const;
{ return "PARTITION"; }
/* The name of the row type used for the underlying tables. */ /* The name of the row type used for the underlying tables. */
virtual enum row_type get_row_type() const; virtual enum row_type get_row_type() const;
......
This diff is collapsed.
...@@ -245,7 +245,13 @@ class partition_info : public Sql_alloc ...@@ -245,7 +245,13 @@ class partition_info : public Sql_alloc
bool set_up_defaults_for_partitioning(handler *file, ulonglong max_rows, bool set_up_defaults_for_partitioning(handler *file, ulonglong max_rows,
uint start_no); uint start_no);
char *has_unique_names(); char *has_unique_names();
static bool check_engine_mix(handlerton **engine_array, uint no_parts);
bool check_range_constants();
bool check_list_constants();
bool check_partition_info(handlerton **eng_type,
handler *file, ulonglong max_rows);
private: private:
static int list_part_cmp(const void* a, const void* b);
bool set_up_default_partitions(handler *file, ulonglong max_rows, bool set_up_default_partitions(handler *file, ulonglong max_rows,
uint start_no); uint start_no);
bool set_up_default_subpartitions(handler *file, ulonglong max_rows); bool set_up_default_subpartitions(handler *file, ulonglong max_rows);
......
This diff is collapsed.
...@@ -2721,6 +2721,12 @@ static int get_schema_tables_record(THD *thd, struct st_table_list *tables, ...@@ -2721,6 +2721,12 @@ static int get_schema_tables_record(THD *thd, struct st_table_list *tables,
ptr=strxmov(ptr, " row_format=", ptr=strxmov(ptr, " row_format=",
ha_row_type[(uint) share->row_type], ha_row_type[(uint) share->row_type],
NullS); NullS);
#ifdef WITH_PARTITION_STORAGE_ENGINE
if (share->db_type == &partition_hton &&
share->partition_info != NULL &&
((partition_info*)share->partition_info)->no_parts > 0)
ptr= strmov(ptr, " partitioned");
#endif
table->field[19]->store(option_buff+1, table->field[19]->store(option_buff+1,
(ptr == option_buff ? 0 : (ptr == option_buff ? 0 :
(uint) (ptr-option_buff)-1), cs); (uint) (ptr-option_buff)-1), cs);
......
...@@ -2141,7 +2141,7 @@ bool mysql_create_table_internal(THD *thd, ...@@ -2141,7 +2141,7 @@ bool mysql_create_table_internal(THD *thd,
} }
DBUG_PRINT("info", ("db_type = %d", DBUG_PRINT("info", ("db_type = %d",
ha_legacy_type(part_info->default_engine_type))); ha_legacy_type(part_info->default_engine_type)));
if (check_partition_info(part_info, &engine_type, file, if (part_info->check_partition_info( &engine_type, file,
create_info->max_rows)) create_info->max_rows))
goto err; goto err;
part_info->default_engine_type= engine_type; part_info->default_engine_type= engine_type;
......
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